- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
android手机定位.doc
android手机定位
做移动互联网就不太可能不碰手机端的开发。上周为了项目需要,俺也挽袖子抡胳膊开始写起了android程序,还好有java基础,倒也上手快,写了几个小程序,主要都是关于定位方面的。网上也搜得到一些相关的文章和教程,但给出的例子效果不太好,而且感觉只有其表,却不明其理。因此写出此文,分享一些我的经验。虽然是以android为主,但是我想对其它平台的开发也应该有些帮助。
这篇文章侧重于制定一个合理的定位方案。
手机定位的方式 先科普一些基础知识吧。
最简单的手机定位方式当然是通过GPS模块(现在大部分的智能机应该都有了)。GPS方式准确度是最高的,但是它的缺点也非常明显:1,比较耗 电;2,绝大部分用户默认不开启GPS模块;3,从GPS模块启动到获取第一次定位数据,可能需要比较长的时间;4,室内几乎无法使用。这其中,缺点 2,3都是比较致命的。需要指出的是,GPS走的是卫星通信的通道,在没有网络连接的情况下也能用。另外一种常见的定位方式是基站定位。大致思路 就是采集到手机上的基站ID号(cellid)和其它的一些信息(MNC,MCC,LAC等等),然后通过网络访问一些定位服务,获取并返回对应的经纬度 坐标。基站定位的精确度不如GPS,但好处是能够在室内用,只要网络通畅就行。还有Wifi定位。和基站定位类似,这种方式是通过获取当前所用的wifi的一些信息,然后访问网络上的定位服务以获得经纬度坐标。因为它和基站定位其实都需要使用网络,所以在Android也统称为Network方式。最后需要解释一点的是AGPS方式。很多人将它和基站定位混为一谈,但其实AGPS的本质仍然是GPS,只是它会使用基站信息对获取GPS进行辅助,然后还能对获取到的GPS结果进行修正,所以AGPS要比传统的GPS更快,准确度略高。
Android提供的定位接口 在写第一个程序之前,我对android的幻想是这样的:提供了一个函数,能够让我直接从GPS模块中读取经纬度坐标,还有一个函数,能够直接访问网络,获得基站定位的结果。所以,我只需要调用调用函数就可以搞定这一切。现 实和理想总是有很大的差距。Android上的开发完全不是这么回事儿。前面提到过,GPS模块从启动到获取数据之间时间会比较长,可能有2~3分钟时 间,所以,如果真有这么一个函数,那么你的程序可能会被这个函数阻塞几分钟。我想正是基于这样的考虑,android上要想获取定位信息,必须使用异步方 式。
代码大概是这个样子:
01 locManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
02 locListener = new LocationListener() {
03 @Override
04 public void onStatusChanged(String provider, int status,
05 Bundle extras) {
06 // TODO Auto-generated method stub
07 }
08 @Override
09 public void onProviderEnabled(String provider) {
10 // TODO Auto-generated method stub
11 }
12 @Override
13 public void onProviderDisabled(String provider) {
14 // TODO Auto-generated method stub
15 }
16 @Override
17 public void onLocationChanged(Location location) {
18 // TODO Auto-generated method stub
19 mobileLocation = location;
20 }
21 };
22 locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener);
这是从网上随便摘一段。简单解释一下代码:首先,你需要创建一个LocationManager;然后定义出自己的 LocationListener,LocationListener包涵了好几个成员函数,它们都是回调函数。最
您可能关注的文档
- 2013中山会计继续教育90分答案.docx
- 2013九年级模拟考试.doc
- 2013企业不得不防的网络安全威胁.doc
- 2013低碳经济 考试试题 100分.doc
- 2013医保常识培训.pptx
- 2013印东 实习专题报告.doc
- 2013届嘉兴文综二模卷(含答案).doc
- 2013年5月19日在长沙烈士公园举办的长沙首届社会公益组织展.doc
- 2013年7月保险销售从业人员资格考试 试卷一解析.doc
- 2013年一级笔试试题及答案.doc
- 2024年秋江苏开放大学刑事诉讼法第2次平时作业答案.pdf
- 2024年秋江苏开放大学公共政策分析第二次形考作业答案.pdf
- 2024年秋江苏开放大学中国近现代史纲要作业三范文.pdf
- 2024年秋江苏开放大学物流管理第三次形考作业答案.pdf
- 2024年秋江苏开放大学建设工程经济平时作业三答案.docx
- 国开电大《护理管理学》形考任务1-4参考答案.pdf
- 2024年秋江苏开放大学电路分析基础第二次作业答案.pdf
- 2024年秋江苏开放大学电路分析基础第三次作业答案.pdf
- 2024年秋江苏开放大学控制工程基础第三次作业答案.docx
- 2024年秋江苏开放大学工程制图与CAD△作业3答案.docx
文档评论(0)