Может ли трансляция трансляции отслеживать несколько передач?

Я пытаюсь создать несколько предупреждений о близости, но я не могу заставить его работать …

Я думаю, что приемник вещания перезаписывается и, таким образом, обрабатывает только последнюю трансляцию. Так что, если бы у меня было два пункта рядом, только тот, чье намерение было создано последним, генерирует предупреждение …

Я читал, что должен использовать коды запросов, но я понятия не имею, как это сделать …


Мой метод настройки ожидающих намерений и широковещательного приемника …

private void addProximityAlert(double latitude, double longitude, String poiName, String intentfilter) { Bundle extras = new Bundle(); extras.putString("name", poiName); Intent intent = new Intent(PROX_ALERT_INTENT+poiName); intent.putExtras(extras); PendingIntent proximityIntent = PendingIntent.getBroadcast(MainMenu.this, requestCode, intent, 0); locationManager.addProximityAlert( latitude, // the latitude of the central point of the alert region longitude, // the longitude of the central point of the alert region POINT_RADIUS, // the radius of the central point of the alert region, in meters PROX_ALERT_EXPIRATION, // time for this proximity alert, in milliseconds, or -1 to indicate no expiration proximityIntent // will be used to generate an Intent to fire when entry to or exit from the alert region is detected ); requestCode++; IntentFilter filter = new IntentFilter(intentfilter); registerReceiver(new ProximityIntentReceiver(), filter); } 

Мой класс вещания

 public class ProximityIntentReceiver extends BroadcastReceiver { private static final int NOTIFICATION_ID = 1000; @Override public void onReceive(Context context, Intent intent) { String key = LocationManager.KEY_PROXIMITY_ENTERING; Boolean entering = intent.getBooleanExtra(key, false); if (entering) { Log.d(getClass().getSimpleName(), "entering"); } else { Log.d(getClass().getSimpleName(), "exiting"); } NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, null, 0); Notification notification = createNotification(); notification.setLatestEventInfo(context, "Proximity Alert!", "You are approaching: " +intent.getExtras().get("name"), pendingIntent); //here------------------------------------- notificationManager.notify(NOTIFICATION_ID, notification); } private Notification createNotification() { Notification notification = new Notification(); notification.icon = R.drawable.androidmarker; notification.when = System.currentTimeMillis(); notification.flags |= Notification.FLAG_AUTO_CANCEL; notification.flags |= Notification.FLAG_SHOW_LIGHTS; notification.flags |= Notification.FLAG_INSISTENT; notification.defaults |= Notification.DEFAULT_VIBRATE; notification.defaults |= Notification.DEFAULT_LIGHTS; notification.defaults |= Notification.DEFAULT_SOUND; notification.ledARGB = Color.WHITE; notification.ledOnMS = 300; notification.ledOffMS = 1500; return notification; } } 

Не могли бы вы мне помочь??? Я действительно застрял в этом …

Любая помощь могла бы быть полезна!!!

    У меня все получилось …

    Именно то, что я искал: http://www.gauntface.co.uk/blog/2010/01/04/proximity-alerts-in-android/

    Модификации, которые я сделал


     private void addProximityAlert(double latitude, double longitude, String poiName) { Bundle extras = new Bundle(); extras.putString("name", poiName); extras.putInt("id", requestCode); Intent intent = new Intent(PROX_ALERT_INTENT); intent.putExtra(PROX_ALERT_INTENT, extras); PendingIntent proximityIntent = PendingIntent.getBroadcast(MainMenu.this, requestCode , intent, PendingIntent.FLAG_CANCEL_CURRENT); locationManager.addProximityAlert( latitude, // the latitude of the central point of the alert region longitude, // the longitude of the central point of the alert region POINT_RADIUS, // the radius of the central point of the alert region, in meters PROX_ALERT_EXPIRATION, // time for this proximity alert, in milliseconds, or -1 to indicate no expiration proximityIntent // will be used to generate an Intent to fire when entry to or exit from the alert region is detected ); requestCode++; } private void initialiseReceiver() { IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT); registerReceiver(new ProximityIntentReceiver(), filter); } 

     package michaels.pack; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.location.LocationManager; import android.util.Log; public class ProximityIntentReceiver extends BroadcastReceiver { private static final int NOTIFICATION_ID = 1000; @Override public void onReceive(Context context, Intent intent) { String key = LocationManager.KEY_PROXIMITY_ENTERING; Boolean entering = intent.getBooleanExtra(key, false); if (entering) { Log.d(getClass().getSimpleName(), "entering receiverrrrrrrrrrrrrrrrrr"); } else { Log.d(getClass().getSimpleName(), "exiting"); } NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, null, 0); Notification notification = createNotification(); notification.setLatestEventInfo(context, "Proximity Alert!", "You are approaching: " +intent.getBundleExtra("michaels.pack.ProximityAlert.").get("name"), pendingIntent); //here------------------------------------- notificationManager.notify( intent.getBundleExtra("michaels.pack.ProximityAlert.").getInt("id"), notification); } private Notification createNotification() { Notification notification = new Notification(); notification.icon = R.drawable.androidmarker; notification.when = System.currentTimeMillis(); notification.flags |= Notification.FLAG_AUTO_CANCEL; notification.flags |= Notification.FLAG_SHOW_LIGHTS; notification.defaults |= Notification.DEFAULT_VIBRATE; notification.defaults |= Notification.DEFAULT_LIGHTS; notification.defaults |= Notification.DEFAULT_SOUND; notification.ledARGB = Color.WHITE; notification.ledOnMS = 300; notification.ledOffMS = 1500; return notification; } } 
    Intereting Posts
    Android installLocation при построении с cordova cli Удаление OnClickListener в представлении удаляет все события касания на представлениях позади Умное и автоматическое размещение кнопок Android: как распечатать HTML-страницу непосредственно на Samsung Mobile Print Содержимое подталкивается под панелью инструментов при использовании animateLayoutChanges = "true" Структура проекта Android Studio (vs Eclipse Project Structure) Рисование текста внутри дуги с использованием холста Пользовательский шрифт для текстового просмотра в ArrayAdapter Панорамирование и масштабирование MapView медленнее после добавления многих надписей Как отключить все функции Android ProGuard, кроме обфускации? Нарисовать диаграмму с указателем в android Конвертировать dip в px в Android Изменение текста на вкладке Android Разница между content_main.xml и activity_main.xml? Улучшенный тег электронной торговли через GTM v5 с использованием пакета firebase