addProximityAlert no funciona como se esperaba

ios SDK tiene grandes funciones de monitoreo de la región. Necesito algo así en Android y creo que tenemos dos alternativas. Geofencing y LocationManager.

Geofencing tiene ejemplos y errores realmente ordenados, así que preferí LocationManager. Todo funciona bien en LocationManager excepto uno. Si agrega su ubicación actual como ProximityAlert, se activa inmediatamente "ENTRANDO", pero es mi ubicación actual, no significa que ingresé a esta región. Debido a eso, se dispara "ENTRANDO" cada vez que inicio mi aplicación si estoy en la región (incluso si no me estoy moviendo)

¿Cómo puedo resolver este problema y desencadenar un evento solo si el usuario realmente ENTRA EN la región?

Aquí es cómo estoy agregando PeddingIntents para mis ubicaciones.

    LocationManager locationManager =  (LocationManager)mContext.getSystemService(Context.LOCATION_SERVICE);

    for(Place p : places)
    {
        Log.e("location", p.location);

        Bundle extras = new Bundle();
        extras.putString("name", p.displayName);
        extras.putString("id", p.id);
        Intent intent = new Intent(CommandTypes.PROX_ALERT_INTENT);
        intent.putExtra(CommandTypes.PROX_ALERT_INTENT, extras);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext,Integer.parseInt(p.id), intent,PendingIntent.FLAG_CANCEL_CURRENT);
        float radius = 50f;
        locationManager.addProximityAlert(p.lat,
                p.lon, radius, 1000000, pendingIntent);

    }       

Receptor

public class ProximityReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    final String key = LocationManager.KEY_PROXIMITY_ENTERING;
    final Boolean entering = intent.getBooleanExtra(key, false);

    Bundle b = intent.getBundleExtra(CommandTypes.PROX_ALERT_INTENT);
    String id = b.getString("id");
    Log.e("here" + id, "here");

    if (entering) {
        Log.e(TAG,"entering");
    } else {
        Log.e(TAG,"leaving");
    }
} 

Manifiesto

   <receiver android:name=".ProximityReceiver">
        <intent-filter>
            <action android:name="ACTION_PROXIMITY_ALERT" />
        </intent-filter>            
    </receiver>

Muchas gracias

PS: iOS no tiene este problema y su documentación lo explica así

El monitoreo de una región geográfica comienza inmediatamente después del registro de las aplicaciones autorizadas. Sin embargo, no esperes recibir un evento de inmediato. Sólo los cruces de frontera generan un evento. Por lo tanto, si en el momento del registro la ubicación del usuario ya está dentro de la región, el administrador de la ubicación no genera automáticamente un evento. En su lugar, su aplicación debe esperar a que el usuario cruce el límite de la región antes de que se genere un evento y se envíe al delegado. Dicho esto, puede usar el método requestStateForRegion: de la clase CLLocationManager para verificar si el usuario ya se encuentra dentro del límite de una región.

Respuestas a la pregunta(1)

Su respuesta a la pregunta