Android

📍【Android】取得經緯度 獲取手機經緯度

📍【Android】取得經緯度 獲取手機經緯度

Android 獲取經緯度是指使用 Android 系統來取得智慧型手機或平板電腦的位置信息,尤其是基於 GPS 的經緯度。目前,最全面的方法是使用 Google Play 服務,它能夠提供精確的位置信息,而不需要任何儀器或額外的裝置。

Google Play 服務的 API 將從 GPS 接收的位置資訊,以及其他任意的如 Wi-Fi 等的篩選出來的訊號,將其打包為地理工具庫 (android.location),可協助開發者使用。

開發者可以使用其 API 探索每個位置的獨特資訊,這個 API 會提供包括經緯度坐標在內的詳細資料,包括位置準確性、方向、速度等等。


文章目錄

  1. 導入 Location Library
  2. AndroidManifest 增加權限
  3. 判斷是否開啟定位系統
  4. 取得經緯度

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())
    }
}

發表迴響