Android/緯度経度
提供: 初心者エンジニアの簡易メモ
注意
androidの設定/位置情報をonにしないと取得できない
メインスレッド以外のスレッド内では取得できない
緯度経度取得サンプル
AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
KzLocation.java
import android.content.Context; import android.content.pm.PackageManager; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.util.Log; public class KzLocation implements LocationListener { @SuppressLint("MissingPermission") public KzLocation(Context context) { LocationManager mLocationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); final boolean gpsEnabled = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); if (!gpsEnabled) { // GPSが有効でない or wifi } String pkgname = context.getApplicationContext().getPackageName(); PackageManager pm = context.getPackageManager(); if (pm.checkPermission("android.permission.ACCESS_FINE_LOCATION", pkgname) == PackageManager.PERMISSION_GRANTED // ) { || pm.checkPermission("android.permission.ACCESS_COARSE_LOCATION", pkgname) == PackageManager.PERMISSION_GRANTED ) { mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, // 通知のための最小時間間隔 0, // 通知のための最小距離間隔 (LocationListener)this); // 位置情報リスナー Location location = mLocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if (location != null) { onLocationChanged(location); } mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 36000, 100, (LocationListener)this); } } @Override public void onLocationChanged(Location location) { Log.i("test", "緯度:" + location.getLatitude()); // 35.6947000 Log.i("test", "経度:" + location.getLongitude()); // 139.6969000 } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } }
呼び出し
location = new KzLocation(getApplicationContext()); Button btn1 = (Button) findViewById(R.id.button); btn1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (location.latitude.length() > 0 && location.longitude.length() > 0) { Log.i("location lati", location.latitude); // 35.6947000 Log.i("location long", location.longitude); // 139.6969000 } } });