Google Maps APIを使用して単純なマップアプリケーションを構築しています。 GoogleApiClientがまだ接続されていないため、アプリを開くとクラッシュすることがあります。私はいくつかのメソッドを実行し、APIを接続する必要があります。接続しようとする前にGoogleAPIClientが読み込まれるのを待ちます。
APIが接続するのを待ってクラッシュを防止するにはどうすればよいですか? onConnected:
@Override
public void onConnected(Bundle connectionHint)
{
// this callback will be invoked when all specified services are connected
//Must ask for explicit permission
//ie: Opening settings action in order to change or give permissions
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
currentLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleClient);
mGoogleClient.connect();
if (currentLocation != null)
{
currentLatLng = new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude());
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, 15));
}
else
{
if (mGoogleClient!=null)
{
mGoogleClient.connect();
}
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleClient, locationRequest, this);
}
}
}
現在位置を取得:
は、ここに私のコードのいくつかはある
private void getLocation() {
locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(60 * 1000);
locationRequest.setFastestInterval(30 * 1000);
mGoogleClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
if (mGoogleClient != null)
{
mGoogleClient.connect();
}
}
私は必要とされている他に何かわかりません。より多くのコードを提供する必要がある場合はお知らせください。
編集:onMapLoadedにクラッシュログ
08-15 17:51:54.692 950-950/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.hensh.fusedmap, PID: 950
java.lang.IllegalStateException: GoogleApiClient is not connected yet.
at com.google.android.gms.common.api.internal.zzh.zzb(Unknown Source)
at com.google.android.gms.common.api.internal.zzl.zzb(Unknown Source)
at com.google.android.gms.common.api.internal.zzj.zzb(Unknown Source)
at com.google.android.gms.location.internal.zzd.requestLocationUpdates(Unknown Source)
at com.hensh.fusedmap.MapsActivity.onConnected(MapsActivity.java:667)
at com.google.android.gms.common.internal.zzk.zzk(Unknown Source)
at com.google.android.gms.common.api.internal.zzj.zzi(Unknown Source)
at com.google.android.gms.common.api.internal.zzh.zzpx(Unknown Source)
at com.google.android.gms.common.api.internal.zzh.onConnected(Unknown Source)
at com.google.android.gms.common.api.internal.zzl.onConnected(Unknown Source)
at com.google.android.gms.common.api.internal.zzc.onConnected(Unknown Source)
at com.google.android.gms.common.internal.zzj$zzg.zzqL(Unknown Source)
at com.google.android.gms.common.internal.zzj$zza.zzc(Unknown Source)
at com.google.android.gms.common.internal.zzj$zza.zzw(Unknown Source)
at com.google.android.gms.common.internal.zzj$zzc.zzqN(Unknown Source)
at com.google.android.gms.common.internal.zzj$zzb.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5294)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
ポストクラッシュログ。 –
場所を取得するためのコードが大丈夫であるため、地図が準備されておらず、クラッシュしているようです。 – PatrickZenker
クラッシュする場所を指定してください。また、なぜあなたはあなたのonConnectedで 'mGoogleClient.connect();'を呼び出すのですか? – tyczj