Ich möchte den Benutzerstandort alle 5 Minuten abrufen und als Toast
anzeigen. Was ist der beste Weg, dies zu tun? Service
oder IntentService
? Ich möchte den Dienst per Knopfdruck starten und stoppen. Wie geht das?Wie kann der Gerätestandort alle 5 Minuten mithilfe des Hintergrunddienstes in Android abgerufen werden?
1
A
Antwort
4
einen Alarmdienst verwenden Lokalisierungsdienst auslösen, die inturn Lage in Datenbanktabelle speichern wird
public static void setAlarmTimely(Context context) {
AlarmManager alarmMgr;
PendingIntent alarmIntent;
alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
intent.putExtra(IntentConstants.ALARM_INTENT, IntentConstants.INTENT_REQUEST_CODE_LOCATION_TRACK);
alarmIntent = PendingIntent
.getBroadcast(context, IntentConstants.INTENT_REQUEST_CODE_LOCATION_TRACK, intent, 0);
alarmMgr.cancel(alarmIntent);
Calendar calendar = Calendar.getInstance();
LOGD(TAG, time + " ");
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis() + locationCaptureTime * 60 * 1000,
5 * 60 * 1000, alarmIntent);
}
auf die Schaltfläche
den Alarm klicken Sie auf AbbrechenAlarmManager alarmMgr;
PendingIntent alarmIntent;
LOGD(TAG, "cancelling location update");
alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
intent.putExtra(IntentConstants.ALARM_INTENT, IntentConstants.INTENT_REQUEST_CODE_LOCATION_TRACK);
alarmIntent = PendingIntent
.getBroadcast(context, IntentConstants.INTENT_REQUEST_CODE_LOCATION_TRACK, intent, 0);
alarmMgr.cancel(alarmIntent);
0
Sie können mit Location das tun, müssen Sie Zeitintervall einstellen
Beispiel
LocationManager = new LocationManager();
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Parameter
Provider String: der Name des Anbieters mit der
MINTIME lang registrieren: minimales Zeitintervall zwischen Standortaktualisierungen in Millisekunden
MinDistance float: Mindestabstand zwischen Standortaktualisierungen, in Metern
Zuhörer Location: ein Location dessen
OnLocationChanged (Ort) Methode wird für jeden Standort Update aufgerufen werden
Sie auf dieser Seite mehr lesen kann LocationManager
0
Verwenden klebrigen Dienst dieses
zu tun@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e(LOG_TAG, "Service Started");
try {
}
} catch (Exception e) {
e.printStackTrace();
}
return START_STICKY;
}
Dann rufen Sie dies on oncreate of service
protected void onHandleIntent(Intent intent) {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Log.e(LOG_TAG, "Awake - "+i);
// Log.i(LOG_TAG,"TEST ALARM TIME");
// do your task -- here get location
//change the time interval as per your need.
handler.postDelayed(this, 300000);
}
},1000);
}