android.locationパッケージ - LocationManagerクラス、
android.locationパッケージ - LocationListenerインターフェース、
android.locationパッケージ - Locationクラス、
android.locationパッケージ - LocationProviderクラスを使用します。
LocationManager
- LocationManagerインスタンスを取得するには、Context.getSystemService(LOCATION_SERVICE)を呼び出します。
- 位置情報の更新を取得するには、requestLocationUpdates()を呼び出します。
第1引数には、LocationManager.GPS_PROVIDER、
第4引数には、LocationListenerインスタンスを渡します。 - 位置情報の更新の取得が不要になったら、removeUpdates()を呼び出します。
- AndroidManifest.xmlには、以下の定義が必要です。
<uses-permission android:name="android.permission.android.permission.ACCESS_FINE_LOCATION"/>
※LocationManager.GPS_PROVIDERでなく、
LocationManager.NETWORK_PROVIDERを使用する場合には、ACCESS_COARSE_LOCATIONも必要です。
LocationListener
- GPSの位置情報を取得したいクラスでLocationListenerインターフェースを実装します。
- 位置情報が更新されると、onLocationChanged()が呼び出されます。
引数として渡されたLocationを参照することで位置情報の詳細を取得できます。 - 位置情報のステータスが更新されると、onStatusChanged()が呼び出されます。
Location
- Latitude(緯度)を取得するには、getLatitude()を呼び出します。
- Longitude(経度)を取得するには、getLongitude()を呼び出します。
- Accuracy(精度)を取得するには、getAccuracy()を呼び出します。
- Altitude(標高)を取得するには、getAltitude()を呼び出します。
- Timeを取得するには、getTime()を呼び出します。
- Speedを取得するには、getSpeed()を呼び出します。
- Bearingを取得するには、getBearing()を呼び出します。
サンプルソースコード
package com.adakoda.locationtest;
import android.app.Activity;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.util.Log;
public class LocationTestActivity extends Activity implements LocationListener {
private LocationManager mLocationManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
}
@Override
protected void onResume() {
if (mLocationManager != null) {
mLocationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
// LocationManager.NETWORK_PROVIDER,
0,
0,
this);
}
super.onResume();
}
@Override
protected void onPause() {
if (mLocationManager != null) {
mLocationManager.removeUpdates(this);
}
super.onPause();
}
@Override
public void onLocationChanged(Location location) {
Log.v("----------", "----------");
Log.v("Latitude", String.valueOf(location.getLatitude()));
Log.v("Longitude", String.valueOf(location.getLongitude()));
Log.v("Accuracy", String.valueOf(location.getAccuracy()));
Log.v("Altitude", String.valueOf(location.getAltitude()));
Log.v("Time", String.valueOf(location.getTime()));
Log.v("Speed", String.valueOf(location.getSpeed()));
Log.v("Bearing", String.valueOf(location.getBearing()));
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
switch (status) {
case LocationProvider.AVAILABLE:
Log.v("Status", "AVAILABLE");
break;
case LocationProvider.OUT_OF_SERVICE:
Log.v("Status", "OUT_OF_SERVICE");
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
Log.v("Status", "TEMPORARILY_UNAVAILABLE");
break;
}
}
}
参考ページ