Android手机应用开发之手机GPS定位
生活随笔
收集整理的這篇文章主要介紹了
Android手机应用开发之手机GPS定位
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
最近在做Android手機(jī)應(yīng)用開(kāi)發(fā),還是很有意思的。其實(shí)如果只是做簡(jiǎn)單手機(jī)應(yīng)用開(kāi)發(fā)而不是手機(jī)游戲開(kāi)發(fā)的話(huà),還是很簡(jiǎn)單的。把主要的控件掌握了,就可以開(kāi)發(fā)簡(jiǎn)單的應(yīng)用了。
下面主要說(shuō)一下在Android中使用GPS功能。
開(kāi)發(fā)由于GPS功能時(shí),常與Google Map相關(guān),因此先推薦一篇講解Google Map的文章: http://mobiforge.com/developing/story/using-google-maps-android
該文章詳細(xì)的講解了Android中如何使用Google Map的各種功能。文章甚好,強(qiáng)烈推薦。
看完了如上文章后,我們就來(lái)講解下如何使用GPS。
首先在AndroidManifest.xml中添加位置服務(wù)權(quán)限:
然后再看如下代碼例:
先注冊(cè)LocationManager,然后就可以通過(guò)訪問(wèn)getLastKnownLocation得到當(dāng)前的GPS坐標(biāo)。是不是很簡(jiǎn)單。
既然是GPS,我們當(dāng)然不只是想知道當(dāng)前的位置,更重要的是要隨著位置的移動(dòng),GPS信息也要更新。那么我們需要怎么做呢?
還先看如下代碼例:
聲明自己的LocationListener后,調(diào)用requestLocationUpdates方法,就可以得到最新的GPS信息。
常用方法說(shuō)明: public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)
當(dāng)時(shí)間超過(guò)minTime(單位:毫秒),或者位置移動(dòng)超過(guò)minDistance(單位:米),就會(huì)調(diào)用listener中的方法更新GPS信息。
官方文檔中有如下說(shuō)明:
1. minTime的值最好是不小于60000(即:1分鐘),這樣會(huì)更加高效且節(jié)電。 2. 如果要盡可能實(shí)時(shí)的更新GPS信息,請(qǐng)將minTime和minDistance都設(shè)置成0。
下面主要說(shuō)一下在Android中使用GPS功能。
開(kāi)發(fā)由于GPS功能時(shí),常與Google Map相關(guān),因此先推薦一篇講解Google Map的文章: http://mobiforge.com/developing/story/using-google-maps-android
該文章詳細(xì)的講解了Android中如何使用Google Map的各種功能。文章甚好,強(qiáng)烈推薦。
看完了如上文章后,我們就來(lái)講解下如何使用GPS。
首先在AndroidManifest.xml中添加位置服務(wù)權(quán)限:
| 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 | } |
既然是GPS,我們當(dāng)然不只是想知道當(dāng)前的位置,更重要的是要隨著位置的移動(dòng),GPS信息也要更新。那么我們需要怎么做呢?
還先看如下代碼例:
| 01 | LocationListener locLis = new MyLocationListener(); |
| 02 | locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 10, |
| 03 | ????????????????locLis); |
| 04 | ... |
| 05 | ... |
| 06 | ... |
| 07 | public class MyLocationListener implements LocationListener { |
| 08 | ????@Override |
| 09 | ????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 | ?? |
| 19 | ????@Override |
| 20 | ????public void onProviderDisabled(String provider) { |
| 21 | ????} |
| 22 | ?? |
| 23 | ????@Override |
| 24 | ????public void onProviderEnabled(String provider) { |
| 25 | ????} |
| 26 | ?? |
| 27 | ????@Override |
| 28 | ????public void onStatusChanged(String provider, int status, Bundle extras) { |
| 29 | ????} |
| 30 | } |
常用方法說(shuō)明: public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)
當(dāng)時(shí)間超過(guò)minTime(單位:毫秒),或者位置移動(dòng)超過(guò)minDistance(單位:米),就會(huì)調(diào)用listener中的方法更新GPS信息。
官方文檔中有如下說(shuō)明:
1. minTime的值最好是不小于60000(即:1分鐘),這樣會(huì)更加高效且節(jié)電。 2. 如果要盡可能實(shí)時(shí)的更新GPS信息,請(qǐng)將minTime和minDistance都設(shè)置成0。
總結(jié)
以上是生活随笔為你收集整理的Android手机应用开发之手机GPS定位的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python百度ai文字识别、不精确、进
- 下一篇: 5角星画法 android,Androi