如何获取gps卫星导航定位,解决getLastKnownLocation返回null

来源:互联网 发布:tarjan算法 lca 编辑:程序博客网 时间:2024/04/30 15:05

在用android开发地图导航的时候不知道大家有没有遇到过使用getLastKnownLocation()函数返回的location却总是显示为null的情况,本人在这几天就遇到过这问题,妹的。。。足足折磨我一天的时间,太痛苦咯~~,好在经过一天的上网找资料,查文档,纵欲把问题给解决咯。。。呼~~;好了 废话不多说。。直接上代码。

在开始代码之前,先说明,如果你要在模拟器上测试,并且使用MapView的话,你必须申请到google map key,至于申请的办法,网上很多,也写得很详细,在这里我就不多赘述咯。。呵呵,还要在AndroidManifest.xml文件中加入


还要在application间加上<uses-library android:name="com.google.android.maps"/>:如图


好了。。。接下来就是activity的代码咯。。

首先创建一个类继承与MapActivity。。这里注意,一定要继承MapActivity。。其他的Activity不行的。。注意咯


接下来就是要实例化各种属性:

首先,实例化LocationManager:



检测gps功能是否打开

获取到最好的筛选器^ ^我自叫他筛选器的。。


注意:这里的通过getLastKnownLocation()获取到的location有可能为null,别管他 让他去就是咯


注意:上面的mapView.displayZoomControls(true);一定要加。。要不然的话会出现map不能动态的更新显示经纬度的变化.

在注册LocationListener后,我们就要重写activity的onPause()和onResume()


上面的gps监听只是监听gps在已经开启了的状态的改变,也就是说gps已经开启了,但它是出于开启状态中的可见呢?还是开启状态中的暂停。。。等等

而我们也要给LocationManager注册一个gps监听,用于监听gps是否已经顺利的启动,还是说依然没有启动


注意下面这部分你可以将它封装成一个内部类形式,当然,你也可以将他写到onCreate函数内~~


依旧在onCreate内的代码,设置map的显示模式和放大缩小的按钮


接下来这部分可以不再onCreate内写,将它封装成一个函数调用,获取最佳的提供者。。也就是我自说的筛选器。。呵呵呵

好了。。代码都写完了。。接下来就是运行看结果了。。我们这些代码是2.3版本的

测试。。。。


在ddms上输入一个经纬度,点击send,出现如下的地图


不知道这是哪里~~呵呵呵呵

在改变经纬度


地图将会改变


看。。。。地图发生了变化^ ^。。。因为要上课咯 所以先闪咯~~~

由于我是第一次写博客,所以哪位大神飘过过请勿见笑。。。。。。

请多多指教 

原创粉丝点击