そのため、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の公式回答:
「このウェブサイトは、Play サービス、GMS、Google API などの Google アプリやサービスではなく、AOSP Android ソース コードと開発者ツールセットに関する開発者の問題を対象としています。残念ながら、Play サービスのバグを報告する適切な場所はないようです。 。申し訳ありませんが、このウェブサイトはそうではありません。代わりに、Google プロダクト フォーラムに投稿してみてください。」
完全な問題レポートはこちら。(バカだからって削除しないでほしい)
そうですね、私は Google プロダクト フォーラムを調べましたが、このことを投稿するトピックが見つかりませんでした。そのため、現時点では困惑して立ち往生しています。
惑星地球の誰かがこれを手伝ってくれますか?
編集:
ペーストビンの完全なコード