当前位置: 代码迷 >> Android >> 安卓Gps定位初始探究
  详细解决方案

安卓Gps定位初始探究

热度:11   发布时间:2016-04-28 04:13:37.0
安卓Gps定位初步探究

无聊在寝室瞎鼓捣,写出个程序可以用手机Gps模块定位了,当时还是挺激动的呢,下面把我瞎鼓捣的过程分享一下~~~。


先放一下成品图吧:左边是定位时截取的图,右边是定位完成时截取的图。

?

在程在程序里是有线程辅助用户判断Gps信息是在更新的。就是最下面两行字啦~~。

?



?首先,要使用手机里的Gps模块是要权限的,在安卓工程的AndroidManifest.Xml文件内添加这么一条语句就行了。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

?

? ? ?这条语句的位置参照下图:



? ? ? ?好,配置完了Xml文件那么这个程序就有获取位置信息的权限了。

? ? ? ?要得到位置信息,就要在Activity里实例化一个LocationManager,再给这LocationManager申请使用Gps模块,再返回位置信息。就这三个步骤!!!

final LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);		locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000, 1, new TestLocationListener());		Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

?

? ? ? ?来解释一下这三条语句吧,第一条就是实例化一个LocationManager对象了,说他要用系统服务里面的位置服务;第二天就是给这个LocationManager申请地点更新需要用到的Gps模块,第二个参数1000表示隔1s更新一次位置信息,第三个参数1表示如果距离变化超过1m则更新一次位置信息,若两个参数都为0 表示尽可能频繁的请求位置信息第四个参数是一个位置监听器了。

? ? 好,有了前两条语句,于是加上第三条语句就可以得到位置信息啦,需要什么信息就在location对象里面取就行啦。不过这里会有一个问题,就是没开Gps模块的时候或者还没有定位完成的时候是没有位置信息的,如果这时去取location里的信息,就会报空指针异常。所以我们还得稍微处理一下。

比如像下面这样:

?

if (location != null) {// 如果有GPS信息的话			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");			double latitude = location.getLatitude();			double longitude = location.getLongitude();			long Time = location.getTime();			float Speed = location.getSpeed();			float Accuracy = location.getAccuracy();			double Altitude = location.getAltitude();			a1.append("最后一次的位置信息:");			a1.append("\n精度: " + Accuracy);			a1.append("\n纬度 : " + latitude);			a1.append("\n经度 : " + longitude);			a1.append("\n海拔: " + Altitude);			a1.append("\n速度: " + Speed + "m/s");			a1.append("\n速度: " + Speed * 3.6 + "km/h");			a1.append("\n时间 : " + sdf.format(Time));		} else			a1.setText("无地理位置信息");

? ? ? 这里的a1是一个TextView。

?

? ? ? 最后实现一下上面三行语句中第二个语句里面的第四个参数TestLocationListener吧,这个类要继承LocationListener接口,实现里面的方法,悄悄告诉你,其实这里什么都不写也是可以的~~~~。

?

  相关解决方案