3

私は解決策を試しましたが、位置追跡ロジックを実装する方法はたくさんあることがわかりました。

  1. Intent + BroadcastReceiver + LocationListener
  2. Intent + IntentService + AlarmManager
  3. LocationListener
  4. 他のテクニックまたは上記のさまざまな組み合わせ...

私は同じことを達成するためのベストプラクティス(最も電力効率の良い方法)を見つけようとしています...

2つのメソッドを持つライブラリクラスMyLocationClass.javaがあります。1。startTracking()-T時間後に、ユーザーがX距離を移動した場合にのみユーザーの場所の送信を開始します。2。stopTracking()-場所の更新の送信を停止します。

簡単な答えは、より良いユーザーエクスペリエンスを提供する組み込みのTime Passed / Distance Moved機能があるため、LocationListenerのようですが、...

GPSを常時オンにしたくないですか?実際、TとXが交差する場合にのみオンにする必要があります。Service / IntentServiceおよび/またはアラームマネージャータイマーを使用する方が良い解決策になりますか?LocationListenersを備えたBroadcaastReceiversがより良いソリューションであることが証明できますか?

提案してください。

4

2 に答える 2

2

サービスに実装されているロケーションリスナーを使用できると思います。サービスの開始時にGPSのリスニングを開始し、サービスの停止時にGPSリスナーを削除します。GPSを聞きたいときにこのサービスを開始します。

また、「requestLocationUpdates」メソッドもご覧ください。この関数のminTimeフィールドとminDistanceフィールドは、次のように説明されています。

minTime通知の最小時間間隔(ミリ秒単位)。このフィールドは、電力を節約するためのヒントとしてのみ使用され、位置情報の更新間の実際の時間は、この値よりも大きい場合と小さい場合があります。

minDistance通知の最小距離間隔(メートル単位)

于 2012-04-16T11:23:26.170 に答える
0
 > Most power efficient location tracking implementation?

最も電力効率の良い(そして不正確な)解決策は、gps-receiver(少なくとも私のsamsung-smartphoneでは)が電力消費を大幅に増加させるため、gpsをまったく使用しないことです。

あなたのAndroidアプリがその携帯電話プロバイダーにログインしている携帯電話で実行されている場合、携帯電話に携帯電話の位置が変更されたことを知らせる携帯電話のcellid-broadcastsがあります。アプリはこれらを受け取ることができます。それも。

携帯電話の受信機はすでに稼働しており、接続を維持するために携帯電話をウェイクアップする必要があるため、エネルギーのオーバーヘッドが最小限に抑えられます。

ただし、セルIDを特定の場所に戻す方法を見つける必要があります。

Androidアプリのラマはこのcellid-broadcastを使用して、ロケーションベースのアクションをトリガーします。「今、私は7時間仕事をしています。バックグラウンドで、すべてのcellidを収集し、これらを「仕事」としてマークする学習モードがあります。

于 2012-04-16T12:22:09.130 に答える