微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android中的GPS服务

我对Android中的服务有疑问.我想知道从GPS获取Location变量的最佳方法是什么.我正在使用一个实现GPS模块的服务进行地理定位的应用程序.为了获取位置,我在类静态和公共方法静态中创建一个变量,从类外部调用,就是这样.要从我在课堂上使用的GPS中检索位置:

位置mLocation = ServiceGPS.getLocation();
ServiceGPS类具有以下方法

public static Location getLocation(){
    返回mLocation;
}

在这种情况下,我真的没有看到绑定到服务的重点,因为我只需要调用静态方法.我也在考虑做一个基类或实现LocationListener,但这种方式非常简单,它可以工作并节省代码写入.

非常感谢您的帮助,并与我分享您的知识.

BR.大卫.

解决方法:

你不能只是“获取”Android中的位置,因为它可能来自不同的地方(最后的位置,GPS接收器,wifi网络位置或移动数据网络),更重要的是它可能需要时间收到位置或者你可能根本没有(例如GPS存在,但在室内没有信号).

获取位置可能需要一些时间的事实意味着您必须在单独的线程上运行位置搜索,除非存在先前缓存的位置.否则,您的应用程序将锁定,直到获取该位置(这可能永远不会发生,例如在没有GPS或地理定位网络的设备上).

这是您需要阅读,摘要和使用的关键页面
http://developer.android.com/guide/topics/location/obtaining-user-location.html
如果您不熟悉Android中的地理位置,请使用示例代码开始.

我学到的为应用添加地理位置的东西是……

>永远不要假设有位置提供商.设备可能没有网络连接,也没有GPS.您需要在代码中处理错误以处理这些方案.
>始终使用线程进行地理查找以使应用程序保持响应
>尽可能使用Android最后知道的位置,它提供快速锁定.您可以将背景中的位置更新为更准确的位置.
>如果应用程序可能在无法进行地理定位的设备上运行(例如更便宜的平板电脑,Google TV等),则会将该位置存储在偏好设置中,以便用户将其定位一次,并在每次加载应用时使用该应用(如果找不到一个新的位置)
>创建专门用于管理获取位置,线程等的类通常是有意义的.然后,应用程序中的其他类可以像您建议的那样简单地调用静态方法,但挑战是您用来获取值的代码变量mLocation!
>你可能根本没有获得一个位置 – 不要以为你愿意,设备和背景各不相同.
>除非您必须拥有非常准确的位置,否则请始终使用网络位置提供商,因为它们通常非常快.从新鲜的GPS位置查找可能非常慢,用户将感到无聊和沮丧.谷歌地图似乎很快,但它实际上做了相当多的位置缓存,你会发现有时候获得一个新的位置很慢.

我推荐Mark Murphy在Android上的电子书,他有很好的报道和地址定位http://commonsware.com/的源代码示例

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