1. Qiita
  2. 投稿
  3. Android

AndroidでGPS(位置情報取得)

  • 71
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Android(Java)で GPS をテストしてみました。

yotsuba_s.jpg サンプルコード

まず設定ファイルで位置情報取得を許可しておきます。

AndroidManifest.xml
    <!-- 位置情報 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" />

ソースはこんな感じです。

TestActivity.java
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) {
                }
            }
        );
    }
}

yotsuba_s.jpg 解説

ひとまず、あちこちのサイトを参考に、シンプルなソースにまとめてみました。

位置情報の取得開始は、 LocationManager.requestLocationUpdates(〜)
位置情報の取得終了は、 LocationManager.removeUpdates(LocationListener)
です。

位置情報の取得には、GPSだけではなくネットワーク(WiFi、3G)も活用されます。その点はiOSと同じですが、iOSの場合はOS側が使える情報を自動的に判断して位置を確定するのに対し、Androidでは、GPS取得かネットワーク取得かをプログラマーが区別して使う仕様のようです。

また色々わかり次第、追記していきます。

yotsuba_s.jpg 参考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・ゞ いじょー。