close

定位~~~是手機非常重要的功能,有些人沒事就會打打卡,老師打卡都是為了"打卡送冬瓜茶",所以都是夏天打卡  離題了  哈哈

非常大部分的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

 

 

 

 
arrow
arrow
    全站熱搜

    ntougpslab 發表在 痞客邦 留言(1) 人氣()