定位~~~是手機非常重要的功能,有些人沒事就會打打卡,老師打卡都是為了"打卡送冬瓜茶",所以都是夏天打卡 離題了 哈哈
非常大部分的APP都需要定位這個功能,手機定位的方式主要有三種,第一種是藉由手機基地台,目前台灣採用的是最簡易的方式,就是直接把基地台的位置當成你的位置,這個方法準確度不高,有時候可以差很遠,有時候差不多,就是看運氣的意思。第二種是藉由全球衛星定位系統(Global Navigation Satellite System,GNSS),目前新手機都支援三大衛星定位系統,美國的GPS、俄羅斯的GLONASS、中國的BDS,利用衛星進行定位精度大約在10公尺以內。第三種是藉由一些有的沒有的sersor,這方面有各式各樣的技術與方法,亦可用於室內定位,目前比較成熟的是wi-fi定位,其概念是用一台定位車到處趴趴走,把所有收到wi-fi時的座標都記錄下來,建立一個wi-fi與座標的對照表,然後哩~~~只要你收到wi-fi就可以利用對照表反查到你的座標。
Step.1 開設新專案,專案名稱設為:CH4_學號
Step.2 設計Layout 使用一個TextView和一個Button,按下Button可以顯示出自己所在位置的經緯度
Step.3 設定存取權限,在Androidmanifest.xml加上許可權
(1) 在Android列表中的app → manifests資料夾中,點擊 Androidmanifest.xml
(2) 在Androidmanifest.xml 加上許可權
說明:
● 允許應用程式透過Geolocation類別存取精確位置(如GPS)的資料
● 允許應用程式透過Geolocation類別存取粗略位置(如GPS)的資料
● 允許訪問額外提供定位的指令權限
Step.4 設計程式碼
(1) 宣告和設定
(2) 在onCreate裡加上加上指定LocationManager的定位方法
● LocationManager.GPS_PROVIDER //使用GPS定位
● LocationManager.NETWORK_PROVIDER //使用網路定位
(3) 建立一個按下按鈕後的事件聆聽
(4) 在按鈕事件內新增一個LocationManager
● LocationManager可以用來獲取當前的位置,追蹤設備的移動路線
(5) 加上事件的更新條件設定
● 事件的條件設定為時間間隔1秒,距離改變0米,設定監聽位置變化
(6) 利用 locationManager.getLastKnownLocation 取得當下的位置資料
※ 因為Android的版本差異,會發現在程式碼下方會出現紅色問題波浪
● 這時候使用 Alt + Enter ,會跳出選單,選擇 Add permission check
● 程式會自動填上許可證明
● 同時將 this 改寫為 MainActivity.this
● 然後在內部補上用來開啟手機定位權限
(7) 使用 TextView
設定一個判斷式,如果座標有值得話,就把讀取到的位置用 TextView 顯示出來
● location.getLongitude() //取得經度
● location.getLatitude() //取得緯度
● location.getAltitude() //取得海拔高度
(8) 新增一個 LocationListener 監聽器,當位置生變化時觸動事件發生
● 「onLocationChanged」當座標改變時觸發此函數,如果Provider傳進相同的座標,它就不會被觸發。
● 「onStatusChanged」Provider的轉態在可用、暫時不可用和無服務三個狀態直接切換時觸發此函數
● 「onProviderEnabled」Provider被enable時觸發此函數,比如GPS被打開
● 「onProviderDisabled」 Provider被disable時觸發此函數,比如GPS被關閉
Step.4 執行程式
完整程式碼如下:
完整程式碼 高畫質網址:https://imgur.com/a/FLz2qmq
留言列表