5

Android フォンでバックグラウンド GPS 追跡を行う必要があり、現在 2 つのシナリオを計画しています。

  1. 電話が (車の) 充電器に接続されている場合、頻繁に (1 分ごとに) GPS 位置情報を取得します。
  2. 電話が充電器に接続されていない場合は、バッテリーの影響に応じて、5 ~ 30 分ごとに 1 回だけ場所をポーリングします。

サービスに追跡を実装する必要があることはわかっており、おそらくサービスを維持するために通知を表示します。ただし、携帯電話がいつでもスリープ モードになり、GPS 追跡が停止する可能性があると私は推測しています。

これらのシナリオでは、電話がスリープ状態にならず、電力をあまり消費せずに、継続的なバックグラウンド GPS 追跡を行うための最良の方法は何ですか?

これまでのところ、以下を収集しました。

シナリオ 1 の場合、おそらく WakeLock を取得し、CPU を常に起動しておく必要があります (ただし、画面はスリープする可能性があります)。MyTracks アプリケーションはTrackRecordingServiceでこれを行っているようです。OpenGPSTrackingも同じようです。

シナリオ 2 では、AlarmManager を使用して x 分ごとにチェックをスケジュールできます。私のサービスは、一時的な WakeLock を取得し、単一の GPS 位置を待ってから、WakeLock を停止して解放する必要があります。

これら 2 つの方法 (永続的な WakeLock と AlarmManager) の電力使用量を比較するとどうなるでしょうか? GPS は 30 分ごとに確認するだけで、適切な時間内に正確な位置を受信できますか?

StackOverflow には関連する質問がいくつかありますが、満足のいく答えはありません。いくつかの半有用なもの:

4

2 に答える 2

7

電源が接続されているかどうかに関係なく、放送受信機を使用して、それに応じてアクションを実行できます。

電源接続の場合:

public class PowerConnected extends BroadcastReceiver{
   @Override
   public void onReceive(Context context, Intent intent) {
   // TODO Auto-generated method stub
   if(intent.getAction().equalsIgnoreCase("android.intent.action.ACTION_POWER_CONNECTED")){
      //Initialize your listener here...
   }
   }

}

マニフェストファイル:

<receiver android:name=".receiver.PowerConnected" >
<intent-filter >
     <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
</intent-filter>
</receiver>

電源が切断されている場合:

public class PowerDisconnected extends BroadcastReceiver{
  @Override
  public void onReceive(Context context, Intent intent) {
  if(intent.getAction().equalsIgnoreCase("android.intent.action.ACTION_POWER_DISCONNECTED")){
    //Do your task here...      
  }
 }
}

マニフェストファイル:

<receiver android:name=".receiver.PowerDisconnected" >
<intent-filter >
   <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>

ここでservice、GPSを使用して初期化する必要があります。電源が接続されている場合は、GPS_Providerそれ以外の場合は使用してnetwork providerくださいwakelock。必要に応じて使用してください。

于 2011-10-14T09:10:23.300 に答える
5
  1. 電話が充電器に接続されている場合、頻繁に GPS の位置情報を取得することを計画しているため、ウェイクロックを取得できますが、この場合、AlarmManager は優れたアイデアではないようです。

  2. 電話が充電器に接続されていない場合は、5 ~ 30 分ごとに 1 回だけ位置をポーリングするため、アラーム マネージャーを使用できます。ウェイクロックを取得すると、バッテリーの寿命に大きく影響します。

実装はあなた次第です。

乾杯....!!

于 2011-10-14T08:58:55.567 に答える