📍【Android】取得經緯度 獲取手機經緯度
Android 獲取經緯度是指使用 Android 系統來取得智慧型手機或平板電腦的位置信息,尤其是基於 GPS 的經緯度。目前,最全面的方法是使用 Google Play 服務,它能夠提供精確的位置信息,而不需要任何儀器或額外的裝置。
Google Play 服務的 API 將從 GPS 接收的位置資訊,以及其他任意的如 Wi-Fi 等的篩選出來的訊號,將其打包為地理工具庫 (android.location),可協助開發者使用。
開發者可以使用其 API 探索每個位置的獨特資訊,這個 API 會提供包括經緯度坐標在內的詳細資料,包括位置準確性、方向、速度等等。
文章目錄
- 導入 Location Library
- AndroidManifest 增加權限
- 判斷是否開啟定位系統
- 取得經緯度
1.導入 Location Library
dependencies {
implementation 'com.google.android.gms:play-services-location:18.0.0'
}
2.AndroidManifest 增加權限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
3.判斷是否開啟定位系統
val REQUSET_GPS = 444
val locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
val gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
val network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)
if (gps || network) {
getLocation()
} else {
val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
startActivityForResult(intent, REQUSET_GPS)
}
4.取得經緯度
private fun getLocation() {
val request = LocationRequest.create()
request.apply {
interval = 10000
fastestInterval = 1000
priority = LocationRequest.PRIORITY_HIGH_ACCURACY
}
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), 50)
} else {
LocationServices.getFusedLocationProviderClient(this)
.requestLocationUpdates(request, object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult?) {
LocationServices.getFusedLocationProviderClient(this@MainActivity)
.removeLocationUpdates(this)
if (locationResult != null && locationResult.locations.size > 0) {
val index = locationResult.locations.size - 1
val latitude = locationResult.locations[index].latitude
val longitude = locationResult.locations[index].longitude
Log.e("DATA", "latitudelongitude")
}
}
}, Looper.getMainLooper())
}
}