現在地を取得したい時は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);