這是一個練習定位權限的App,我將重要的部分記錄下來。 LocationUtils.kt hasLocationPermission function 回傳一個 Boolean→ true 或 false,代表有沒有定位權限。 這是 Google 提供的 Fused Location Provider API,能整合 GPS、Wi-Fi、藍牙與行動網路的定位來源,讓定位更準確且省電。_fusedLocationClient 用來執行「請求位置更新」、「停止更新」、「取得最後位置」等操作。 requestLocationUpdates ⚠️ 注意:這裡用了 @SuppressLint(“MissingPermission”),代表你必須在呼叫這個函式前,確認已取得權限(也就是前面 LocationDisplay 檢查的部分)。 意思是保證外層一定會先檢查 hasLocationPermission() 才會進來,所以不用再提醒我 MissingPermission。 這個函式會每秒更新一次位置(因為下面設定了 1000 毫秒),然後將新位置傳給你的 LocationViewModel。 當系統取得新的定位資訊時,會呼叫 onLocationResult。 lastLocation 是最新的 Location 物件(包含緯度與經度)。 LocationData 是我們定義的資料類別,用來包裝座標。 呼叫 viewModel.updateLocation(location) → 把資料傳給 ViewModel 更新 UI。 這行讓 app 持續監聽位置變化。 hasLocationPermission LocationUtils 要持有 Context,才能呼叫系統 API(如 […]