1

バックグラウンドから位置を追跡するAndroidアプリケーションがあります。次の構成で融合位置APIを使用しています

    mLocationRequest = new LocationRequest();
    mLocationRequest.setSmallestDisplacement(100);
    mLocationRequest.setInterval(60*1000);
    mLocationRequest.setFastestInterval(60*1000);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

デバイスが移動した場合にのみ位置情報の更新が必要です。すべてが完全に機能する場合もあります。しかし、デバイスが静止していても、位置情報の更新を受信することがあります。

この問題が発生する理由 変位を設定する場合、間隔と最速間隔を設定する必要がありますか? この問題は Google Play サービスのバージョンに関連していますか?

4

3 に答える 3

0

次のように GoogleApiClient を使用して現在地の更新をリクエストし、Toasts を使用して実装を検証します。

 if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
    float LOCATION_REFRESH_DISTANCE = 5000;
    long LOCATION_REFRESH_TIME = 0;
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_REFRESH_TIME, LOCATION_REFRESH_DISTANCE, mlocationListener);
    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
    if(mLastLocation!=null){
        Toast.makeText(getApplicationContext(), "YES! mLastLocation!=null", Toast.LENGTH_SHORT).show();
        double latitude = mLastLocation.getLatitude();
        double longitude = mLastLocation.getLongitude();           
        Toast.makeText(getApplicationContext(), "Latitude = " + latitude + "\nLongitude = " + longitude, Toast.LENGTH_SHORT).show();
    }
}

LOCATION_REFRESH_DISTANCEここで、変数とLOCATION_REFRESH_TIME(ミリ秒単位)を使用して、ロケーション リクエストをパラメータ化できます。

もちろん、mLocationListenerGoogleApiClientmGoogleApiClientが最後に認識された/現在の場所を取得するために必要な LocationListener オブジェクトと、それmLastLocationを保存する Location オブジェクト (私はそれを と呼びました) が必要です。例えば。:

private Location mLastLocation;
LocationListener mlocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
    mLastLocation=location;

}

@Override
public void onStatusChanged(String s, int i, Bundle bundle) {

}

@Override
public void onProviderEnabled(String s) {

}

@Override
public void onProviderDisabled(String s) {

}
};
于 2016-06-26T16:49:33.640 に答える
0

おそらく必要なのは、FusedLocationProviderApi のPendingIntent バージョンです。この方法は、バックグラウンドでの使用例に適しています。具体的には、アプリがシステムによって強制終了された場合でも、位置情報の更新を受信する場合に適しています。

于 2016-10-08T12:46:08.193 に答える