Gps/GPSを使用して緯度経度時刻
逆引きAndroid入門 > 位置情報を取得するには/GPSを使用するには
http://www.adakoda.com/android/000125.html
位置情報を取得するには/GPSを使用するには
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,
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;
}
}
}
参考ページ
Context | Android Developers
LocationManager? | Android Developers
LocationListener? | Android Developers
Location | Android Developers
LocationProvider? | Android Developers