基于android平台的设备管理框架的制作方法

文档序号:6509990阅读:547来源:国知局
基于android平台的设备管理框架的制作方法
【专利摘要】一种基于android平台的设备管理框架,包括应用程序层、管理服务模块、管理守护进程模块、功能动态库层和内核驱动层;应用程序层用于实现调用所述设备管理框架的接口;管理服务模块用于将所述功能接口转化成命令调用,并通过Android中Socket套接字LocalSocket客户端传送所述命令;管理守护进程模块通过Android中Socket套接字LocalSocket服务端接收所述命令,并解析,根据解析结果调用功能动态库层;功能动态库层用于封装与内核驱动层进行交互的接口;内核驱动层用于提供Linux操作系统的标准操作接口给功能动态库层调用,同时可操作各硬件设备。
【专利说明】基于android平台的设备管理框架
【技术领域】
[0001]本发明具体涉及一种基于android平台的设备管理框架。
【背景技术】
[0002]Android平台是一个标准的通用平台,在Telematics多媒体车载终端项目中新增了许多Android原生系统中没有的设备,如DVD、GP10、音频管理设备等。针对这些设备的控制管理,目前米用JNI (Java Native Interface,即Java本地调用)方式进行控制。
[0003]JNI在Android平台中所处的代码层次位置如图1所示,在Android平台上,JNI使得在Java虚拟机内部运行的Java代码能够与用C/C++等其它编程语言编写的应用程序和库进行交互,从而将Java代码和C/C++等其它编程语言代码紧密联系在一起。使用JNI方式进行设备管理的缺点在于:
使用JNI方式进行程序开发需要同时实现Java、JN1、C/C++三个层次的代码,开发工作量大,开发难度也较大;应用程序代码如果要移植到其它平台上,C/C++代码需要重新编写,移植的工作量较大,可移植性差;从逻辑结构方面来看,一个JNI动态库只适合管理一个设备,随着设备的增加,难以通过JNI方式对这些设备进行统一管理;在使用过程中存在多个应用程序同时访问一个设备的可能,造成设备访问不可控,系统稳定性差。
[0004]此外,Java虚拟机为Java代码提供了完善的安全机制使得Java代码不会导致程序崩溃、滥用数据等,而一旦使用了 JNI,此安全机制就无能为力了。

【发明内容】

