- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
eoe 移动 发者社区
定定位位策策略略
知晓用户所在的位置可以使应用更加的智能并且能够给用户传递更好的信息 。当 发⼀款基于位置服务的android应用时,
可以利用GPS和android 的“Network Location Provider” (网络位置内容提供者组件) 。尽管GPS是十分精确的,但是它的
缺点也十分的令⼈恼火,比如只在户外⼯作 、易耗费电池的电量以及返回用户位置缓慢等 。而android 的“Network
Location Provider”使用移动信号塔和Wi_ Fi信号来定位用户的位置 。这种方式可以在室内、户外提供位置信息并且反应迅
速耗电更少 。在应用中可以同时使用GPS和“Network Location Provider”来获取用户的位置信息,也可以仅仅使用其中的
⼀个 。
确确定定用用户户位位置置 的的挑挑战战
从⼀个移动设备上获取用户的位置是十分复杂的。读取位置出错 (读取无响应)或者不准确可能有很多原因,下面就是列
举⼀些其中的原因: * * 多种位置来源* :GPS ,Cell_ ID和Wi_ Fi都可以提供用户位置的线索,决定使用和信任哪种位置来源
需要在精确度 、速度和电池效率上做谨慎的权衡 。 * * 用户经常移动位置* :因为用户的位置经常变化,所以必须常常考虑
因用户移动而重新计算用户的位置 。 * * 不同的精度* :从不同的位置来源计算出的位置信息可能不符合他们的精确度 。⼀
种位置源10秒钟前获取的位置可能比从其他位置源获取的当前位置更加准确 。也可能⼀种位置源10秒前的位置信息和当前
的位置信息⼀样 。 基于这些存在的问题,获取用户真实的位置信息就变得相对困难 。本文档提供⼀些信息来帮助你面
对“如何获取更真实可靠的位置信息” 的挑战 。除此之外,还提供了⼀些思路和经验,来帮助你在应用程序中给用户提供准
确,反应灵敏的地理位置 。
位位置置更更新新请请求求
在解决上述的有关位置错误之前,首先简单的介绍下怎么在 ndroid设备上获取用户位置 。
在 ndroid 中,获取用户的位置是靠⼀系列的回调函数来完成的。可以通过调用LocationManager (位置管理器)的
requestLocationUpdates()方法来更新用户的位置,但此方法必须要传递⼀个 LocationListener实例作为参数 。
LocationListener必须实现⼀些回调函数,这些回调函数会在用户位置变化和服务状态发生变化时被位置管理器调用 。
举例,下面的代码就演示了怎么定义⼀个 LocationListener来实现位置更新的监听 。 // 获取系统位置服务的引用
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOC T ION_SERVICE) ;
// 定义对位置变化的监听函数 LocationListener locationListener = new LocationListener() { public void
onLocationChanged(Location location) { // Called when a new location is found by the network location provider.
makeUseOfNewLocation(location) ; }
} ;
// 向位置服务注册监听函数来接受位置更新
locationManager.requestLocationUpdates(LocationManager.NETWORK_ PROVIDER, 0, 0, locationListener) ;
requestLocationUpdates() 的第⼀个参数是Location Provider (位置提供者)的使用类型 。 (本例中使用的是基于手机信
号塔和Wi_ FI基站的网络位置提供者) 。可以通过第⼆个和第三个参数来控制监听函数接受更新的频率 。具体点讲即第⼆
个参数是通知之间的最⼩时间间隔,第三个是通知之间最⼩的距离变化 。将两个的值设置为零可以尽可能频繁的获取位置
的通知 。最后⼀个参数是 接受位置更新回调函数LocationListener 。
为了使用GPS提供者来获取位置的更新,
文档评论(0)