Android 台灣中文網
標題:
Android實現GPS顯示當前位置以及GPS信息更新
[打印本頁]
作者:
暗桌之光
時間:
2011-6-26 15:39
標題:
Android實現GPS顯示當前位置以及GPS信息更新
首先在AndroidManifest.xml中添加位置服務權限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
複製代碼
然後再看如下代碼例:
LocationManager locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location loc = locMan.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (loc != null) {
lat = loc.getLatitude();
Log.d(TAG, "latitude: " + lat);
lng = loc.getLongitude();
Log.d(TAG, "longitude: " + lng);
}
複製代碼
先註冊LocationManager,然後就可以通過訪問getLastKnownLocation得到當前的GPS坐標。是不是很簡單。
既然是GPS,我們當然不只是想知道當前的位置,更重要的是要隨著位置的移動,GPS信息也要更新。那麼我們需要怎麼做呢?
還先看如下代碼例:
LocationListener locLis = new MyLocationListener();
locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 10,
locLis);
...
...
...
public class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
p = new GeoPoint((int) (loc.getLatitude() * 1E6),
(int) (loc.getLongitude() * 1E6));
mc.animateTo(p);
mc.setZoom(14);
mc.setCenter(p);
}
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
複製代碼
聲明自己的LocationListener後,調用requestLocationUpdates方法,就可以得到最新的GPS信息。
常用方法說明:
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值不推薦。
調用線程必須是一個彎針線,如調用活動的主線。
作者:
chiahoyi
時間:
2011-6-27 23:39
謝謝您的分享
作者:
neko551
時間:
2011-7-1 01:34
謝謝分享
作者:
katrina
時間:
2011-8-3 13:32
謝謝分享
作者:
edel
時間:
2011-8-25 20:07
很不錯的教學文,謝謝樓主的分享
作者:
cformula
時間:
2011-8-26 15:20
不是看的很懂..程度不夠吧!
作者:
Ell_57
時間:
2011-9-7 13:25
真的需要它。谢谢
歡迎光臨 Android 台灣中文網 (https://apk.tw/)
Powered by Discuz! X3.1