iPhone でバックグラウンド位置情報アプリケーションを作ってみた。

16,724 views

Published on

iPhone の CoreLocation フレームワークを使って、バックグラウンドで動作するジオログアプリケーションを作ってみました。

Published in: Technology, Business
0 Comments
30 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
16,724
On SlideShare
0
From Embeds
0
Number of Embeds
1,360
Actions
Shares
0
Downloads
66
Comments
0
Likes
30
Embeds 0
No embeds

No notes for slide

iPhone でバックグラウンド位置情報アプリケーションを作ってみた。

  1. 1. iPhone でバックグラウンド位置情報 アプリケーションを作ってみた。 by Haruyuki Seki(@hal_sk) 2010年10月23日土曜日
  2. 2. •関 治之 •シリウスラボ 所長 •Georepublic Japan CEO •ジオメディアサミット 主催 hal_sk です。 2010年10月23日土曜日
  3. 3. 位置情報とモバイルが好きです。 2010年10月23日土曜日
  4. 4. 突然ですが 2010年10月23日土曜日
  5. 5. OpenStreetMapって知ってます? 2010年10月23日土曜日
  6. 6. 自由な地理情報データを作成することを目的と した世界的なプロジェクト OpenStreetMapって知ってます? 2010年10月23日土曜日
  7. 7. ①Logging 2010年10月23日土曜日
  8. 8. ②Upload 2010年10月23日土曜日
  9. 9. ③Edit 2010年10月23日土曜日
  10. 10. ライセンスフリーの地図ができる 2010年10月23日土曜日
  11. 11. iPhone でもログが取れます •OSM Track 2010年10月23日土曜日
  12. 12. でも、OSM Track では •Sleep 中やバックグ ラウンド起動中にロ グを取らない! 2010年10月23日土曜日
  13. 13. iOS4.0からはバックグラウ ンドでアプリを動かせる 2010年10月23日土曜日
  14. 14. バックグラウンドで使える7 つの機能 • Fast App Switching • Background Audio • Background Location • Background VoIP • Task Compression • Push Notification • Local Notification 2010年10月23日土曜日
  15. 15. というわけで 2010年10月23日土曜日
  16. 16. 自分でロガーを作ってみよう 2010年10月23日土曜日
  17. 17. 検証したいこと •どれくらいの精度なの? •電池の消費は? 2010年10月23日土曜日
  18. 18. CLLocationManager のメソッド • startUpdateLocation GPSとWi-Fi測位 • startMonitoringSignificantLocationChanges 基地局が変わったらイベント発生 • startMonitoringForRegion:desiredAccuracy 指定したエリアに入ったらイベント発生 2010年10月23日土曜日
  19. 19. 今回はこの2つで実験 CLLocationManager のメソッド • startUpdateLocation GPSとWi-Fi測位 • startMonitoringSignificantLocationChanges 基地局が変わったらイベント発生 • startMonitoringForRegion:desiredAccuracy 指定したエリアに入ったらイベント発生 2010年10月23日土曜日
  20. 20. 使い方 LocationCheckViewController.h @interface LocationCheckViewController <CLLocationManagerDelegate>{ ! CLLocationManager *locMan; } LocationCheckViewController.m @implementation LocationCheckViewController - (void)loggingStart{ ! locMan = [[CLLocationManager alloc] init]; // ① ! locMan.delegate = self; // ② ! [locMan startUpdatingLocation];//③ ! [locMan startMonitoringSignificantLocationChanges];//③’ } CLLocationManager のインスタンスを作り(①)、 CLLocationManagerDelegate を実装した delegate を設定し(②)、 startUpdatingLocation(③) か startMonitoringSignificantLocationChanges(③’)を呼ぶ 2010年10月23日土曜日
  21. 21. 緯度経度の取り方 - (void)locationManager:(CLLocationManager *)manager ! didUpdateToLocation:(CLLocation *)newLocation ! ! fromLocation:(CLLocation *)oldLocation{ ! NSString *log = [self makeLogText:newLocation]; ! [self logText:log]; } - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { ! [self logTextWithTime:[NSString stringWithFormat:@"LocationManager Failed %@", [error localizedDescription]]]; } delegateで設定されたクラスの -(void)locationManager:didUpdateToLocation:fromLocation: か -(void)locationManager:didFailWithError: が呼ばれる。 2010年10月23日土曜日
  22. 22. バックグラウンド対応 •info.plist ファイルに、 Key:Required background modes Value:App registers for location updates を追加 2010年10月23日土曜日
  23. 23. 完成 http://github.com/halsk/iPhone_GPS_Logger 2010年10月23日土曜日
  24. 24. 使ってみよう! 精度をどうやって測ろうか? 2010年10月23日土曜日
  25. 25. 山手線コンピューティング! 2010年10月23日土曜日
  26. 26. 3周しました! 2010年10月23日土曜日
  27. 27. なぜ3周したか •1周目:フォアグラウンド測位 •2周目:バックグラウンド測位 •3周目:SignificantLocation 2010年10月23日土曜日
  28. 28. ログを見てみましょう! 2010年10月23日土曜日
  29. 29. 1周目:Foreground 低Accuracy 込み 低Accuracy 抜き 2010年10月23日土曜日
  30. 30. 1周目:Foreground 低Accuracy 込み 低Accuracy 抜き 恵比寿∼大崎間でうまく取れていない 線路から数百mずれるときはあるが、概ね良好 1秒に1回くらいレスポンスあり ログ数:3106回 ※低Accurasy=誤差500m以上 2010年10月23日土曜日
  31. 31. 2周目:Background 低Accuracy 込み 低Accuracy 抜き 2010年10月23日土曜日
  32. 32. 2周目:Background 低Accuracy 込み 低Accuracy 抜き バックグラウンドに回ると 精度が結構落ちる 測位回数が減る(1分待つこともあり) ログ数:361回 2010年10月23日土曜日
  33. 33. 3週目:Significant 2010年10月23日土曜日
  34. 34. 3週目:Significant 精度は、誤差1km 場所自体は意外とずれてない 測位回数はわずか17回 2010年10月23日土曜日
  35. 35. 電池消費 •1周目:15∼20%の間で消費 •2周目:5∼10%の間で消費 •3周目:1∼5%の間で消費 ※[UIDevice batteryLevel] は、5%刻みでしか 取れないので正確に測れなかった 2010年10月23日土曜日
  36. 36. 結論 •地図書く精度が必要なら、 Foreground の方がいい •写真とったりメールみたりTwitterした くなった時にも取り続けることができ るので、無いよりましかな 2010年10月23日土曜日
  37. 37. ていうか •My Tracks 使えばいい よね •バックグラウンド対応 •写真撮影やWaypointな どのメモ機能あり 2010年10月23日土曜日
  38. 38. 車輪の再発明 2010年10月23日土曜日
  39. 39. 時間があればやるかも •地図をOSMへ変更 •メモ書き、写真撮影機能 •OSMへのアップロード機能 •Waypointの追加・編集機能 •Foursquare連携とか •iPad 対応 2010年10月23日土曜日
  40. 40. ありがとうございました。 http://www.slideshare.net/hal_sk/ by Haruyuki Seki(@hal_sk) 2010年10月23日土曜日

×