У меня есть приложение для измерения скорости и будет определять, когда пользователь идет выше или ниже определенной скорости. Должен ли я постоянно следить за скоростью или я могу создать событие?Есть ли там Android-листер для скорости?
2
A
ответ
0
Нет никакого события для скорости, вам нужно было бы рассчитать его и прозвучать «сигнал тревоги» всякий раз, когда скорость превысит порог.
2
Вам необходимо отслеживать изменения местоположения, и когда вы получаете сигнал тревоги его, вам нужно проверить, если текущее местоположение 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);
}
и приемник может быть
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();
}
}
}