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

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

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

    Я думаю, что то, что вы ищете, это нечто подобное. Существует версия 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 потому что вам нужно будет вызвать manager.removeUpdates(launchIntent) в какой-то момент!

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

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

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

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

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

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

    Давайте будем гением компьютера.