I create a number of ProximityAlerts. It seems only the first works and sometime the second. They also seem to expire. I call this method to create a ProximityAlert:
public boolean addProximityAlert(int id) {
locationManager.addProximityAlert(
latitude,
longitude,
POINT_RADIUS,
PROX_ALERT_EXPIRATION,
getPendingIntent(id)
);
registerReceiver(new ProximityIntentReceiver(), getIntentFilter(id));
return true;
}
private PendingIntent getPendingIntent(int id) {
Intent intent = new Intent(PROX_ALERT_INTENT + id);
intent.setAction(String.valueOf(id));
return PendingIntent.getBroadcast(getApplicationContext(), id, intent, PendingIntent.FLAG_CANCEL_CURRENT);
}
private IntentFilter getIntentFilter(int id) {
IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT + id);
filter.addAction(String.valueOf(id));
return filter;
}
In ProximityIntentReceiver extends BroadcastReceiver:
@Override
public void onReceive(Context context, Intent intent) {
String key = LocationManager.KEY_PROXIMITY_ENTERING;
Boolean entering = intent.getBooleanExtra(key, false);
if (entering) {
message = context.getString(R.string.notification_alert_entering);
} else {
message = context.getString(R.string.notification_alert_exiting);
}
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
Notification notification = createNotification();
notification.setLatestEventInfo(context, context.getString(R.string.notification_alert), message, pendingIntent);
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(NOTIFICATION_ID, notification);
}
Variables:
private static final long MINIMUM_DISTANCECHANGE_FOR_UPDATE = 1; // in Meters
private static final long MINIMUM_TIME_BETWEEN_UPDATE = 1000; // in Milliseconds
private static final long POINT_RADIUS = 500; // in Meters
private static final long PROX_ALERT_EXPIRATION = -1;
private static final String PROX_ALERT_INTENT = "com.xxx.yyy.ProximityAlert";
I'd like to create a number of unique alerts and then get notified each time when entering or exiting the proximity (can happen multiple times). All the alerts should stay valid, can someone please point me in the right direction why this is not working properly?
This is how I have added proximity:
And This is how I register the receiver: