Also habe ich etwas gefunden, das mir über GoogleApiClient nicht sehr klar ist. GoogleApiClient verfügt über eine Funktion namens onConnected, die ausgeführt wird, wenn der Client verbunden ist (sicher).
Ich habe meine eigene Funktion namens startLocationListening, die schließlich in der onConnected- Funktion von GoogleApiClient aufgerufen wird.
Daher konnte meine startLocationListening-Funktion ohne eine GoogleApiClient-Verbindung nicht ausgeführt werden.
Code und Protokoll:
@Override
public void onConnected(Bundle bundle) {
log("Google_Api_Client:connected.");
initLocationRequest();
startLocationListening(); //Exception caught inside this function
}
...
private void startLocationListening() {
log("Starting_location_listening:now");
//Exception caught here below:
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
Die Ausnahme ist:
03-30 12:23:28.947: E/AndroidRuntime(4936): java.lang.IllegalStateException: GoogleApiClient is not connected yet.
03-30 12:23:28.947: E/AndroidRuntime(4936): at com.google.android.gms.internal.jx.a(Unknown Source)
03-30 12:23:28.947: E/AndroidRuntime(4936): at com.google.android.gms.common.api.c.b(Unknown Source)
03-30 12:23:28.947: E/AndroidRuntime(4936): at com.google.android.gms.internal.nf.requestLocationUpdates(Unknown Source)
03-30 12:23:28.947: E/AndroidRuntime(4936): at hu.company.testproject.service.GpsService.startLocationListening(GpsService.java:169)
03-30 12:23:28.947: E/AndroidRuntime(4936): at hu.company.testproject.service.GpsService.onConnected(GpsService.java:259)
...
Mein Debug-Protokoll besagt auch, dass die onConnected-Funktion aufgerufen wurde :
03-30 12:23:28.847: I/Locationing_GpsService(4936): Google_Api_Client:connected.
03-30 12:23:28.857: I/Locationing_GpsService(4936): initLocationRequest:initing_now
03-30 12:23:28.877: I/Locationing_GpsService(4936): initLocationRequest:interval_5000
03-30 12:23:28.897: I/Locationing_GpsService(4936): initLocationRequest:priority_100
03-30 12:23:28.917: I/Locationing_GpsService(4936): Starting_location_listening:now
Danach habe ich die Ausnahme bekommen.
Vermisse ich hier etwas? Ich habe eine Antwort für "verbunden" erhalten. Ich habe meine Funktion ausgeführt und den Fehler "nicht verbunden" erhalten. Was ist das? Außerdem ist eine nervige Sache: Ich habe diesen Ortungsdienst seit Wochen genutzt und diesen Fehler nie erhalten.
EDIT:
Ich habe eine spezifischere Protokollausgabe hinzugefügt, habe mich einfach umgehauen und dies überprüft:
@Override
public void onConnected(Bundle bundle) {
if(mGoogleApiClient.isConnected()){
log("Google_Api_Client: It was connected on (onConnected) function, working as it should.");
}
else{
log("Google_Api_Client: It was NOT connected on (onConnected) function, It is definetly bugged.");
}
initLocationRequest();
startLocationListening();
}
Protokollausgabe in diesem Fall:
03-30 16:20:00.950: I/Locationing_GpsService(16608): Google_Api_Client:connected.
03-30 16:20:00.960: I/Locationing_GpsService(16608): Google_Api_Client: It was NOT connected on (onConnected) function, It is definetly bugged.
Ja, ich bin gerade mGoogleApiClient.isConnected() == false
reingekommen, onConnected()
wie ist das möglich?
BEARBEITEN:
Da dies selbst mit Reputationsprämie nicht beantwortet werden konnte, habe ich beschlossen, dies als Fehler bei Google zu melden. Was als nächstes kam, war für mich wirklich überraschend. Googles offizielle Antwort auf meinen Bericht:
"Diese Website ist für Entwicklerprobleme mit dem AOSP-Android-Quellcode und dem Entwickler-Toolset gedacht, nicht für Google-Apps oder -Dienste wie Play-Dienste, GMS oder Google-APIs. Leider scheint es keinen geeigneten Ort zu geben, um Fehler mit Play-Diensten zu melden Ich kann nur sagen, dass es sich bei dieser Website nicht um eine Entschuldigung handelt. Versuchen Sie stattdessen, in den Google-Produktforen zu posten. "
Vollständiger Issue- Bericht hier. (Ich hoffe, sie werden es nicht entfernen, nur weil es albern ist)
Also ja, ich habe mir die Google-Produktforen angesehen und konnte einfach kein Thema finden, um dieses Ding zu posten. Im Moment bin ich verwirrt und stecke fest.
Kann mir jemand auf dem Planeten Erde dabei helfen?
BEARBEITEN:
Vollständiger Code im Pastebin