2011-10-24 8 views
6

GPSトラッカーを使ってアプリケーションを構築する必要があります。私はSOで同様の質問をしていますが、私が持っているいくつかの質問には答えが見つかりませんでした。GPSサービスを有効にしてバッテリ寿命を最適化する

- 10分ごとにGPSの修正が必要なので、ロケーションサービスを開始し、修正(またはタイムアウト)を受けてサービスを停止することをお勧めします(removeUpdates())。どうすればこのサイクルを10分ごとに実行して、バッテリーが残っているかどうか確認することができます(デバイスがスリープ状態になっても、10分ごとに起動して修正を受ける必要があります) )? AlarmManagerを使用していますか?

- この方法でバッテリーを1日使い続けると思いますか?

私はmytracksをチェックしましたが、gpsリスナーは常にオンになっていて、バッテリーは5時間以上持続すると予想されます。

また、私はCWAC Location Pollerをチェックしましたが、タイムアウト時にはremoveUpdates()のみを実行し、すぐにリスナーを再起動します。私の場合はAlarmManagerが良いアイデアかもしれないと思うのですが、それはまたウォークロックを使います。

すべてのヘルプ/提案を歓迎

答えて

4

上で動作しますアラームマネージャ私は

Intent serviceIntent = new Intent(this, TrackerService.class); 
    mPendingIntent = PendingIntent.getService(this, 0, serviceIntent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

    alarmManager.cancel(mPendingIntent); 
    alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, 
       System.currentTimeMillis(), interval, mPendingIntent); 

は、ネットワークの場所を取得するために同様のアプリで使用

間隔は、サービスが、起動位置を取得し、

を閉じ、これははるかにバッテリー効率的に私が掲示レポート

を待っているアクティブなサービスでぶらぶらしているコードということであったサービス

を開始する間msです以前のアラームをキャンセルして1を超えないようにしてください:)

+0

ありがとうございました。私はそれを試み、バッテリーの寿命をテストします。 – jul

0

あなたは、デバイスの場所が更新されるたび、他のそれはあなたの位置更新をあげるPassive Receiver をチェックアウトすることができます - あなただけはと上のスポットされている2.2以降

+2

私はそれを使用できません。他のアプリがロケーションアップデートを取得しなければ何も手に入れません。 – jul

関連する問題