motion-distance 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 419bcf40f8964936b49b0ab8b6720cd9d46be693
4
+ data.tar.gz: a022d6885be32f527083a140954af237469fa689
5
+ SHA512:
6
+ metadata.gz: b2b41702229ae08411b5a587284c0a18298f1de06388092b55b4c517aed79ccb4ce787ffb3a71d648417069e62ca82e50b20fa27febbac0c80e7a0e91a4b36bc
7
+ data.tar.gz: 00bdd42ca66e9f1bc7b7ca7fb4c6154ac6afa41cf413cd71b57ad37e1f791cbb680915d3e1574d4d5ac63e40367a6273abe1bed99677e7adf7c4fd11246c6892
data/README.md ADDED
@@ -0,0 +1,65 @@
1
+ # motion-distance
2
+
3
+ Easy distance tracking for RubyMotion projects.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem "motion-distance"
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ ## Usage
16
+
17
+ Create a new instance of `Motion::Distance`.
18
+
19
+ You must also specify an activity type. This will help the OS know when to pause and resume updates that will help save battery.
20
+
21
+ ```ruby
22
+ # CLActivityTypeOther,
23
+ # CLActivityTypeAutomotiveNavigation,
24
+ # CLActivityTypeFitness,
25
+ # CLActivityTypeOtherNavigation,
26
+
27
+ @distance = Motion::Distance.new
28
+ @distance.activity_type = CLActivityTypeFitness
29
+ ```
30
+
31
+ You may also set a level of accuracy.
32
+
33
+ ```ruby
34
+ KCLLocationAccuracyBestForNavigation
35
+ KCLLocationAccuracyBest
36
+ KCLLocationAccuracyNearestTenMeters
37
+ KCLLocationAccuracyHundredMeters
38
+ KCLLocationAccuracyKilometer
39
+ KCLLocationAccuracyThreeKilometers
40
+ ```
41
+
42
+ Now you can call `#get` to begin tracking any distance travelled. Each time the phone registers a location change
43
+ you'll recieve a hash that contains the total distance travelled and current location.
44
+
45
+ Distance is always returned in meters.
46
+
47
+ ```ruby
48
+ @distance.get do |location|
49
+ puts location[:total]
50
+ end
51
+ ```
52
+
53
+ You can stop tracking location by calling:
54
+
55
+ ```ruby
56
+ @distance.stop_updating
57
+ ```
58
+
59
+ ## Contributing
60
+
61
+ 1. Fork it
62
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
63
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
64
+ 4. Push to the branch (`git push origin my-new-feature`)
65
+ 5. Create new Pull Request
@@ -0,0 +1,9 @@
1
+ unless defined?(Motion::Project::Config)
2
+ raise "This file must be required within a RubyMotion project Rakefile."
3
+ end
4
+
5
+ lib_dir_path = File.dirname(File.expand_path(__FILE__))
6
+ Motion::Project::App.setup do |app|
7
+ app.files.unshift(Dir.glob(File.join(lib_dir_path, "motion/**/*.rb")))
8
+ app.frameworks += ["CoreLocation"]
9
+ end
@@ -0,0 +1,49 @@
1
+ module Motion
2
+ class Distance
3
+ attr_accessor :activity_type, :accuracy
4
+
5
+ def get(&block)
6
+ @callback = block
7
+ @total = 0
8
+ location_manager.startUpdatingLocation
9
+ end
10
+
11
+ def stop_updating
12
+ location_manager.stopUpdatingLocation
13
+
14
+ @total_distance = 0
15
+ @last_location = nil
16
+ @callback = nil
17
+ end
18
+
19
+ def locationManager(locationManager, didUpdateLocations: locations)
20
+ locations.each do |location|
21
+ if location.horizontalAccuracy <= 5.0
22
+ @total += location.distanceFromLocation(@last_location)
23
+ @last_location = location
24
+ response = { total: @total, location: location }
25
+
26
+ @callback.call response
27
+ end
28
+ end
29
+ end
30
+
31
+ def locationManager(locationManager, didFailWithError: error)
32
+ response = { error: error }
33
+
34
+ @callback.call response
35
+ stop_updating
36
+ end
37
+
38
+ def location_manager
39
+ @location_manager ||=
40
+ begin
41
+ manager = CLLocationManager.alloc.init
42
+ manager.desiredAccuracy = self.accuracy ||= KCLLocationAccuracyBest
43
+ manager.activityType = self.activity_type || CLActivityTypeOther
44
+ manager.delegate = self
45
+ manager
46
+ end
47
+ end
48
+ end
49
+ end
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: motion-distance
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Will Raxworthy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Easy distance tracking for iOS RubyMotion projects.
28
+ email:
29
+ - git@willrax.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - README.md
35
+ - lib/motion/distance.rb
36
+ - lib/motion-distance.rb
37
+ homepage: ''
38
+ licenses:
39
+ - MIT
40
+ metadata: {}
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ requirements: []
56
+ rubyforge_project:
57
+ rubygems_version: 2.0.3
58
+ signing_key:
59
+ specification_version: 4
60
+ summary: Easy distance tracking for iOS RubyMotion projects.
61
+ test_files: []