1

У меня есть андроид приложение, которое будет отслеживать местоположение с background.i я использую слитый Location API с последующей конфигурациейКонденсированные Места Provider - обновления местоположения по перемещению не работает

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

мне нужно обновление местоположения, только если устройство перемещается. Иногда все работает отлично. Но иногда я получаю обновления местоположения, даже если устройство находится в стационарном режиме.

Почему эта проблема происходит? Если я устанавливаю смещение, мне нужно установить интервал и самый быстрый интервал? Эта проблема связана с версией сервиса google play?

+0

Можете ли вы показать, как вы вызываете метод 'requestLocationUpdates'? –

ответ

0

Он будет обновлять ваше местоположение каждые 60 секунд, если ваш мобильный движется или не будет длительностью вашего интервала.

+0

Вы знаете, как получить место, только если устройство движется? – HellAmADeveloper

+0

Нет, я не знаю. В моем приложении я использую интервал времени ... –

+0

Вы должны использовать этот метод '@Override public void onLocationChanged (Location location) {} ' –

0

Запросите обновления своего местоположения с помощью GoogleApiClient, например. как это и использовать Тосты проверить свою реализацию:

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 (в миллисекундах)

Вы должны были бы, конечно, объект LocationListener mLocationListener что ваш GoogleApiClient mGoogleApiClient должен получить последнее известное/текущее местоположение и объект Location (я назвал его mLastLocation), где его хранить. например .:

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) { 

} 
}; 
0

Что вы, вероятно, нужно это PendingIntent version из FusedLocationProviderApi. Этот метод подходит для использования в фоновом режиме, особенно для получения обновлений местоположения, даже когда приложение было убито системой.

Смежные вопросы