Android(Java)で GPS をテストしてみました。
サンプルコード
まず設定ファイルで位置情報取得を許可しておきます。
<!-- 位置情報 GPSから -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 位置情報 ネットワークから -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- これは何だろう??? -->
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
ソースはこんな感じです。
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
public class TestActivity extends Activity {
// GPS用
private LocationManager mLocationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
// GPS
mLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
boolean gpsFlg = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
Log.d("GPS Enabled", gpsFlg?"OK":"NG");
}
// GPSボタン
public void onBtnGpsClicked(View view) {
mLocationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, //LocationManager.NETWORK_PROVIDER,
3000, // 通知のための最小時間間隔(ミリ秒)
10, // 通知のための最小距離間隔(メートル)
new LocationListener() {
@Override
public void onLocationChanged(Location location) {
String msg = "Lat=" + location.getLatitude()
+ "\nLng=" + location.getLongitude();
Log.d("GPS", msg);
mLocationManager.removeUpdates(this);
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
);
}
}
解説
ひとまず、あちこちのサイトを参考に、シンプルなソースにまとめてみました。
位置情報の取得開始は、 LocationManager.requestLocationUpdates(〜)
位置情報の取得終了は、 LocationManager.removeUpdates(LocationListener)
です。
位置情報の取得には、GPSだけではなくネットワーク(WiFi、3G)も活用されます。その点はiOSと同じですが、iOSの場合はOS側が使える情報を自動的に判断して位置を確定するのに対し、Androidでは、GPS取得かネットワーク取得かをプログラマーが区別して使う仕様のようです。
また色々わかり次第、追記していきます。
参考URL
位置情報を取得するには/GPSを使用するには|逆引きAndroid入門
http://www.adakoda.com/android/000125.html
AndroidでGPSセンサを利用する方法|TechBooster
http://techbooster.org/android/device/227/
Androidの位置情報取得 - 1 (現在地取得)
http://koringo2.blogspot.jp/2013/05/locationmanager-mlocationmanager.html
【Android】位置情報取得に関するまとめ
http://blog.shonanshachu.com/2012/06/android.html
AndroidのGPS精度を劇的に改善するたった1つの設定項目
http://mobilelaby.com/blog-entry-3581.html
(・o・ゞ いじょー。