`
izuoyan
  • 浏览: 9215722 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android中用Google Map API出现的getLastKnowLocation空指针异常

 
阅读更多

这个问题也困扰我很久,为什么之前用模拟器测试有时可以成功有时却失败,而使用真机测试却从来没有成功,很是郁闷

首先大家应该记得下面一段代码的作用:

通过上面的程序我们获得了最佳的服务提供方式,可是经过我多次实验发现每次获得的最佳提供者都是GPS方式,这就意味之后我们操作获取位置时使用过GPS方式获取的,那么接着我们通常是如下面方式获取位置的

注意上面的getLastKnownLocation方法,这个方法的意思是获取上一次知道的位置,这里问题是如果我们是第一次启动这个程序,那么上一次的位置是多少呢?我也很纳闷

我们知道在模拟器里面是使用geo fix 122 22这样的命令来模拟当前的位置的,我发现每次模拟位置的时候,第一次启动程序都会出错,而后面启动才获取到了位置,这也许就是那个方法的弊端吧,不知道自己有没有理解错误。

那么在真机上测试,这样行的通吗?和可惜,每次启动真机程序使用GPS来定位的时候,GPS模块已经打开,使用其他定位软件也可以找到当前的位置,可是自己写的那个程序却不能获取到位置。

参考网友的建议如:

有网友写了下面的程序来替代上面的循环:

上面的程序通过不断判断位置是否为空,直到获取到位置为止,他的解释是getLastKnownLocation一次不能成功,需要多次才能获取到,这刚好验证了我的猜想,之前每次第一次启动都不能成功的情况。可是我的那样做了除了一直循环外还是没有得到位置。

直到看到一个国外网页上这样获取位置,才知道是前面的那段服务提供的筛选条件使得我每次获取位置提供者的时候得到的结果都是GPS服务,而这样的方式并不见得好,后来我干脆把服务获取方式写成了直接使用网络方式获取

事实证明问题就出在位置服务获取方式上,改成使用网络方式后可以在真机上获取到当前位置。

那么我写的程序终于可以在真机上跑起来了,贴张图看看,呵呵

上面文字显示没有找到地址是因为网速的问题,本来应该通过地址编码找到相关位置的信息的,这是我做的一个小程序,使用Google Map API开发的,完成了些基本的地图功能,可以在上面做许多扩展的,目前LBS服务很火爆,什么UC乐园,大众点评,网易八方,街旁等,国外还有著名的foursquare,希望与有这方面兴趣的朋友一起学习交流。

下面是从国外网站上摘取的,解释getLastKnownLocation的使用方法:

The call to request update for a location is not blocking, hence it wont wait there. Also the provider in emulator may not have been started.

A possible check could be to see if the settings in it disable gps provider ? then send geo fix.

However, I would use Location Listener, it would be ideal in your case since you need a geo fix to proceed further.Location Listener is Used for receiving notifications from the LocationManager when the location has changed. You can unregister the listener after first geofix.

Note: It can take some time on device to get current location, and even on device this can return null.

下面是两个国外描述这方面问题的网页:

http://marakana.com/forums/android/examples/42.html

http://stackoverflow.com/questions/1608632/android-locationmanager-getlastknownlocation-returns-null

分享到:
评论

相关推荐

    在Android中用textview实现简单的小说分页

    在Android应用开发中,创建一个可以分页显示小说内容的功能是一项常见的需求。本文将深入探讨如何使用TextView在Android环境中实现这一功能,同时考虑到字体大小的调整以及字符串处理的灵活性。 首先,TextView是...

    VC/MFC中通过WebBrowser控件调用google map,并实现用户输入地理坐标跳转

    本程序实现了如下功能: (1)VC中通过浏览器控件,加载指定html,在html中用javascript调用...(4)压缩包里含google map API中文参考手册,在javascript中用的到的。 对于想在VC中调用google map 的新手是极大的帮助。

    Android中用ViewPage实现真实翻页效果

    "Android中用ViewPage实现真实翻页效果"这个主题就是关于如何在Android应用中创建类似真实书籍翻页的效果。这种效果通常被用于电子书阅读器或者滑动浏览多页面内容的应用中,给用户带来更生动和自然的互动体验。 `...

    Android ArcGIS 部分API中文说明文档

    Android ArcGIS 部分API中文说明文档 Android ArcGIS 部分API中文说明文档是 ArcGIS 平台在 Android 系统上的实现,提供了一系列的API来实现地图显示、交互和分析等功能。本文档对 Android ArcGIS 部分API进行了...

    Android代码和相关API

    在Android开发中,代码和相关API是构建应用程序的基础。Android API提供了一系列的类库和接口,使得开发者可以创建丰富的移动应用。以下是一些基于提供的文件名解析出的关键知识点: 1. **Java 5.0 API**:Java 5.0...

    从VFP中用Inet API调用HTTP

    ### 从VFP中用Inet API调用HTTP #### 概述 在Visual FoxPro (VFP) 开发环境中,使用Internet API (Inet API) 来发起HTTP请求是一种常见的技术手段。这种方式允许开发者利用VFP应用程序与互联网进行交互,从而实现...

    在android中用jdbc连接数据库

    在Android平台上,通过Java Database Connectivity (JDBC) 连接数据库是一种常见的技术需求,尤其是在开发需要后台数据支持的应用时。本文将深入探讨如何在Android应用中使用JDBC连接MySQL、Oracle和SQL Server等...

    API大全api大全中文版(包含开发中用到的所有api)

    本资源"API大全api大全中文版(包含开发中用到的所有api)"是一个集合了多种Java API的宝贵资料,由多年的开发经验积累而成,旨在为开发者提供全面的参考。 在Java世界中,API涵盖了标准库(如Java SE、Java EE)、第...

    Android中用Application类实现全局变量

    ### Android中用Application类实现全局变量 在Android开发过程中,我们常常需要在多个组件之间共享数据,例如存储用户的登录状态、应用配置等信息。通常情况下,开发者会利用`SharedPreferences`或者`...

    Android中用xml配置旋转动画项目的要求说明.pdf

    针对"Android中用xml配置旋转动画项目的要求说明",我们将详细讲解如何在Android应用中创建一个使用XML定义的旋转动画。 首先,我们需要明白旋转动画(Rotation Animation)的基本概念。旋转动画是Android动画框架...

    android中用ndk编译c并用jni调用的demo源码

    这个“android中用ndk编译c并用jni调用的demo源码”提供了实践NDK和JNI集成的实例,帮助我们深入理解它们的工作原理和使用方法。 首先,NDK是Android开发的一个组成部分,它允许开发者使用C、C++语言编写部分应用...

    android中用到透明背景的小图标

    在Android应用开发中,设计美观且用户友好的界面是至关重要的。其中,小图标作为界面元素的一部分,常常用于表示各种功能、状态或者导航指示。透明背景的小图标在Android中尤其受欢迎,因为它们能够更好地融入各种...

    android中用json传中文

    解决android 与网站过程中不能传送中文的问题,用json传中文。

    安卓Android源码——写的googlemapapi应用.zip

    这个压缩包“安卓Android源码——写的googlemapapi应用.zip”包含了一个使用Google Maps API的示例应用源代码,对于学习如何在Android平台上实现地图功能具有很高的参考价值。下面我们将详细探讨Android开发中Google...

    Android中用xml配置平移动画的代码清单.pdf

    在Android开发中,动画是提升用户体验的关键因素之一。Android提供了多种动画类型,其中包括补间动画(Tween Animation),它可以实现平移、旋转、透明度变化和缩放等效果。本篇文章将详细探讨如何在Android中使用...

    Android中用CalendarView实现日历的显示样式

    在Android开发中,`CalendarView`是一个常用的组件,用于展示日历视图并允许用户进行日期选择。这个组件提供了一种简洁的方式,让应用程序能够轻松地处理与日期相关的功能。本篇文章将深入探讨如何在Android应用中...

    Android中用xml配置缩放动画的代码清单.pdf

    在Android开发中,动画是提升用户体验的重要手段之一,其中XML配置的缩放动画是常用的动画效果。本篇将详细介绍如何在Android中使用XML来配置缩放动画。 首先,缩放动画(Scale Animation)是Android补间动画...

    javaAPI大全(包含开发中用到的所有api)

    Java API大全是一个全面涵盖Java开发所需的各种类库和接口的集合,它包含了Java语言的核心类库,如`java.lang`, `java.util`, `java.io`, `java.net`等,以及Java标准扩展,如`javax.swing`(用于图形用户界面)和`...

    在VB中用ODBC_API访问数据库.docx

    在VB(Visual Basic)编程环境中,使用ODBC_API(Open Database Connectivity Application Programming Interface)是一种常见的方法来访问和操作各种类型的数据库。ODBC_API提供了一组标准的函数,使得程序员能够...

    Android中用碎片实现滑动切换并且实现与对应活动的绑定与通信

    在Android中用Fragment实现类似于微信或者QQ中的滑动切换界面的功能,并且给每一个Fragment绑定对应的活动。只是一个简单的样本,本人也才接触Android开发没多久,最近结合自己手头在尝试做的事情,实现的这种需求。...

Global site tag (gtag.js) - Google Analytics