【Android 入門開發實戰:口罩地圖】檢查GPS狀態

【Android 入門開發實戰:口罩地圖】線上免費講義課程目錄

獲取到定位權限之後,需要檢查GPS是否開啟,若未開啟,引導使用者前去開啟,已經開啟,則可以開始獲取經緯度。

檢查GPS是否開啟

透過 LocationManager 其中的 isProviderEnabled 方法來檢查GPS是否開啟,若未開啟,則彈跳出詢問視窗,引導使用者前往設定開啟。若已經開啟,則可以開始獲取經緯度。

private fun checkGPSState() {
    val locationManager = mContext.getSystemService(Context.LOCATION_SERVICE) as LocationManager
    if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
        AlertDialog.Builder(mContext)
            .setTitle("GPS 尚未開啟")
            .setMessage("使用此功能需要開啟 GSP 定位功能")
            .setPositiveButton("前往開啟",
                DialogInterface.OnClickListener { _, _ ->
                    startActivityForResult(
                        Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), REQUEST_ENABLE_GPS
                    )
                })
            .setNegativeButton("取消", null)
            .show()
    } else {
        //todo getDeviceLocation()
        Toast.makeText(this, "已獲取到位置權限且GPS已開啟,可以準備開始獲取經緯度", Toast.LENGTH_SHORT).show()
    }
}

輸出結果

引導前往GPS設定開啟

GPS 設定的 callBcak 事件

在前往設定頁上,我們有加入 REQUEST_ENABLE_GPS ,設定返回時會收到回應值。

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    when (requestCode) {
      ...
        REQUEST_ENABLE_GPS -> {
            checkGPSState()
        }
    }
}

程式碼範例

範例名稱:檢查GPS狀態
開發人員:HKT (侯光燦)
程式語言:Kotlin
開發環境:Android Studio 4.1.2 & Android 11 & Kotlin 1.4.30
授權範圍:使用時必須註明出處且不得為商業目的之使用
範例下載點:點我下載