Итак, я нашел кое-что, что мне не очень понятно о GoogleApiClient. GoogleApiClient имеет функцию onConnected, которая запускается, когда клиент подключен (наверняка)
Я получил свою собственную функцию: startLocationListening, которая в конечном итоге получает вызов функции GoogleApiClient onConnected.
Итак, моя функция startLocationListening не могла работать без соединения GoogleApiClient.
Код и журнал:
@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);
}
Исключение составляет:
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)
...
В моем журнале отладки также говорится, что функция onConnected получила вызов:
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
После этого я получил исключение.
Я что-то упустил? Я получил ответ на "подключен", я запустил мой func, и я получил ошибку "не подключен", что это? Плюс одна раздражающая вещь: я использовал эту службу определения местоположения в течение нескольких недель и никогда не получал эту ошибку.
E D я T:
Я добавил более конкретный вывод журнала, просто взорвал мой разум, проверьте это:
@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();
}
вывод журнала в этом случае:
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.
Да, я просто получил mGoogleApiClient.isConnected() == false
внутри onConnected()
, как это возможно?
E D я T:
Так как никто не мог ответить на это даже с благодарностью за репутацию, , я решил сообщить об этом как об ошибке для Google. То, что было дальше, действительно меня удивило. Официальный ответ Google на мой отчет:
"Этот веб-сайт предназначен для разработчиков с помощью источника AOSP для Android код и набор инструментов разработчика, а не приложения или службы Google, такие как Службы воспроизведения, GMS или API Google. К сожалению, похоже, быть подходящим местом для сообщения об ошибках в Play Services. Все, что я могу скажите, что этот сайт не так, извините. Попробуйте опубликовать в Google Форум продуктов."
Полный выпуск отчет здесь. (Надеюсь, они не удалят его только потому, что его глупо)
Итак, я посмотрел на Google Product Forums и просто нашел какую-либо тему для публикации этой вещи, поэтому на данный момент ям озадачен и застрял.
Может ли кто-нибудь на планете Земля помочь мне с этим?
E D я T:
Полный код в pastebin