首页 > 编程知识 正文

Android GPS学习笔记二--架构及其初始化流程,rest软件架构学习笔记

时间:2023-05-05 15:29:00 阅读:157680 作者:881

1.GPS体系结构

定位服务体系结构

如上图所示:

定位服务分为四个层次。

最上面是APP应用层,以java为主。

第二层是框架层,该层包括供应调用的接口及其系统服务的实现,主要通过Java语言实现。

第三层是硬件抽象层,本层用C及c语言实现,框架层和共享库层用JNI连接。

最底层是Linux内核层,整个安卓系统都基于Linux内核

FW--HW之间的通信在android8.0以上的版本中有点复杂。 android8.0以后加入了HIDL,JNI通过HIDL间接地与HW进行通信。

2.GPS初始化过程

将位置服务添加到SystemServer.java并在systemrunning中打开

try { location=newlocationmanagerservice (上下文; servicemanager.addservice (context.location _ service,location ); }catch(throwablee )报告开始定位管理器(wtf ),e ); ----------------- try---- if (位置f!=null(locationf.systemrunning ); }catch(throwablee ) report wtf (notifyinglocationservicerunning ),e ); }2. locationmanagerservice.system running//prepare providers

//prepareprovidersloadproviderslocked (; updateProvidersLocked (; 3 .加载loadproviderslocked//gnsslocationprovider

因为这里只以GPS为对象,所以只贴了关于GNSS的代码。 实际上,加载的提供程序中还有与passive、fuse、network相关的提供程序,请自己进行分析。

gnsslocationprovider.is supported (! wcn _ disabled has _ GPS _ feature (//createagpslocationprovidergnsslocationprovider=newgnssslocationprovider mgnssbatchingprovider=GNSS provider.getgnssbatchingprovider (; mgnssmetricsprovider=GNSS provider.getgnssmetricsprovider (; mgnsstatusprovider=GNSS provider.getgnsstatusprovider (; mnetinitiatedlistener=GNSS provider.getnetinitiatedlistener (; 自适应锁定(GNSS provider; mreal providers.put (location manager.GPS _ provider,gnssProvider ); mgnssmeasurementsprovider=GNSS provider.getgnssmeasurementsprovider (; mgnssnavigationmessageprovider=GNSS provider.getgnssnavigationmessageprovider (; mgpsgeofenceproxy=GNSS provider.getgpsgeofenceproxy (; }else{if(d ) log.d ) tag,' gnss location provider not support!' ); }4.加载之前必须首先确定是否支持GNSS,但实际上在调用isSupproted之前,GNSS会初始化providers。 即,是图中的class_init_naitve。 如果支持,isSupported将始终返回true,创建GnssLocationProvider对象,并将其添加到链表中进行记录。

5.updateproviderslocked-- " updateproviderlistenerslocked

if (启用) { p.enable; 监听器0 (if )应用程序quirementslocked (提供程序); } } else { p.disable (); }根据相应提供程序的打开状态,此步骤中的功能将关闭或打开。 例如,如果Gnss未打开,则会运行p.enable ()以打开Gnss。

关于GPS定位功能的使用,其实更简单。 这里只做简单的说明。

接受定位服务

2 .判断是否支持GPS定位

3 .如果支持,requestLocationUpdates将请求定位更新

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。