Альтернатива onLocationChanged (Location location) использует диспетчер местоположения и широковещательный приемник для получения информации о местоположении пользователя. Обратитесь к документации, чтобы прочитать все о Location Manager class. С классом менеджера местоположений вы сможете установить интервал, в течение которого вы хотите исследовать местоположение пользователя, даже если они не были перемещены. Вы будете иметь:
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Intent intent = new Intent(context, LocationReceiver.class);
pendingIntent = PendingIntent.getBroadcast(context, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
List<String> knownProviders = locationManager.getAllProviders();
if(locationManager != null && pendingIntent != null && knownProviders.contains(LocationManager.GPS_PROVIDER)){
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MINUTE_INTERVAL*5, 0, pendingIntent);
}
if(locationManager != null && pendingIntent != null && knownProviders.contains(LocationManager.NETWORK_PROVIDER)){
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MINUTE_INTERVAL*5, 0, pendingIntent);
}
В классе LocationReceiver (Broadcast Receiver) вы будете иметь метод в onRecieve(), в котором вы можете использовать:
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
location = (Location) bundle.get(LocationManager.KEY_LOCATION_CHANGED);
Вы можете использовать этот объект местоположения для многих вещей, обратитесь к документам Android Location.
Спасибо, Донни, это помогло мне :) –
Рад, что это помогло :) – Donnie
Если это решило вашу проблему, тогда вы должны пометить ответ как принятый. Символ галочки слева под подсчет голосов. – Donnie