2015-10-12 3 views
-1

Я хочу получить текущее местоположение (широта, долгота) пользователя и отправить его на сервер только тогда, когда пользователь совершил поездку на 100 Километров от предыдущего выбранного места. Каков наилучший способ сделать это, если он есть?Как постоянно выбирать местоположение пользователя в Android?

Моя цель - использовать минимально возможные ресурсы пользователя во время выборки.

ответ

0

Существует интерфейс называется LocationListener:

http://developer.android.com/reference/android/location/LocationListener.html

Вы можете использовать LocationManager как:

public void startLocationUpdates() { 
    Criteria criteria = new Criteria(); 
    String bestProvider = locationManager.getBestProvider(criteria, false); 
    locationManager.requestLocationUpdates(bestProvider, 60000, 10, new LocationListener() { 

     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) {} 

     @Override 
     public void onProviderEnabled(String provider) {} 

     @Override 
     public void onProviderDisabled(String provider) {} 

     @Override 
     public void onLocationChanged(Location location) { 
      System.out.println("LOCATION CHANGED: "+location); 
     } 
    }); 
} 

public void stopLocationUpdates() { 
    locationManager.removeUpdates(this); 
} 

10-это минимальное расстояние, и 60000 в данном случае является минимальным время между запросами.

+0

Будет ли он продолжать работать вечно? (За исключением случаев, когда пользовательская сила останавливает приложение)? –

+0

Да, если поставщик местоположения (GPS или WIFI и т. Д.) Не работает. Но вы можете следить за этим в методе onStatusChanged, который дает вам эту информацию. – breakline

+0

Так что я должен называть 'startLocationUpdates' в' onProviderEnabled', чтобы он работал навсегда? –

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