安卓设备管理论文.doc_第1页
安卓设备管理论文.doc_第2页
安卓设备管理论文.doc_第3页
安卓设备管理论文.doc_第4页
安卓设备管理论文.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安卓设备管理论文 近几年来,随着移动互联网时代的到来,Android操作系统已经从最初的智能手机领域逐渐进入教育、医疗、军事、汽车、家居等重要领域,并已经成为移动平台领域当之无愧的王者。 【1】基于安卓车载终端平台的设备管理框架构建 摘要 2011年1月至3月,Android占领了全球大部分的手机市场,市场份额首次超过了塞班系统上升到全球第一1; 2012年第一季度数据显示,Android占领了中国68.4%的智能手机操作系统市场,在全球市场占有率为52.5%2. Android在国内的发展不仅仅局限于作为智能手机操作系统,现在已经开始向作为其他移动终端操作系统的方向发展,例如移动互联网设备、数字机顶盒、车载移动终端等领域。 Android平台是一个标准的通用平台,而在多媒体车载终端项目中增加了许多Android原生系统中没有的设备,例如DVD、GPIO、音频管理设备等。 针对这些设备的控制,在Android原生系统中最常用的做法就是使用JNI方式进行控制。 JNI是JavaNativeInterface的缩写,即“Java本地接口”.在Android系统代码层次结构中,JNI处于Java代码层与C/C+本地代码层之间的位置。 在Android系统中提供JNI机制,使得在Java虚拟机内部运行的Java代码能够调用C/C+本地层的应用程序和库,从而将Java代码和C/C+本地层代码紧密联系在一起3.但是,在Android车载终端平台上使用常规JNI方式进行设备管理的缺点在于: 使用JNI方式进行应用程序开发需要同时实现Java、JNI、C/C+3个层次的代码,开发工作量大,开发难度也较大;应用程序如果要移植到其它平台上,C/C+本地层代码需要重新编写,移植的工作量较大; 从逻辑结构方面考虑,一个JNI动态库一般只适合管理一个外围设备,随着外围设备的不断增加,难以对这些设备进行统一管理;而且系统使用过程中存在多个应用程序同时访问一个设备的可能,易造成设备访问不可控,系统稳定性差。 此外,Java虚拟机为Java代码提供了完善的安全机制使得Java代码不会导致程序崩溃、滥用数据等,而一旦使用了JNI机制,这种安全机制就无能为力了4. 可见,在包含较多非Android原始设备的Android车载终端平台上,对这些设备进行统一管理变得非常重要。 为了实现对这些设备的统一管理,本文提出并设计了一种基于AndroidLocalSocket和Service的方式,实现专门针对Android车载终端平台的设备管理框架。 该框架能够实现对系统中非Android原生的众多设备进行统一控制和管理。 1设备管理框架的逻辑结构图 基于Android车载终端平台的设备管理框架的逻辑结构,如图1所示。 设备管理框架的逻辑结构图 设备管理框架包括下述层次:应用程序、设备管理服务、守护进程、设备功能动态库、内核设备驱动,以及设备硬件。 2设备管理框架的实现原理 按照从上到下的调用层次关系,整个设备管理框架的设计实现原理如下。 2.1应用程序层 系统中对设备管理框架的调用操作均由应用程序发起。 Android应用程序通过服务绑定接口绑定设备管理服务,绑定之后应用程序可获得设备管理服务中的DVD、GPIO、音频管理等所有设备的AIDL(AndroidInterfaceDefinitionLanguage,即Android接口描述语言)接口。 这些接口就是DVD、GPIO、音频管理等所有设备,通过设备管理服务的AIDL接口提供给应用程序调用的功能接口。 2.2设备管理服务层 设备管理服务位于Android系统中的Java框架层,介于Android应用程序和设备管理守护进程之间,并通过提供AIDL接口为应用程序提供接口调用。 设备管理服务向上层应用程序提供AIDL调用接口,与下层的设备管理守护进程通过Socket通信方式进行数据通信,作用至关重要。 通过对整个设备管理框架的功能划分,设备管理服务需要实现如下功能: 1)设备管理服务感知应用程序的调用操作,并将应用程序的调用转化为命令格式,并将这个命令通过AndroidLocalSocket(本质上即为Socket套接字)通信传送给设备管理守护进程进行处理。 2)建立和维护与设备管理守护进程之间的数据通信,确定一套合理规范的通信协议。 由于传输命令的内容较为简单,设备管理服务向设备管理守护进程传输的命令格式定义为:“DeviceNameFunction#parameter1#parameter2#parameterN”,其中“DeviceName”表示设备名称,“Function”表示功能接口名称,“parameter1#parameter2#parameterN”则表示传递的参数,参数之间使用符号#分隔。 以命令“GPIOGPIO_UP#fmpowon”为例,其中“GPIO”表示设备名称,“GPIO_UP”表示功能接口名称,“fmpowon”表示功能接口的参数。 3)为DVD、GPIO、音频管理等每个设备各创建(即手动编辑生成)一个AIDL接口文件,以供应用程序调用。 这里的AIDL文件只是接口声明,需要在设备管理服务的其它Java文件中完成这些AIDL接口的代码实现,实现的主要内容是生成命令格式并向守护进程发送该命令。 由于设备管理服务对应用程序提供了设备管理框架内管理的所有设备的功能接口,设备管理服务的主要功能之一就是生成命令格式,命令格式中的“DeviceName”字段即包含了要调用的外围设备模块,设备管理服务通过这个字段就可以将AIDL接口与外围设备联系起来。 4)能稳定地为Android应用程序提供服务,数据处理及时,协调应用程序之间的执行和数据同步。 2.3设备管理守护进程层 设备管理守护进程位于Android系统中的HAL层(即硬件抽象层),介于设备管理服务和设备功能动态库之间,通过AndroidLocalSocket与上层的设备管理服务进行数据通信,向下层则调用相应设备功能动态库提供的接口,起着信息枢纽的作用。 通过对整个设备管理框架的功能划分,设备管理守护进程需要实现如下功能: 1)通过LocalSocket与上层的设备管理服务层进行Socket数据通信,通过发送心跳包检测链路机制监测和更新上层客户端的连接情况,准确接收设备管理服务层发送的命令包并解析命令格式。 2)根据设备管理服务中规定的命令格式,从接收到的命令中解析得到调用的目标设备名称,这里假设是“GPIO”设备,如果是第一次调用该设备,则首先加载该设备的功能动态库,然后调用设备功能动态库中的初始化接口XXX_init(其中“XXX”是从命令中解析得到的设备名称), 例如GPIO_init,进行初始化工作,否则直接调用该设备功能动态库的命令处理接口XXX_processCmd,例如GPIO_processCmd,进行处理。 3)由于有些功能接口存在获取响应数据的需求,这要求设备管理守护进程能够接收来自设备功能动态库的响应数据并向设备管理服务层进行传递,传递的数据封装格式定义为:设备名称+功能接口名称+#+有效数据。 以“AUDIOGetMainVolume#80”为例,“AUDIO”表示音频管理设备名称,“GetMainVolume”表示功能接口名称,即获取系统主音量,“80”表示有效数据,即音量值。 4)能稳定地为设备管理服务层提供Socket连接的服务端,数据处理及时、可靠。 2.4设备功能动态库层 在Linux系统中,Linux内核提供了用户空间与内核空间进行交互的一组接口,即系统调用。 这些系统调用接口允许应用程序受限地访问硬件设备。 系统调用是应用程序访问内核空间的唯一手

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论