位置情報サービスの要求条件を指定して位置情報の更新を通知するではブロードキャストを
使用して位置情報の更新を通知しましたが、今回は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の設定とパーミッションの設定に関してはここを参照して下さい。