[0005]本发明所要解决的技术问题在于提供一种基于android平台的设备管理框架,解决了众多非Android原生的设备管理混乱的问题,极大地提高了设备的稳定性;避免了多个应用程序同时对底层设备直接操作存在的安全等隐患,极大地提高了设备的安全性。
[0006]本发明是通过以下技术方案解决上述技术问题的:一种基于android平台的设备管理框架,包括从上至下设置的应用程序层、管理服务模块、管理守护进程模块、功能动态库层和内核驱动层;
所述应用程序层:用于实现调用所述设备管理框架的接口 ;通过绑定接口绑定管理服务模块,同时调用管理服务模块中AIDL接口文件提供的功能接口 ;
所述管理服务模块:用于为各设备创建AIDL接口文件;同时用于将AIDL接口文件中提供的功能接口转化成命令调用,并通过Android中Socket套接字LocalSocket客户端传送所述命令;
所述管理守护进程模块:通过Android中Socket套接字LocalSocket服务器端接收所述命令,并解析命令,根据命令解析结果调用功能动态库层;
所述功能动态库层:用于封装与内核驱动层进行交互的接口 ;
所述内核驱动层:用于提供Linux操作系统的标准操作接口给功能动态库层调用,同时可操作各设备。[0007]进一步地,所述命令的格式结构为:
设备名称O功能接口名称#参数1#参数2#...#参数N ;N为大于2的整数。
[0008]进一步地,所述功能动态库层包括复数个功能动态库,所述内核驱动层包括复数个内核驱动模块,每所述设备均对应有一功能动态库和一内核驱动模块;即各功能动态库与各内核驱动模块 对应。
[0009]进一步地,所述管理守护进程模块根据命令解析结果调用功能动态库层的具体实现过程如下:
管理守护进程模块从所述命令的格式结构中获取设备名称、功能接口名称和参数,当第一次调用该设备时,先加载功能动态库层,并调用功能动态库层中该设备的初始化接口,进行设备初始化;当非第一次调用该设备时,直接调用功能动态库层中该设备的命令处理接口。
[0010]进一步地,所述功能动态库层封装与内核驱动层进行交互的接口的具体实现过程如下:
所述设备的功能动态库从管理守护进程模块处获取所述功能接口名称和参数,同时从该设备的功能动态库中查找功能接口名称与功能接口函数指针映射表,根据所述功能接口名称,查找到功能接口函数指针并调用对应的功能接口函数,根据所述功能接口函数可实现调用Linux操作系统的标准操作接口。
[0011]进一步地,当所述应用程序层所调用的功能接口需要获取响应数据时,相应设备的内核驱动模块返回响应数据给该设备的功能动态库,该设备的功能动态库将所述响应数据以“功能接口名称+’ #’ +响应数据”格式上报给管理守护进程模块,管理守护进程模块将响应数据封装成“设备名称+’ +功能接口名称+’ #’ +响应数据”格式后,依次上传至所述管理服务模块、应用程序层。
[0012]进一步地,所述Linux操作系统的标准操作接口为open接口、read接口、write接口、ioctl 接口或 close 接口。
[0013]进一步地,所述管理服务模块还发送心跳包给所述管理守护进程模块,用于监测和更新管理服务模块连接情况。
[0014]本发明的有益效果在于:
1、可以很好地将Android系统中非Android原生的设备进行统一控制和管理;
2、能够很好地支持底层(即各设备)至上层(即应用程序层)的数据互通;
3、为应用程序开发提供统一的接口,降低应用程序开发的难度,提高应用程序的代码复用和可移植性;
4、设备管理框架逻辑结构清晰,解决了众多非Android原生的设备管理混乱的问题,极大地提高了设备的稳定性;
5、通过对设备的统一控制和管理,避免了多个应用程序同时对底层设备直接操作存在的安全等隐患,极大地提高了设备的安全性。
【专利附图】

