Android中的GPS服务

Day*_*man 3 gps android

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

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

public static Location getLocation(){return mLocation; }

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

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

BR.大卫.

Oll*_*e C 9

你不能只是"获取"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/