位置情報サービスの要求条件を指定して位置情報の更新を通知するではブロードキャストを
使用して位置情報の更新を通知しましたが、今回はLocationListener使用して更新通知を
受けとります。
詳細は以下から
サンプルコード
package org.jpn.techbooster.sample.LocationListenerSample; import android.app.Activity; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.widget.Toast; public class LocationListenerSample extends Activity implements LocationListener { private LocationManager lm; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // LocationManagerオブジェクトの生成 lm = (LocationManager) getSystemService(LOCATION_SERVICE); // ローケーション取得条件の設定 Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_COARSE); criteria.setPowerRequirement(Criteria.POWER_LOW); criteria.setSpeedRequired(false); criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(false); lm.requestLocationUpdates(1000, 1, criteria, this, this .getMainLooper()); } // 位置情報が変更された場合に呼び出される @Override public void onLocationChanged(Location loc) { this.display(loc); } // LocationProviderが有効になった場合に呼び出される @Override public void onProviderDisabled(String provider) { } // LocationProviderが無効になった場合に呼び出される @Override public void onProviderEnabled(String provider) { } // LocationProviderの状態が変更された場合に呼び出される @Override public void onStatusChanged(String provider, int status, Bundle extras) { } private void display(Location loc) { String message = "Location\n" + "Longitude:" + loc.getLongitude() + "\n" + "Latitude:" + loc.getLatitude(); Toast.makeText(this, message, Toast.LENGTH_LONG).show(); } }
LocationListenerインターフェイスのimplements
位置情報の更新をLocationListenerで受ける場合には、更新通知を受けるクラスで
LocationListenerインターフェイスを実装する必要があります(サンプルコード11、12行目)。
また、LocationListenerインターフェイスは以下の4つのメソッドを実装する必要があります。
onLocationChanged | 位置情報が変更された場合に呼び出される |
onProviderDisabled | LocationProviderが有効になった場合に呼び出される |
onProviderEnabled | LocationProviderが無効になった場合に呼び出される |
onStatusChanged | LocationProviderの状態が変更された場合に呼び出される |
この中から今回はonLocationChangedを使用して更新通知を受け取り、Toastで変更後の位置情報を出力しています。(39~42行目)
Criteriaの設定とパーミッションの設定
Criteriaの設定とパーミッションの設定に関してはここを参照して下さい。