2013-03-25 72 views
0

我正在開發一個應用程序來檢測進入和退出使用接近警報的區域。我只收到通知的通知但沒有退出。我使用下面的代碼,進出的接近警報

pIntent2 = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 
     PendingIntent.FLAG_CANCEL_CURRENT); 

    locMgr.addProximityAlert(lat, lon, radius, 60000L, pIntent2); 

    proxReceiver = new ProximityReceiver(); 

    IntentFilter iFilter = new IntentFilter(PROX_ALERT); 
    iFilter.addDataScheme("geo"); 

    registerReceiver(proxReceiver, iFilter); 

//廣播接收機

public class ProximityReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context arg0, Intent intent) { 
     if (intent.getData() != null) { 
      Log.v(TAG, intent.getData().toString()); 
     } 

     Bundle extras = intent.getExtras(); 
     if (extras != null) { 
      final String key = LocationManager.KEY_PROXIMITY_ENTERING; 
      final Boolean entering = intent.getBooleanExtra(key, false); 

      if (entering) { 
       Toast.makeText(arg0, "entering", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(arg0, "exiting", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 
} 

請人幫忙。提前致謝。

回答

0

嘗試用這種

private String PROX_ALERT_INTENT = "com.example.proximityalert"; 
private BroadcastReceiver locationReminderReceiver; 
private LocationManager locationManager; 
private PendingIntent proximityIntent; 

locationReminderReceiver = new ProximityIntentReceiver(); 
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT); 
registerReceiver(locationReminderReceiver, filter); 

Intent intent = new Intent(PROX_ALERT_INTENT); 

proximityIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); 
locationManager.addProximityAlert(lat, lon, radius, expiration, proximityIntent);