- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
androidgps代码分析
几个主要的文件及目录:
frameworks/base/location/* (client部分)
frameworks/base/core/jni/android_location_GpsLocationProvider.cpp (JNI 部分)
frameworks/base/services/java/com/android/serverLocationManagerService.java(server 部分)
hardware/libhardware_legacy/gps/* (hardware 接口部分)
一是:控制通道,也就是由app层发起的比如enable或disable的控制命令。
example代码调用LocationManager.java ,再通过IPC来实现真正的调用。LocationManager.java 主要负责通信。具体的实现在LocationManagerService.java中。
接口文件是ILocationManager.aidl。在service中根据provider来创建了一个GpsLocationProvider.java,并通过JNI调 android_location_GpsLocationProvider.cpp,该文件再通过GPSInterface来调用硬件的具体实现代码。
二是: enable后的Location数据和状态上报。对于数据的上报过程,主要就是关注几个callback函数。主要代码分析如下:
在 GpsLocationProvider.java文件中enable()一个GpsLocationProvider时,会启动一个 GpsEventThread,该线程主要就是调用了native_wait_for_event();通过JNI调用到了 anroid_location_GpsLocationProvider.cpp中的 android_location_GpsLocationProvider_wait_for_event();而该event的触发是由来自硬件驱动 Location数据包的上报,底层的硬件驱动程序会把raw gps data通过pipe或其他的方式,送出来,这个要看gps驱动的实现了,我们通过自己实现的GpsInterface 来解析raw gps data并调用loaction_callback()来触发event并copy Location数据,等待到event后再调用GpsLocationProvider.java中的reportLocation()上报Location.
除了框架代码外,我们自己需要实现的代码也分为两块,一个是app层的代码,app层我也提供一个简单的代码例子,请参考以下代码:
public class LocationSample extends Activity implements LocationListener {
private LocationManager lm;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1l,1l,this);
}
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
Log.d(TAG,location: );
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
Log.d(TAG,provider disable);
}
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
您可能关注的文档
- 7个未来WEB设计的趋势.docx
- 7天学院前台理论考试试题(第2套)答案.doc
- 7培训系统.doc
- 7小二型水库施工组织设计(改).doc
- 7直线与圆锥曲线的位置关系1.doc
- 7管理学复习题之七.doc
- 7论GMPSSOPHACCP三者的关系及其整合方法江西局邱晓雨(改后稿031031).doc
- 8-5谷物食品生产技术Convertor.doc
- 8-9直线与圆锥曲线的关系.doc
- 8-4难溶电解质的电离平衡.doc
- 【我国家事诉讼中未成年人权益程序保障的现状及完善建议】12000字.docx
- 【银鹭食品公司内部控制缺陷案例研究】开题报告(含提纲).doc
- 【龙大美食货币资金风险控制探究】13000字.doc
- 【学校美育教师专业发展支持研究】3700字.docx
- 【H城投公司基于平衡记分卡的企业绩效评价优化设计】15000字.docx
- 【在线民宿评论对游客预订决策的影响实证研究】11000字.docx
- 【小型裁切机的机械设计】论文中期报告2600字.doc
- 【公共利益视野下影视作品著作权的保护研究】9900字.docx
- 【“二维码”侵权行为的研究】8500字.docx
- 【乡镇政府公共服务能力建设研究—以某乡镇为例】20000字.doc
文档评论(0)