BroadcastReceiver для местоположения

Я знаю, что BroadcastReceiver наблюдает за текстом, телефонными событиями и т. Д. … но можете ли вы запускать LocationServices как услугу и событие на основе местоположения?

Например, вы находитесь рядом с определенной точкой GPS, и телефон уведомляет вас.

Solutions Collecting From Web of "BroadcastReceiver для местоположения"

Я думаю, что то, что вы ищете, это нечто подобное. Существует версия LocationManager.requestLocationUpdates() которая принимает параметр PendingIntent в качестве параметра, и этот Intent может использоваться для PendingIntent BroadcastReceiver . Этот код зарегистрирует настраиваемую широковещательную рассылку для обновления обновлений местоположения.

 Intent intent = new Intent("UNIQUE_BROADCAST_ACTION_STRING_HERE"); LocationManager manager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE); long minTime; //This should probably be fairly long float minDistance; //This should probably be fairly big String provider; //GPS_PROVIDER or NETWORK_PROVIDER PendingIntent launchIntent = PendingIntent.getBroadcast(context, 0, intent, 0); manager.requestLocationUpdates(provider, minTime, minDistance, launchIntent); 

Тогда вам просто нужно зарегистрировать свой BroadcastReceiver с тем же действием Intent, и он получит обновления местоположения для обработки. И, конечно же, поддерживайте этот PendingIntent потому что в PendingIntent то момент вам нужно будет вызвать manager.removeUpdates(launchIntent) !

Конечное примечание:

Поскольку это похоже на то, что вы пытаетесь внедрить регулярные обновления местоположения, в то время как ваше приложение не находится на переднем плане, помните об этом. Если вы не хотите, чтобы ваше приложение было заклейменным как убийца батареи, будьте предельно осторожны с тем, как вы реализуете эту функциональность.

Вы захотите значительно уменьшить частоту обновления местоположения с помощью большого параметра minTime или minDistance, чтобы служба службы местоположения оставалась в покое. Эта функция также должна быть привязана к пользовательскому предпочтению, чтобы они могли включать / отключать ваше приложение из отслеживания местоположения в фоновом режиме.

Надеюсь, это поможет!

Этот вопрос более 2 лет, но теперь есть очень простой и эффективный способ батареи. Концепция называется Geofences . Вы можете узнать это более подробно ниже:

http://developer.android.com/training/location/geofencing.html