PendingIntent locationListenerPassivePendingIntent =
PendingIntent.getActivity(context, 0, passiveIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
should instead read
PendingIntent locationListenerPassivePendingIntent =
PendingIntent.getBroadcast(context, 0, passiveIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
as you will discover if you copy this part of the code - the
PassiveLocationChangedReceiver's onReceive is never called :-)