GPSによる位置情報利用
<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION”/>
ネットワークによる位置情報利用
<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION”/>
ロケーションマネージャーのインスタンスを取得
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
GPSの状態を取得する
locationManager.addGpsStatusListener(this);
/* * Listener * GPS の状態が通知されるメソッド */ @Override public void onGpsStatusChanged(int event) { // TODO 自動生成されたメソッド・スタブ String status = ""; if (event == GpsStatus.GPS_EVENT_FIRST_FIX) { status = "FIRST FIX:初めて位置情報を確定した:"; } else if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS) { status = "SATELLITE STATUS:GPSが位置情報を取得中"; } else if (event == GpsStatus.GPS_EVENT_STARTED) { status = "STARTED:GPSを使い位置情報の取得を開始した"; } else if (event == GpsStatus.GPS_EVENT_STOPPED) { status = "STOPPED:GPSの位置情報取得が終了した"; } Log.d("onGpsStatusChanged", status); }
利用できるプロバイダの一覧表示
List<String> providers = locationManager.getAllProviders(); for (String provider : providers) { Log.d("providers", provider); }
実行結果:
07-17 12:55:05.809: D/providers(2053): network 07-17 12:55:05.809: D/providers(2053): passive 07-17 12:55:05.809: D/providers(2053): gps
gps(GPS, AGPS)
人工衛星より位置情報を取得する。
建物の中や、高い建物付近だとGPSが遮られて位置を取得できない。
バッテリー消費大。高精度。
network (AGPS, CellID, Wifi MACID)
携帯端末の基地局や接続しているWifiから位置情報を特定する。
バッテリー消費中。中精度。
passive(CellID, Wifi MACID)
位置情報取得設定が全てオフの場合実行される。
network との違いは、AGPSを使用しない事。
バッテリー消費小。低精度
条件を指定して最適なプロバイダを取得する。
Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_LOW);//細かい位置精度 /* criteria.setBearingRequired(false); // 方位不要 criteria.setSpeedRequired(false); // 速度不要 criteria.setAltitudeRequired(false); // 高度不要 */ String provider = locationManager.getBestProvider(criteria, true); Log.d("getBestProvider", provider);//gps
プロバイダの状態を表示する
List<String> providers = locationManager.getAllProviders(); for (String provider : providers) { boolean status = locationManager.isProviderEnabled(provider); Log.d("providers", provider + "::" + status); }表示結果:
07-17 13:25:37.829: D/providers(2297): network::false 07-17 13:25:37.830: D/providers(2297): passive::true 07-17 13:25:37.831: D/providers(2297): gps::true
使えるプロバイダを取得する場合
List<String> providers = locationManager.getProviders(true);
0 件のコメント:
コメントを投稿