位置情報サービスの要求条件を指定して位置情報の更新を通知する(2)


位置情報サービスの要求条件を指定して位置情報の更新を通知するではブロードキャストを

使用して位置情報の更新を通知しましたが、今回は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の設定とパーミッションの設定に関してはここを参照して下さい。