Hallo Leute!!!
Zuerst danke ich euch im Voraus.
Ich habe ein großes Problem. Ich muss für meine Android App ein Tracking Service schreiben. Wo ich die ganze Zeit die Koordinaten so genau wie es geht in der Datenbank abspeichere. Das abspeichern funktioniert und das Tracking auch zum Teil. Aber das Problem ist das es nicht so funktioniert wie ich es haben will.
Mein Ziel ist es: Dass wenn der GPS (Provider) zu Verfügung steht (wenn GPS eingeschalten wird) dass dann der LocationListner auf GPS hört und wenn nicht dann die ganze Zeit über dem Network Provider. Und dass soll flüssig beim Tracking die ganze Zeit funktionieren, dass wenn der Benutzer GPS einschaltet, dass dann automatisch auf GPS um geschalten wird.
Ich hab sehr vieles versucht um es hinzukriegen, hab in Büchern nachgeschaut auch in Englischen und hab Stunden im Internet verbracht um eine Lösung zu finden, aber leider ohne Erfolg.
Ich brauch bitte eure Hilfe.
Das ist mein aktueller Stand.
Aber das Problem ist, dass wenn mit dem Network Provider angefangen wird, dass dann wenn GPS eingeschalten wird, dass die Funktion onProviderEnabled nicht mehr aufgerufen wird. Und dadurch erkenne ich nicht wann GPS einschalten wird.
Vielleicht könnt Ihr mir sagen was falsch ist. Oder ihr habt eine bessere Lösung für mich.
Ich weiß, meine deutsch Kenntnisse sind nicht super. Ich bitte um Entschuldigung.
Danke euch!!
Zuerst danke ich euch im Voraus.
Ich habe ein großes Problem. Ich muss für meine Android App ein Tracking Service schreiben. Wo ich die ganze Zeit die Koordinaten so genau wie es geht in der Datenbank abspeichere. Das abspeichern funktioniert und das Tracking auch zum Teil. Aber das Problem ist das es nicht so funktioniert wie ich es haben will.
Mein Ziel ist es: Dass wenn der GPS (Provider) zu Verfügung steht (wenn GPS eingeschalten wird) dass dann der LocationListner auf GPS hört und wenn nicht dann die ganze Zeit über dem Network Provider. Und dass soll flüssig beim Tracking die ganze Zeit funktionieren, dass wenn der Benutzer GPS einschaltet, dass dann automatisch auf GPS um geschalten wird.
Ich hab sehr vieles versucht um es hinzukriegen, hab in Büchern nachgeschaut auch in Englischen und hab Stunden im Internet verbracht um eine Lösung zu finden, aber leider ohne Erfolg.
Ich brauch bitte eure Hilfe.
Das ist mein aktueller Stand.
Java:
public class TrackingService extends Service implements LocationListener {
private LocationManager locationManager;
@Override
public void onCreate() {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 0, this);
} else if (locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 0, 0, this);
}
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public void onLocationChanged(Location loc) {
//Koordinaten -> Datenbank
}
@Override
public void onProviderDisabled(String provider) {
locationManager.removeUpdates(this);
if (provider.equals(LocationManager.GPS_PROVIDER)) {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1, 1, this);
} else {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1, 1, this);
}
}
@Override
public void onProviderEnabled(String provider) {
locationManager.removeUpdates(this);
if (provider.equals(LocationManager.GPS_PROVIDER)) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1, 1, this);
} else {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1, 1, this);
}
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Aber das Problem ist, dass wenn mit dem Network Provider angefangen wird, dass dann wenn GPS eingeschalten wird, dass die Funktion onProviderEnabled nicht mehr aufgerufen wird. Und dadurch erkenne ich nicht wann GPS einschalten wird.
Vielleicht könnt Ihr mir sagen was falsch ist. Oder ihr habt eine bessere Lösung für mich.
Ich weiß, meine deutsch Kenntnisse sind nicht super. Ich bitte um Entschuldigung.
Danke euch!!