您的位置:首页 > 移动开发 > Android开发

Android手机应用开发之手机GPS定位

2012-09-12 16:57 671 查看
最近在做Android手机应用开发,还是很有意思的。其实如果只是做简单手机应用开发而不是手机游戏开发的话,还是很简单的。把主要的控件掌握了,就可以开发简单的应用了。

下面主要说一下在Android中使用GPS功能。

开发由于GPS功能时,常与GoogleMap相关,因此先推荐一篇讲解GoogleMap的文章:http://mobiforge.com/developing/story/using-google-maps-android

该文章详细的讲解了Android中如何使用GoogleMap的各种功能。文章甚好,强烈推荐。

看完了如上文章后,我们就来讲解下如何使用GPS。

首先在AndroidManifest.xml中添加位置服务权限:

1
<
uses-permission

android:name
=
"android.permission.ACCESS_FINE_LOCATION"

/>
然后再看如下代码例:

1
LocationManagerlocMan=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
2
Locationloc=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信息也要更新。那么我们需要怎么做呢?

还先看如下代码例:

01
LocationListenerlocLis=
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(Locationloc){
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(Stringprovider){
21
}

22
23
@Override
24
public

void
onProviderEnabled(Stringprovider){
25
}

26
27
@Override
28
public

void
onStatusChanged(Stringprovider,
int
status,Bundleextras){
29
}

30
}
声明自己的LocationListener后,调用requestLocationUpdates方法,就可以得到最新的GPS信息。

常用方法说明:
publicvoidrequestLocationUpdates(Stringprovider,longminTime,floatminDistance,LocationListenerlistener)

当时间超过minTime(单位:毫秒),或者位置移动超过minDistance(单位:米),就会调用listener中的方法更新GPS信息。

官方文档中有如下说明:

1.minTime的值最好是不小于60000(即:1分钟),这样会更加高效且节电。
2.如果要尽可能实时的更新GPS信息,请将minTime和minDistance都设置成0。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: