ロケーションベースのAndroidアプリのアーキテクチャ/ワークフローのベストプラクティスは何ですか?
私の現在のコードは、いくつかのアクティビティと1つのバッキングサービスと複数のAsyncTaskを使用しています。
私のアプリケーションが起動するとすぐにサービスを開始します。私はサービスですべてのHTTP呼び出しと解析を行います。また、私はAsyncTaskのサブクラスを作成してユーザーの場所を取得しました。ユーザーの場所を更新する必要があるたびにAsyncTaskを実行します。 AyncTaskはLocationManager.requestLocationUpdates()を呼び出し、できるだけ早く場所を取得するように求めます。私の戦略は次のとおりです。
1.まず、GPSとネットワークの両方について、getLastKnownLocationを取得し、http://developer.android.com/guide/topics/location/obtaining-user-location.html#BestEstimateの方法で比較します。
2. 3つのGPSロケーションと5つのネットワークロケーションが取得された場合、またはGPSとネットワークの一方または両方が1分で応答しなかった場合は、タスクを停止します。
3.私は最良の見積りを返します。
Locating AsyncTaskはサービス内で実行され、AlarmServiceを5分間設定してサービスをインテントに送信して、ユーザーの場所を更新する必要があるかどうかを確認します。 2つのAsyncTask間の最小間隔は10分です。ユーザーは、単にボタンを押すだけで、場所の更新を手動で要求できます。
上記は私のアプリに位置情報サービスを実装する方法です。
私の練習が適切かどうかを知る必要があります。もし何が間違っていない?はいの場合、改善できるものはありますか?ロケーションベースのAndroidアプリのアーキテクチャのベストプラクティスは何ですか?
答えて
私はかなりそれを得たと思う。私はできるだけ早く "出入り"を望む非常に似通ったソリューションを持っています。
私のアルゴリズムに「精度」のチェックを実装しました。私は最高の可能な場所を取得するために開始から1分サービスを与える、または私は25メートル以上の精度の修正を得る場合でも早く終了します。
また、私は場所自体にAsyncTaskを使用しません - サービスはスレッドをブロックしませんし、LocationManagerからコールバックを取得して処理するので、AsyncTaskを実行する理由がわかりません。
私は場所を取得して終了しようとしています - 私は非同期タスクをサーバーにHTTPポストを処理する呼び出します。
私が5/15/30/1hrと1/2dayのユーザオプションを与える限り。私はこれに不正確なアラームを使用します - おそらくバッテリーで良いです。
5/15/30/1時間と1/2日は合理的なオプションです。ご利用いただきありがとうございます。 AsyncTaskは主にGeoCoderを使用して場所のバックグラウンド処理を行うために使用します。 GPS座標の文字列表現を取得します。 – CarlLee
by String表現私は、アドレス – CarlLee
を意味しています。ウェブサービスが関係しているので、それを修正します。非同期に移動することをお勧めします。私が何をすれば、私はすべてのポジションをSQLテーブルに記録し、それが処理されてアップロードされるときに削除します。これにより、GPSを有効にしてもネットワークがない場合のシナリオを処理できます。 – katit
これは答えではありませんが、ここにいくつかの追加点があります。 Reto Meierさんは、Google IOのPro Androidのヒントで、電池が少ない場合はwi-fiを使用しないことを提案しました。
これは、場所まで拡張することもできます。ユーザーが自分のバッテリーが弱すぎることを知らせてください。& GPS &ネットワークプロバイダを使用していない可能性があります。代わりに、正確な最新の場所が使用されます。
あなたはそれを言及していないので、最悪の場合のシナリオでは、ロケーションプロバイダーが有効になっているかどうかを確認できません。同じものを確認し、すべてのプロバイダが無効になっている場合は、ロケーションサービスを有効にするようにユーザーに要求するアラートを表示する必要があります。
非常に便利なヒントです。私はユーザーエクスペリエンスを向上させるのに非常に役立ちます。ありがとうございました。 – CarlLee
- 1. Android - バックグラウンドタスクのベストプラクティスは何ですか?
- 2. Hibernateアーキテクチャのベストプラクティス
- 3. ロケーションベースのAndroid開発
- 4. Androidロケーションベース
- 5. Androidのアーキテクチャのコンポーネントのベストプラクティスの段落の取り扱いライフサイクルのページでAndroidのアーキテクチャのコンポーネントのドキュメントで
- 6. ロケーションベースのARとARCoreでアプリを作る
- 7. AndroidアプリのFacebookログイン:ベストプラクティス
- 8. Androidでのアクティビティ間の永続セッションのベストプラクティスは何ですか?
- 9. ロケーションベースのAugmented Reality Android SDK
- 10. Androidアプリの「フィーチャーグラフィック」とは何ですか?
- 11. Androidアプリの開発は何ですか?
- 12. AndroidアーキテクチャのコンポーネントliveDataとroom - 最小要件は何ですか?
- 13. Mysqlアーキテクチャのベストプラクティス:ユーザ属性
- 14. アーキテクチャ - FacebookのC#SDKとベストプラクティス
- 15. アプリのモジュールのAndroidスタジオのベストプラクティス
- 16. Androidツールの場所に関するベストプラクティスは何ですか?
- 17. サーバサービスとGUIのアーキテクチャは何ですか?
- 18. CPUアーキテクチャの違いは何ですか?
- 19. 実際のAndroid ADK開発 - ベストプラクティスは何ですか?
- 20. 1つのアプリで複数のモカテストを設定するベストプラクティスは何ですか?
- 21. Djangoのサブドメインベースアカウントのベストプラクティスは何ですか?
- 22. ロケーションベースのモバイルアプリのための高精度なベストソリューションは何ですか
- 23. iOSアプリのログインのベストプラクティスですか?
- 24. AspNetDevelopmentServerHost属性のベストプラクティスは何ですか?
- 25. データベース設計のベストプラクティスは何ですか?
- 26. ドッカーロギングのベストプラクティスは何ですか?
- 27. API認証のベストプラクティスは何ですか?
- 28. ハイドープベンチマークのベストプラクティスは何ですか?
- 29. SQLite + RxJavaのベストプラクティスは何ですか?
- 30. Djangoモデルフィールドのベストプラクティスとは何ですか?
これは、この点について多くの便利なコードを含む素晴らしい記事です。 http://android-developers.blogspot。com/2011/06/deep-dive-into-location.html –