0

私のアプリはrequestLocationUpdatesを使用しています(GPSとネットワークのどちらか早い方から)。

私のコード:

LocationManager lm = (LocationManager) context
                .getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
                    myLocationListenerInstance);

timeout = new Timer();
timeout.schedule(myGetLastKnownLocationInstance, TIMEOUT);

myGetLastKnownLocationInstance は getLastKnownLocation を使用しています

私の問題:

現在実行中のアクティビティからこのコードを呼び出すと、myLocationListenerInstance は TIMEOUT 秒未満で通知を受け取ります。

ただし、バックグラウンド サービスから呼び出すと、タイムアウトになり、出力は最後の既知の場所を介して行われます。最悪なのは、測定された Location を調査するときに、タイムスタンプがTIMEOUTよりも小さいことです。

TIMEOUT を 1 分に設定しても、この動作が発生します。

助言がありますか?ありがとう

4

2 に答える 2

0

私の問題:

現在実行中のアクティビティからこのコードを呼び出すと、myLocationListenerInstance は TIMEOUT 秒未満で通知を受け取ります。

requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener) に従って、 2 番目のパラメーターを使用すると、位置更新の最小間隔をミリ秒単位で設定できます。

上記のAndroid APIドキュメントから:

位置の更新間隔は、minTime パラメータを使用して制御できます。場所の更新間の経過時間は、minTime よりも短くなることはありませんが、場所プロバイダーの実装と他のアプリケーションによって要求された更新間隔によっては、それよりも長くなる可能性があります。

タイマーが他の場所で使用されていない限り、minTime0あなたの場合は)設定しTIMEOUTて完全に削除できます。Timer

于 2015-12-28T20:30:57.263 に答える