10

I/O 2013 で導入された場所の新しい API を使用しています。

それはうまく機能し、その結果に問題はありません。私の問題は、ミリ秒に設定setExpirationDuration(WHATEVER_MILLIS)したときですが、1分間は機能します。

これは私のコードです:

LocationRequest locationRequest = LocationRequest.create()
                            .setInterval(10 * 60 * 1000) // every 10 minutes
                            .setExpirationDuration(10 * 1000) // After 10 seconds
                            .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

アプリを実行すると、衛星インジケーターがトレイに表示されるので、わずか 10 秒で表示されると思います。ただし、1分後に消えます。

提案やコメントをいただければ幸いです。ありがとう。

4

2 に答える 2

1

ドキュメント ( https://developer.android.com/reference/com/google/android/gms/location/LocationRequest.html#setExpirationDuration(long) )

「期間はすぐに開始されます (リクエストがロケーションクライアントに渡されたときではありません)。後でリクエストが再利用される場合は、このメソッドを再度呼び出してください。」

次の行が呼び出されると、この期間が開始されると予想されます。

LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, request, this);

ただし、ドキュメントには、この期間はリクエストオブジェクトが作成されたときに始まると記載されています。

于 2015-03-12T10:57:16.197 に答える
1

これは Android で実際に発生する問題のように思われるため、位置情報の更新を手動で削除するハンドラーが回避策になる可能性があります。

    listHandler = new Handler() {
        public void handleMessage(Message msg) {
            if (msg.what == 0) {
                mLocationClient.removeLocationUpdates(MyActivity.this);
                //Location Updates are now removed
            }
            super.handleMessage(msg);
        }
    };

位置情報の更新を要求した後 (最大 10 秒間)、この Handler を呼び出しますが、もちろん 10 秒間遅れます。

myLocationClient.requestLocationUpdates(...);
listHandler.sendEmptyMessageDelayed(0, 10000);

これにより、10 秒後に現在地の更新が確実に削除されます。

于 2013-12-31T01:23:45.717 に答える