綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[資料] Android實現GPS顯示當前位置以及GPS信息更新

[複製連結] 查看: 2610|回覆: 9|好評: 3
跳轉到指定樓層
樓主
暗桌之光 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2011-6-12 13:06

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
首先在AndroidManifest.xml中添加位置服務權限:
  1. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
複製代碼
然後再看如下代碼例:
  1. LocationManager locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
  2. Location loc = locMan.getLastKnownLocation(LocationManager.GPS_PROVIDER);
  3. if (loc != null) {
  4.         lat = loc.getLatitude();
  5.         Log.d(TAG, "latitude: " + lat);
  6.         lng = loc.getLongitude();
  7.         Log.d(TAG, "longitude: " + lng);
  8. }
複製代碼
先註冊LocationManager,然後就可以通過訪問getLastKnownLocation得到當前的GPS坐標。是不是很簡單。

    既然是GPS,我們當然不只是想知道當前的位置,更重要的是要隨著位置的移動,GPS信息也要更新。那麼我們需要怎麼做呢?

    還先看如下代碼例:
  1. LocationListener locLis = new MyLocationListener();
  2. locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 10,
  3.                                 locLis);
  4. ...
  5. ...
  6. ...
  7. public class MyLocationListener implements LocationListener {
  8.         @Override
  9.         public void onLocationChanged(Location loc) {
  10.                 if (loc != null) {
  11.                         p = new GeoPoint((int) (loc.getLatitude() * 1E6),
  12.                                         (int) (loc.getLongitude() * 1E6));
  13.                         mc.animateTo(p);
  14.                         mc.setZoom(14);
  15.                         mc.setCenter(p);
  16.                 }
  17.         }

  18.         @Override
  19.         public void onProviderDisabled(String provider) {
  20.         }

  21.         @Override
  22.         public void onProviderEnabled(String provider) {
  23.         }

  24.         @Override
  25.         public void onStatusChanged(String provider, int status, Bundle extras) {
  26.         }
  27. }
複製代碼
聲明自己的LocationListener後,調用requestLocationUpdates方法,就可以得到最新的GPS信息。

    常用方法說明:
  1. public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)
複製代碼
當時間超過minTime(單位:毫秒),或者位置移動超過minDistance(單位:米),就會調用listener中的方法更新GPS信息。
    官方文檔中有如下說明:
    1. minTime的值最好是不小於60000(即:1分鐘),這樣會更加高效且節電。
    2. 如果要盡可能實時的更新GPS信息,請將minTime和minDistance都設置成0。

以說明下來自官方文檔:

      寄存器當前活動要定期命名通知供應商。每隔一段時間,所提供的LocationListener將被稱為與當前位置或狀態更新。
    這可能需要一段時間才能收到最新的位置。如果需要即時位置,應用程序可能會使用getLastKnownLocation(String)方法。
    如果提供程序是由用戶禁用,更新將停止,並onProviderDisabled(​​String)方法會被調用。只要供應商再次啟用時,onProviderEnabled(​​String)方法將被調用,位置更新將再次啟動。
    該通知頻率可控制使用minTime和minDistance參數。如果minTime大於0,則LocationManager可能休息間位置更新minTime毫秒,以節約電能。如果minDistance大於0,位置將只播出如果minDistance米裝置動作。為了獲得盡可能經常通知,設置這兩個參數為0。
    後台服務,應如何設置足夠高的minTime使設備不消耗,維持所有的時間GPS或無線電台的權力太大小心。尤其是,根據60000ms值不推薦。
    調用線程必須是一個彎針線,如調用活動的主線。
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

評分

參與人數 2碎鑽 +8 幫助 +1 收起 理由
idvtw + 1
y776 + 8 支持一下

查看全部評分

收藏收藏2 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
沙發
kobeh | 收聽TA | 只看該作者
發表於 2011-6-13 10:36
讚~~~支持

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
guoty | 收聽TA | 只看該作者
發表於 2011-6-21 09:01
謝謝! 受教了。
是否可依程式碼,增加import 項目知訊。
新手實在搞不懂 Android API。
再次謝謝!!!
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
ivan1977222 | 收聽TA | 只看該作者
發表於 2011-6-22 03:03
挖 真是太棒了
時先刷機後不用一直下載更新
學會這套就夠用了
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
Ell_57 | 收聽TA | 只看該作者
發表於 2011-9-8 12:55
Thank you very much.
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

6
kping | 收聽TA | 只看該作者
發表於 2011-9-10 19:18
试试看!!
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

7
kping | 收聽TA | 只看該作者
發表於 2011-9-10 19:35
测试成功了,谢谢!!
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

8
gn01686597 | 收聽TA | 只看該作者
發表於 2011-9-12 21:24
本帖最後由 gn01686597 於 2011-9-12 21:24 編輯

完全看不懂~翻譯的文章~XD
應該是目前才正準備要接觸智慧型手機吧
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

9
zhuangxinbak | 收聽TA | 只看該作者
發表於 2012-11-11 20:27
dsdfaafasdfasdfasdfasdfasdfasfdsadfadfafds
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

10
redhat2005 | 收聽TA | 只看該作者
發表於 2012-11-22 14:22
学习了,谢谢分享
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則