LoginSignup
79
91

More than 5 years have passed since last update.

AndroidでGPS(位置情報取得)

Last updated at Posted at 2015-03-10

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・ゞ いじょー。

79
91
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
79
91