91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android GPS定位的簡單應用

發布時間:2020-06-29 18:32:35 來源:網絡 閱讀:917 作者:xhmengmse 欄目:移動開發

轉自我的新浪博文 

      

       在Android的位置服務中,有兩個重要的類LocationManager和LocationProvider,提供了一系列方法來處理與位置相關的問題,包括查詢一個已知位置;注冊(注銷)來自某個LocationProvider的周期性的位置更新;以及注冊(注銷)接近某個坐標時對一個已定義Intent的觸發等。 

    Android的地理定位系統的API位于android.location包內,其中包含了以下幾個重要的功能類:

1、LocationManager:

    本類提供訪問定位服務的功能,另外也提供獲取最佳定位提供者的功能。

2、LocationProvider:

    該類是定位提供者的抽象類。定位提供者具備周期性報告設備地理位置的功能。

3、Criteria:

    可譯為標準、規則,用于在可以獲得的LocationProvider列表中獲取合適的定位提供者。不同的定位提供者具有不同的精確度、靈敏度等指標,通過定義Criteria并設置其屬性,可以選擇合適的定位提供者。

4、LocationListener:

    提供定位信息發生改變時的回調功能。必須事先在定位管理器中注冊監聽器對象。

5、Geocoder:

    用于處理地理編碼和反向地理編碼的類。地理編碼是指將地址或其他描述轉變為經度和緯度,反向地理編碼則是將經度和緯度轉變為地址或描述語言,其中包含了兩個構造函數,需要傳入經度和緯度的坐標。

    要使用地理定位,首先需要取得LocationManager的實例,在Android中,獲得LocationManager的唯一方法是通過getSystemService方法的調用。

    String serviceName = Context.LOCATION_SERVICE;  
    LocationManager    locationManager = (LocationManager) getSystemService(serviceName);

    通過使用LocationManager,我們可以獲得一個位置提供者的列表。在一個真實的手持設備中,這個列表包含了一些GPS服務(或基于網絡的位置信息服務等)。我們可以通過設置一些標準來選擇合適的位置提供者:

    Criteria criteria = new Criteria();  
    criteria.setAccuracy(Criteria.ACCURACY_FINE);【高精確度】  
    criteria.setAltitudeRequired(false); 【設置是否需要高度信息】 
    criteria.setBearingRequired(false);【設置是否需要方位信息】 
    criteria.setCostAllowed(true);【設置是否允許產生費用】  
    criteria.setPowerRequirement(Criteria.POWER_LOW);【設置耗電的高低】  
    String provider = locationManager.getBestProvider(criteria, true);

    當然,我們也可以直接選擇更強大、更精確、不帶其他附加服務的GPS:

    String provider = LocationManager.GPS_PROVIDER;

    得到了LocationManager的實例以后,我們通過下面的語句來注冊一個周期性的位置更新:

    private static final int step = 2000; 【2s】

    ......

    locationManager.requestLocationUpdates(provider, step, 0,  locationListener);

    其中第一個參數是設置服務提供者,第二個參數是周期,第三個參數是以米為單位的最小位置變化,最后一個參數locationListener,是用來監聽定位信息的改變。

    這句代碼告訴系統,我們需要從位置提供者(如GPS)獲取位置信息,并且是每隔2000ms更新一次,不考慮最小位置變化。


    locationListener必須要實現如下方法:

1、onLocationChanged(Location location)

    當坐標改變時候觸發該函數,如果Provider傳相同的坐標,它就不會觸發。

2、onProviderDisabled(String provider)

    Provider禁用時觸發此函數,比如GPS被關閉。

3、onProviderEnabled(String provider)

    Provider啟用時觸發此函數,比如GPS被打開。

4、onStatusChanged(String provider, int status, Bundle extras)

    Provider的狀態在可用、暫時不可用和無服務三個狀態直接切換時觸發此函數。

    要使用定位的API,還需要在AndroidManifest.xml文件中添加其權限:    
    Android GPS定位的簡單應用

    如果在模擬器上測試,需要人為的設置一個坐標。有兩種方法來設置一個模擬的坐標值。第一種方法是通過DDMS,我們可用在Eclipse的ADT插件中使用這種方法,只要啟動Eclipse,選擇“Window”->“Show View”,打開“Emulator Control”界面,手動或者通過KML和GPX文件來設置一個坐標:

Android GPS定位的簡單應用
    另外一種方法使用geo命令。我們需要telnet到本機的5554端口,然后在命令行輸入類似以下命令:

    geo fix -121.45365 46.51119 4392

    后面三個參數分別是經度、緯度和(可選)海拔。設置后再Android模擬器屏幕上便多出了一個如下圖所示的標志,表示模擬了GPS權限:

Android GPS定位的簡單應用

Android GPS定位的簡單應用

    使用telnet命令的示意圖如下:

Android GPS定位的簡單應用

Android GPS定位的簡單應用


示例代碼下載

參考文章:

    《Android應用開發揭秘》

     android 模擬器上GPS的使用

     android GPS定位系統

     Android:GPS衛星定位

     初探Android平臺上的定位服務(GPS)

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

托克托县| 永年县| 三江| 东港市| 青阳县| 曲沃县| 台东县| 宜君县| 梁山县| 中西区| 桐庐县| 宜宾市| 长海县| 平南县| 垣曲县| 许昌市| 阿城市| 金门县| 龙山县| 南郑县| 晋宁县| 健康| 松原市| 桐庐县| 滨海县| 响水县| 长乐市| 锡林浩特市| 兴宁市| 忻城县| 公安县| 龙井市| 肇州县| 称多县| 韶山市| 乐亭县| 龙口市| 五台县| 分宜县| 宁强县| 固阳县|