Тож я знайшов щось не дуже зрозуміле для мене щодо 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
Після цього я отримав виняток.
Мені чогось тут не вистачає? Я отримав відповідь на "підключений", я запустив свою функцію і отримав помилку "не підключений", що це? Плюс одна прикрі речі: я користувався цією службою локації вже кілька тижнів і ніколи не отримував цієї помилки.
РЕДАГУВАТИ:
Я додав більш конкретний висновок журналу, просто задумався, перевірте це:
@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()
як це можливо?
РЕДАГУВАТИ:
Оскільки ніхто не міг відповісти на це, навіть з репутацією, я вирішив повідомити про це як про помилку в Google. Те, що відбулося далі, насправді здивувало. Офіційна відповідь Google на мій звіт:
"Цей веб-сайт призначений для проблем розробників із вихідним кодом Android AOSP та набором інструментів для розробників, а не для програм або служб Google, таких як сервіси Play, GMS або API Google. На жаль, здається, що не існує відповідного місця для повідомлення про помилки в сервісах Play . Все, що я можу сказати, це те, що цей веб-сайт - це не так, вибачте. Натомість спробуйте розміщувати повідомлення на форумах продуктів Google ".
Повний звіт тут. (Сподіваюсь, вони не видалять його лише тому, що це дурно)
Так, так, я подивився на форумах продуктів Google і просто не міг знайти жодної теми, щоб розмістити цю інформацію, тому на даний момент я спантеличений і застряг.
Хтось на планеті Земля міг би мені в цьому допомогти?
РЕДАГУВАТИ:
Повний код у пастебіні