Android Gps/Network Tracking

anadroid

Neues Mitglied
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.

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!!
 

anadroid

Neues Mitglied
Hey Stroker89 :)
Ich danke dir wirklich für die Idee.
Ich hab mir ein BroadcastReceiver erstellt. Wo ich den Intent abfange und dann dort gleich der Wechsel stattfindet zwischen GPS und Network.
Jetzt funktioniert es wie ich es will.
Echt Danke :)
 

Ähnliche Java Themen

Neue Themen


Oben