7

1 時間ごとにユーザーの位置データを収集するために 2 つの個別のアラームを使用することを考えています。

バッテリー寿命に関して、ユーザーの位置情報を取得することがアプリの主な消耗になる場合、他に考慮すべきことはありますか? または、2 つのアラームを持つ別のアプローチはありますか? もともとアラームは 1 つしかありませんでしたが、(!mLocationClient.isConnected) を実行してから接続チェックを行っても、クライアントが接続するのに十分な時間がありません。

あなたの洞察に感謝します。

2 つのアラームは次のように鳴ります。

private int PERIODIC_UPDATE = 60000*60;  //gets location and disconnects every hour
private int PERIODIC_RECONNECTION_UPDATE = 60000*59;  //connects 1 minute before getLocation call

    Timer toReconnect = new Timer();
    toReconnect.schedule(new TimerTask() {

        @Override
        public void run() {
            mLocationClient.connect();
        }
    }, 5000, PERIODIC_RECONNECTION_UPDATE);

    Timer theTimer = new Timer(); 
    theTimer.schedule(new TimerTask(){
        @Override
        public void run() {
            try {
                if(!mLocationClient.isConnected()) {
                    mLocationClient.connect();
                    //This will not have much affect because cannot so quickly, will remove. 
                }

                Location theLocation = mLocationClient.getLastLocation();
                if(theLocation!=null) {
                    checkPostLocation(theLocation); 

                    mLocationClient.disconnect();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }   
        }}, 5000, PERIODIC_UPDATE);
4

2 に答える 2

2

実際にユーザーを追跡する必要がありますか?

UI だけの場合は、getLastKnownLocation(PASSIVE_PROVIDER) を使用します。別の場所で携帯電話の位置情報サービスを使用したと仮定すると、半正確なものが得られるはずです。

ユーザーを実際に三角測量する必要がある場合は、異なるプロバイダーが異なるバッテリーを使用していることを認識してください。パッシブ < ネットワーク < GPS。

ユーザーの位置を特定すればするほど、GPS のバッテリーが多くなり、バッテリーと時間が最もかかります。

1 つのスケジュール、1 時間など、必要なサービスを 1 つだけ意図してサービスを開始します。最大 1 分間 (またはそれ以下) のみライブし、すべての位置情報プロバイダーをリッスンします。分または精度が十分になったら、結果を保存してサービスをシャットダウンします。

于 2013-06-17T04:34:23.663 に答える