私は練習のための天気予報アプリを構築しようとしていると私は場所を取得しようとする問題に実行されてきました。私は人々が融合位置APIを介してgetLastLocationを使用することを提案していることをお読みになりました。問題は、デバイスに登録されている位置をまだ持っていなければnullになることです。私はエミュレータを使用してこの時間が珍しい時代を使用して気づいたが、私はまだ適切にそれを処理する私のアプリが欲しい。あなたがこれに遭遇するかもしれない1つの事例は、単にGPSをオフにしてからオンにした場合、または電話がオンになった場合です。私がしたことの1つは、getLastLocationがnullに戻り、アップデートをリクエストすることですが、デバイスが更新されたロケーションを登録するのを待たなければならないことです。これは天気アプリですべてのデータに基づいており、同じ問題を抱えています。他のアプリに気づいたことはありませんが、実際にはGoogleマップをロードして場所を登録する必要があることがあります。 Google Mapsは場所の更新をどのように強制しますか?ここに私のgetLocationメソッドからの例です:どのようにデバイスの場所を取得する
public void getLocation() throws SecurityException {
boolean gps_enabled;
LocationManager lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (gps_enabled) {
Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if (location != null) {
startGetForecast(location);
} else {
LocationRequest request = LocationRequest.create();
request.setNumUpdates(1);
request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, request, this);
}
}
else {
AlertDialogFragment alertDialogFragment = new AlertDialogFragment();
alertDialogFragment.setErrorTexts("Location Unavailable", "Could not retrieve location information.", "Exit");
alertDialogFragment.show(getSupportFragmentManager(), "Location Unavailable");
}
}
を再生サイドノートは、なぜあなたが安全な場所の頭痛になる融合ロケーションプロバイダのAPIを使用しないでください。 –
融合位置APIを使用していますか?私の問題は、融合位置APIを使用して最後の場所がない場合です。 – jBob
私が間違っていない場合は、最後の場所は、gps、wifi、またはあなたの電話網のような任意の場所プロバイダから取得できます。コード内にgpsのオン/オフを尋ねるif文があります。場所はありませんか? if文のテンポラリーを無効にして、何かを得るかどうか確認してください。電話ネットワークやWi-Fiの信号範囲を確保してください。 –