【附图说明】
[0015]下面参照附图结合实施例对本发明作进一步的描述。
[0016]图1为现有的基于Android平台的设备管理方法的原理框图。[0017]图2为本发明基于android平台的设备管理框架的框图。
[0018]图3为本发明基于android平台的设备管理框架的流程图。
【具体实施方式】
[0019]请参阅图2-3,一种基于android平台的设备管理框架,包括从上至下设置的应用程序层、管理服务模块、管理守护进程模块、功能动态库层和内核驱动层;所述功能动态库层包括复数个功能动态库,所述内核驱动层包括复数个内核驱动模块,每一设备均对应有一功能动态库和一内核驱动模块;即各功能动态库与各内核驱动模块 对应。例如:功能动态库包括:DVD功能动态库、GPIO功能动态库、AUDIO功能动态库等;内核驱动模块包括:UART内核驱动模块、GPIO内核驱动模块、音频管理设备内核驱动模块等;且所述DVD功能动态库与UART内核驱动模块对应,所述GPIO功能动态库与GPIO内核驱动模块对应,所述AUDIO功能动态库与音频管理设备内核驱动模块对应。
[0020]所述应用程序层:用于实现调用操作所述设备管理框架的接口,对设备管理框架的调用操作均由应用程序层发起;通过绑定接口绑定管理服务模块,同时调用管理服务模块中AIDL接口文件提供的功能接口 ;即应用程序层通过bindService接口绑定管理服务模块,绑定之后会获得管理服务模块中相应设备的Binder服务(Binder是Android系统提供的一种进程间通信机制),获得Binder服务后即可调用Binder提供的AIDL (AndroidInterface Definition Language,即Android接口描述语言)接口来执行所需功能。
[0021]所述管理服务模块:位于Android系统中的Java框架层,用于为各设备创建AIDL接口文件;时用于将AIDL接口文件中提供的功能接口转化成命令调用,并通过AndroidLocalSocket客户端(即为Socket套接字)传送所述命令;管理服务模块还可发送心跳包给管理守护进程模块,用于监测和更新管理服务模块连接情况。
[0022]所述AIDL接口文件只是接口声明文件,需要管理服务模块完成这些AIDL接口文件的代码实现,即管理服务模块将应用程序层所调用的功能接口生成命令格式并向管理守护进程模块发送该命令。
[0023]所述命令的格式结构为:
设备名称O功能接口名称#参数1#参数2#...#参数N ;如:DeviceName@Function#parameterl#parameter2#...#parameterN,其中,DeviceName 表不设备名称,Function 表不功能接口名称,parameterl#parameter2#...SparameterN则表示传递参数,参数之间使用符号,#,分隔。例如命令“GP100 GP10_UP #fmpowon”,其中,“GP10”表示设备名称,“GP10_UP ”表示功能接口名称,“ fmpowon ”表示功能接口的参数。
[0024]所述管理守护进程模块:位于Android系统中的HAL层(即硬件抽象层),其通过Android LocalSocket服务器端接收所述命令,并解析命令,根据命令解析结果调用功能动态库层。
[0025]所述管理守护进程模块根据命令解析结果调用功能动态库层具体实现过程如下:
管理守护进程模块从所述命令的格式结构中获取设备名称、功能接口名称和参数,当第一次调用该设备时,先加载功能动态库层,并调用功能动态库层中该设备的初始化接口XXX.1nit (所述XXX是从命令中解析得到的设备名称),进行设备初始化;当非第一次调用该设备时,直接调用功能动态库层中该设备的命令处理接口 XXX_processCmd。例如:
获取的设备名称为“GPIO”设备时,若是第一次调用“GPIO”设备,则先加载功能动态库层,并调用功能动态库层中的“GPIO”设备初始化接口 GPIO_init,进行设备初始化,若不是第一次调用“GPIO”设备,则直接调用功能动态库层中“GPIO”设备的命令处理接口 GPIO_processCmdo
[0026]所述功能动态库层:用于封装与内核驱动层进行交互的接口,在XXX_processCmd函数中实现,所述XXX_pr0CeSsCmd函数用于实现命令处理,并为所述管理守护进程模块提供命令处理调用接口 ;具体实现过程如下:
所述设备的功能动态库从管理守护进程模块处获取所述功能接口名称和参数,同时从该设备的功能动态库中查找功能接口名称与功能接口函数指针映射表,根据所述功能接口名称,查找到功能接口函数指针并调用对应的功能接口函数,根据所述功能接口函数可实现调用Linux操作系统的标准操作接口,从而可调用所述内核驱动层。所述Linux操作系统的标准操作接口可为open接口、read接口、write接口、ioctl接口或close接口。
[0027]所述内核驱动层:用于提供Linux操作系统的标准操作接口给功能动态库层调用,同时可操作各设备(即硬件);相应设备接受操作命令,执行功能,并在必要时返回响应数据。
[0028]当所述应用程序层所调用的功能接口需要获取响应数据时,相应设备的内核驱动模块返回响应数据给该设备的功能动态库,该设备的功能动态库将所述响应数据以“功能接口名称+’ #’+响应数据”格式上报给管理守护进程模块,管理守护进程模块将响应数据封装成“设备名称+’ @,+功能接口名称+’ #’ +响应数据”格式后,依次上传至所述管理服务模块、应用程序层。
[0029]例如:响应数据封装格式为“AUD10@GetMainVolume#80”,“AUDIO”表示音频设备名称,“GetMainVoIume”表示功能接口名称,“80”表示响应数据即音量值。
[0030]本发明具有以下优点:
1、可以很好地将Android系统中非Android原生的设备进行统一控制和管理;
2、能够很好地支持底层(即各设备)至上层(即应用程序层)的数据互通;
3、为各应用程序开发提供统一的接口(即所述管理服务模块中的AIDL接口文件),降低应用程序开发的难度;由于各个应用程序调用统一的接口,这提高了应用程序的代码复用率,以及具有在Android不同版本之间的可移植性;
4、设备管理框架逻辑结构清晰,解决了众多非Android原生的设备管理混乱的问题,极大地提高了设备的稳定性;
5、通过对设备的统一控制和管理,避免了多个应用程序同时对底层设备直接操作存在的安全等隐患,极大地提高了设备的安全性;
6、设备管理框架采用标准而又灵活的体系结构设计,非常易于后续扩展和裁剪外围设备(即非Android原生的设备),同时易于在Android平台的不同项目之间推广和复用。
【权利要求】
1.一种基于android平台的设备管理框架,其特征在于:包括从上至下设置的应用程序层、管理服务模块、管理守护进程模块、功能动态库层和内核驱动层; 所述应用程序层:用于实现调用所述设备管理框架的接口 ;通过绑定接口绑定管理服务模块,同时调用管理服务模块中AIDL接口文件提供的功能接口 ; 所述管理服务模块:用于为各设备创建AIDL接口文件;同时用于将AIDL接口文件中提供的功能接口转化成命令调用,并通过Android中Socket套接字LocalSocket客户端传送所述命令; 所述管理守护进程模块:通过Android中Socket套接字LocalSocket服务端接收所述命令,并解析命令,根据命令解析结果调用功能动态库层; 所述功能动态库层:用于封装与内核驱动层进行交互的接口 ; 所述内核驱动层:用于提供Linux操作系统的标准操作接口给功能动态库层调用,同时可操作各设备。
2.如权利要求1所述的基于android平台的设备管理框架,其特征在于: 所述命令的格式结构为: 设备名称O功能接口名称#参数1#参数2#...#参数N ;N为大于2的整数。
3.如权利要求2所述的基于android平台的设备管理框架,其特征在于:所述功能动态库层包括复数个功能动态库,所述内核驱动层包括复数个内核驱动模块,每所述设备均对应有一功能动态库和一内核驱动模块;即各功能动态库与各内核驱动模块对应。
4.如权利要求3所述的基于android平台的设备管理框架,其特征在于:所述管理守护进程模块根据命令解析结果调用功能动态库层的具体实现过程如下: 管理守护进程模块从所述命令的格式结构中获取设备名称、功能接口名称和参数,当第一次调用该设备时,先加载功能动态库层,并调用功能动态库层中该设备的初始化接口,进行设备初始化;当非第一次调用该设备时,直接调用功能动态库层中该设备的命令处理接口。
5.如权利要求4所述的基于android平台的设备管理框架,其特征在于:所述功能动态库层封装与内核驱动层进行交互的接口的具体实现过程如下: 所述设备的功能动态库从管理守护进程模块处获取所述功能接口名称和参数,同时从该设备的功能动态库中查找功能接口名称与功能接口函数指针映射表,根据所述功能接口名称,查找到功能接口函数指针并调用对应的功能接口函数,根据所述功能接口函数可实现调用Linux操作系统的标准操作接口。
6.如权利要求5所述的基于android平台的设备管理框架,其特征在于: 当所述应用程序层所调用的功能接口需要获取响应数据时, 相应设备的内核驱动模块返回响应数据给该设备的功能动态库,该设备的功能动态库将所述响应数据以“功能接口名称+’ #’+响应数据”格式上报给管理守护进程模块,管理守护进程模块将响应数据封装成“设备名称+’ @,+功能接口名称+’ #’ +响应数据”格式后,依次上传至所述管理服务模块、应用程序层。
7.如权利要求1所述的基于android平台的设备管理框架,其特征在于:所述Linux操作系统的标准操作接口为open接口、read接口、write接口、ioctl接口或close接口。
8.如权利要求1所述的基于android平台的设备管理框架,其特征在于:所述 管理服务模块还发送心跳包给所述管理守护进程模块,用于监测和更新管理服务模块连接情况。
【文档编号】G06F9/44GK103488478SQ201310394192
【公开日】2014年1月1日 申请日期:2013年9月3日 优先权日:2013年9月3日
【发明者】李培明, 杨磊, 范少卓 申请人:厦门雅迅网络股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1