【androidJava】LocationManagerで現在位置が取れない時の処理

現在地を取得したい時はLocationManagerで取ることができますが、gpsの情報が不正確だったりgpsの許可が下りていなかった場合は nullで帰ってきてしまい正しい位置情報を取得することができません。しのぐ方法はいくつかあるのですが、自分はまず最初に位置情報を 取得させ、nullだった場合はLocationManager.NETWORK_PROVIDER(基地局からの現在位置の情報)を使いネットワークから取得 させています。

最初からgpsの設定していない場合はSettings.ACTION_LOCATION_SOURCE_SETTINGSを使ってgpsを使うように促して設定ページに移動 させます。これで最小限の設定が出来るので、後は端末のバージョンと相談しながら必要なパーミッションや機能をつければ実装完了です。


Location location = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

if (location != null) {

  System.out.println(location + "there");

  onLocationChanged(location);

  GeoPoint homeposition = new GeoPoint(location.getLatitude(),location.getLongitude());

  mapController.setCenter(homeposition);

} else { location = mLocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

  System.out.println(location+ "null");

  onLocationChanged(location);

  GeoPoint homeposition = new GeoPoint(location.getLatitude(), location.getLongitude());

  mapController.setCenter(homeposition);

}
// GPSを設定するように促す
Intent settingsIntent =
        new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(settingsIntent);

 

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG