2010-07-04 15 views

Répondre

0

Il n'y a pas d'événement pour la vitesse, vous devez le calculer et déclencher une "alarme" lorsque la vitesse est supérieure au seuil.

2

Vous devez surveiller les changements d'emplacement, et quand vous obtenez une alarme, vous devez vérifier si l'emplacement actuel hasSpeed()

/** 
* 
*/ 
private void requestUpdates() { 
    locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    // loop through all providers, and register them to send updates 
    List<String> providers = locMan.getProviders(false); 
    for (String provider : providers) { 
     Log.e("birthdroid", "registering provider " + provider); 
     long minTimeMs = 5 * 60 * 1000;// 5 minute interval 
     float minDistance = Application.LOCATION_HOT_RADIUS_IN_METERS; 
     locMan.requestLocationUpdates(provider, minTimeMs, minDistance, 
       getIntent()); 
    } 

} 

/** 
* convenient method to get pending intent 
* @return 
*/ 
private PendingIntent getIntent() { 
    Intent intent = new Intent(this, LocationReceiver.class); 
    return PendingIntent.getBroadcast(
      getApplicationContext(), 0, intent, 0); 
} 

et le récepteur peut être

public class LocationReceiver extends BroadcastReceiver { 

    /* 
    * (non-Javadoc) 
    * 
    * @see android.content.BroadcastReceiver#onReceive(android.content.Context, 
    * android.content.Intent) 
    */ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     try { 
      Bundle b = intent.getExtras(); 
      Location loc = (Location) b 
        .get(android.location.LocationManager.KEY_LOCATION_CHANGED); 
      if (loc != null) { 


      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
Questions connexes