我对Android中的服务有疑问。我想知道从GPS获取Location变量的最佳方法是什么。我正在使用一个实现GPS模块的服务进行地理定位的应用程序。为了获取位置,我在类静态和公共方法静态中创建一个变量,从类外部调用,就是这样。要从我在课堂上使用的GPS中检索位置:
位置mLocation = ServiceGPS.getLocation(); ServiceGPS类具有以下方法:
public static Location getLocation(){ 返回mLocation; }
在这种情况下,我真的没有看到绑定到服务的重点,因为我只需要调用静态方法。我也在考虑做一个基类或实现LocationListener,但这种方式非常简单,它可以工作并节省代码写入。
非常感谢您的帮助,并与我分享您的知识。
BR。大卫。
答案 0 :(得分:9)
你不能只是“获取”Android中的位置,因为它可能来自不同的地方(最后已知的位置,GPS接收器,wifi网络位置或移动数据网络),更重要的是它可能来自花时间接收位置或者你可能根本没有得到一个位置(例如GPS存在,但室内没有信号)。
获取位置可能需要一些时间,这意味着您必须在单独的线程上运行位置搜索,除非存在先前缓存的位置。否则,您的应用程序将锁定,直到获取该位置(这可能永远不会发生,例如在没有GPS或地理定位网络的设备上)。
这是您需要阅读,摘要和使用的关键页面: http://developer.android.com/guide/topics/location/obtaining-user-location.html 如果您不熟悉Android中的地理位置,请使用示例代码开始。
我学会了为应用添加地理位置的内容......
我推荐Mark Murphy在Android上的电子书,他有优秀的地理位置覆盖范围和源代码示例http://commonsware.com/
答案 1 :(得分:0)
我不仅仅是获得这个职位...... 此外,我正在检查提供者调用该服务的另一种方法。并且根据我的意愿,我将不会抛出异常。我后来做的处理不是问题。我很感谢你Ollie的信息。但我的问题是:
在这种情况下,我真的没有看到绑定到服务的重点,因为我只需要调用静态方法。我也在考虑做一个基类或实现LocationListener,但这种方式非常简单,它可以工作并节省代码写入。
实际上我在服务中运行我的位置,因此在另一个线程中,所以我不明白你的观点。 似乎问题是,Android中的位置如何运作? 干杯 大卫