Вам нужно использовать любой уникальный setAction
, чтобы система считала эти два намерения разными, иначе будет иметь тенденцию повторно использовать первое.
У меня есть этот код:
Intent intent = new Intent(this,PlacesProximityHandlerService.class);
intent.setAction("foo"+objPlace.getId());
intent.putExtra(Poi._ID, objPlace.getId());
intent.putExtra(Poi.LAT, objPlace.getLat());
intent.putExtra(Poi.LON, objPlace.getLon());
PendingIntent sender = PendingIntent.getService(this,0, intent, 0);
LocationUtils.addProximity(this, objPlace.getLat(),objPlace.getLon(), objPlace.getError(), -1,sender);
Также обратите внимание, что оповещение о близости работает довольно сложно.
Пользователь вводит горячую зону ZONE1 в зависимости от установленной вами точности сигнала и радиуса.Трансляция запускается для ввода = истинной ZONE1.Если вы входите в другую зону ZONE2, которая перекрывается с текущей зоной, вы не получите предупреждение, поскольку вы все еще находитесь в ZONE1.Вы должны покинуть ZONE1, чтобы трансляция возобновилась при вводе = false.Итак, однажды вы вышли из ZONE1, и если вы прибудете в ZONE2, он запустит трансляцию, введя = true ZONE2.
Я протестировал, и все работает отлично.Возьмите Location Spoofer
бесплатное приложение с маркета и смоделируйте местоположение телефона.Вам также необходимо включить макет местоположения в настройках телефонов.И добавьте дополнительное разрешение для вашего приложения:
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
Что бы я сделал, установите мое местоположение подальше от меня, возможно, Гренландию, затем установите положение в зоне, которая запускает ZONE1, трансляция должна сработать.Затем снова установите мое местоположение в Грецию и установите позицию, которая запускает ZONE2, трансляция должна срабатывать.
Флаг входа можно получить из дополнительных функций намерений
Bundle b = intent.getExtras();
Boolean entering = (Boolean) b.get(android.location.LocationManager.KEY_PROXIMITY_ENTERING);
Я использовал вышеуказанные коды длянастроить оповещения о близости для 100 POI и все работают хорошо.