- 相关推荐
安卓设备管理论文
近几年来,随着移动互联网时代的到来,Android操作系统已经从最初的智能手机领域逐渐进入教育、医疗、军事、汽车、家居等重要领域,并已经成为移动平台领域当之无愧的王者。
【1】基于安卓车载终端平台的设备管理框架构建
摘要
2011 年1月至3月,Android占领了全球大部分的手机市场,市场份额首次超过了塞班系统上升到全球第一[1];
2012 年第一季度数据显示,Android占领了中国68.4%的智能手机操作系统市场,在全球市场占有率为52.5%[2].
Android在 国内的发展不仅仅局限于作为智能手机操作系统,现在已经开始向作为其他移动终端操作系统的方向发展,例如移动互联网设备、数字机顶盒、车载移动终端等领域。
Android平 台是一个标准的通用平台,而在多媒体车载终端项目中增加了许多Android原生系统中没有的设备,例如DVD、GPIO、音频管理设备等。
针对这些设备的控制,在Android原 生 系 统 中 最 常 用 的 做 法 就 是 使 用JNI方 式 进 行控 制。
JNI是Java Native Interface的缩写,即“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车载终端平台上,对这些设备进行统一管理变得非常重要。
为了实现 对 这 些 设 备 的 统 一 管 理,本 文 提 出 并 设 计 了 一 种 基 于Android Local Socket 和 Service 的方式,实现专门针对 Android车载终端平台的设备管理框架。
该框架能够实现对系统中非Android 原生的众多设备进行统一控制和管理。
1 设备管理框架的逻辑结构图
基于 Android 车 载终 端 平 台 的 设 备 管 理 框 架 的 逻 辑 结构,如图 1 所示。
设备管理框架的逻辑结构图
设备管理框架包括下述层次:应用程序、设备管理服务、守护进程、设备功能动态库、内核设备驱动,以及设备硬件。
2 设备管理框架的实现原理
按照从上到下的调用层次关系,整个设备管理框架的设计实现原理如下。
2.1 应 用程序层
系统中对设备管理框架的调用操作均由应用程序发起。
Android 应 用程序通过服务绑定接口绑定设备管理服务,绑定之后应用程序可获得设备管理服务中的 DVD、GPIO、音频管 理 等 所 有 设 备 的 AIDL(Android Interface DefinitionLanguage, 即 Android 接 口描述语言)接口。
这些接口就是DVD、GPIO、 音 频 管 理 等 所 有 设 备,通 过 设 备 管 理 服 务 的AIDL 接 口提供给应用程序调用的功能接口。
2.2 设备管理服务层
设备管理服务位于 Android 系统中的 Java 框架层,介于Android 应 用 程 序 和 设 备 管 理 守 护 进 程 之 间,并 通 过 提 供AIDL 接 口为应用程序提供接口调用。
设备管理服务向上层应用程序提供 AIDL 调用接口,与下层的设备管理守护进程通过 Socket 通信方式进行数据通信,作用至关重要。
通过对整个设备管理框架的功能划分,设备管理服务需要实现如下功能:
1)设 备管理服务感知应用程序的调用操作,并将应用程序 的 调 用 转 化 为 命 令 格 式,并 将 这 个 命 令 通 过 AndroidLocal Socket(本 质上即为 Socket 套 接字)通信传送给设备管理守护进程进行处理。
2)建 立和维护与设备管理守护进程之间的数据通信,确定一套合理规范的通信协议。
由于传输命令的内容较为简单,设备管理服务向设备管理守护进程传输的命令格式定义为:“Device Name @ Function # parameter1 # parameter2 # …#parameter N”,其中“Device Name” 表 示设备名称,“Function” 表示 功 能 接 口 名 称,“parameter1#parameter2#…#parameter N”则表 示 传 递 的 参 数,参 数 之 间 使 用 符 号 '#' 分 隔。
以 命 令“GPIO@GPIO_UP#fmpowon” 为 例,其 中“GPIO” 表 示 设 备 名称,“GPIO_UP”表示功能接口名称,“fmpowon”表示功能接口的参数。
3) 为 DVD、GPIO、 音 频 管 理等 每 个 设备 各 创 建(即 手 动编辑生成)一个 AIDL 接口文件,以供应用程序调用。
这里的AIDL 文 件只是接口声明,需要在设备管理服务的其它 Java文件中完成这些 AIDL 接口的代码实现,实现的主要内容是生成命令格式并向守护进程发送该命令。
由于设备管理服务对应用程序提供了设备管理框架内管理的所有设备的功能接口,设备管理服务的主要功能之一就是生成命令格式,命令格式中的“Device Name”字段即包含了要调用的外围设备模块,设备管理服务通过这个字段就可以将 AIDL 接口与外围设备联系起来。
4) 能 稳定地为 Android 应 用程序提供服务,数据处理及时,协调应用程序之间的执行和数据同步。
2.3 设 备管理守护进程层
设备管理守护进程位于 Android 系统中的 HAL 层(即硬件抽象层),介于设备管理服务和设备功能动态库之间,通过Android Local Socket 与上层的设备管理服务 进 行数 据 通 信,向下层则调用相应设备功能动态库提供的接口,起着信息枢纽的作用。
通过对整个设备管理框架的功能划分,设备管理守护进程需要实现如下功能:
1)通过 Local Socket 与上层的设备管理服务层进行Socket数据通信,通过发送心跳包检测链路机制监测和更新上层客户端的连接情况,准确接收设备管理服务层发送的命令包并解析命令格式。
2)根 据设备管理服务中规定的命令格式,从接收到的命令中解析得到调用的目标设备名称,这里假设是“GPIO”设备,如果是第一次调用该设备,则首先加载该设备的功能动态库,然后调用设备功能动态库中的初始化接口 XXX_init(其 中“XXX” 是 从 命 令 中 解 析 得 到 的 设 备 名 称),
例 如GPIO_init,进 行初始化工作,否则直接调用该设备功能动态库 的 命 令 处 理 接 口 XXX_process Cmd,例 如 GPIO_processCmd,进 行处理。
3)由 于有些功能接口存在获取响应数据的需求,这要求设备管理守护进程能够接收来自设备功能动态库的响应数据并向设备管理服务层进行传递,传递的数据封装格式定义为:设 备 名 称 +'@' + 功 能 接 口 名 称 +'#' + 有 效 数 据。
以“AUDIO@Get Main Volume#80” 为 例, “AUDIO” 表 示 音 频 管 理设备名称,“Get Main Volume”表示功能接口名称,即获取系统主音量,“80”表示有效数据,即音量值。
4) 能稳定地为设备管理服务层提供 Socket 连接的服务端,数据处理及时、可靠。
2.4 设备功能动态库层
在 Linux 系统中,Linux 内核提供了用户空间与内核空间进行交互的一组接口,即系统调用。
这些系统调用接口允许应用程序受限地访问硬件设备。
系统调用是应用程序访问内核空间的唯一手段;除了异常和陷入以外,它们是访问内核唯一的合法入口[5].
设备管理框架中采用设备功能动态库和设备管理守护进程分离的设计思想。
设备功能动态库主要封装与内核设备驱动进行交互的接口,应用程序向硬件模块传递的命令也将到达设备功能动态库。
即设备功能动态库向上层提供接口给设备管理守护进程调用,通过 Linux 系统调用向下层调用内核设备驱动。
设备功能动态库层向下层调用内核设备驱动的基本过程如下:
1)在 设备命令处理函数(即 XXX_process Cmd,其 中 XXX代表设备名称)实现中,获取守护进程传递下来的功能接口名称和参数;
2) 根 据功能接口名称查找设备动态库中的功能接口名称与功能接口函数指针映射表;
3) 根 据查找到的功能接口函数指针调用对应的功能接口函数;
4)在 功能接口函数实现中,调用 Linux 操 作系统提供的系统调用接口,实现对内核设备驱动的调用。
同时,接收内核设备驱动返回的数据,并将数据返回给守护进程。
数据上报给守护进程的格式定义为:“功能接口名称+'#'+有效数据”.
2.5 内 核设备驱动层
内核设备驱动直接与底层硬件打交道,并按照硬件设备的具体工作方式,驱动硬件设备进行工作。
内核设备驱动作为应用空间和硬件之间的纽带,使得应用空间只需通过调用系统调用接口就可以让硬件完成要求的工作[6].
Linux 内 核通过系统调用接口,如 open、read、write、ioctl、close 等接口,与上层的设备功能动态库进行通信[7],并通过设备驱动代码操作下层的设备硬件,完成硬件操作功能。
2.6 设 备硬件层
设备硬件接收来自内核设备驱动的操作命令[8],执行硬件功能实现,并在必要时返回响应数据给应用程序。
3 设备管理框架的基本操作流程
设备管理框架的基本操作流程为:
1)Android 应用程序通过绑定服务接口绑定设备管理服务,绑定之后,通过设备管理服务的 AIDL 接口文件,即可获得设备管理服务中 DVD、GPIO、音频管理等所有设备提供的功能接口。
2)应 用程序调用设备管理服务 AIDL 接 口文件中提供的功能接口。
3)设 备管理服务感知应用程序的调用操作,将应用程序的 调 用 转 化 为 命 令 格 式[9],并 将 该 命 令 通 过 Android LocalSocket 方 式发送给设备管理守护进程。
4)设备管理守护进程接收到调用命令,根据已定义的命令格式,对接收到的命令进行解析,得到调用的设备名称。
如果是第一次调用该设备[10],则首先加载该设备的功能动态库,并调用动态库中的初始化接口 XXX_init 进行初始化工作,否则 直 接 调 用 该 设 备 功 能 动 态 库 的 命 令 处 理 接 口XXX_process Cmd 进 行命令处理。
5)设备功能动态库接收守护进程传递下来的功能接口名称和参数,并通过 Linux 操作系统提供的系统调用接口调用设备内核驱动。
6)设备内核驱动通过操作设备硬件寄存器等方式实现向下层调用硬件操作功能。
7)设备硬件接收内核设备驱动的硬件操作命令,执行硬件功能实现并在必要时返回响应数据。
4 结 论
根据 Android 车载终端设备的特点,本文提出了设备管理框架的概念,设计并实现了专门针对 Android 车载终端的设备管理框架,将系统中非 Android 原生的设备进行统一控制和管理。
通过设计、实现及使用该设备管理框架,为应用程序开发提供了统一的接口,降低了应用程序开发的难度,提高了应用程序的代码复用和可移植性;通过对设备的统一控制和管理,避免了多个应用同时对同一硬件进行操作存在的安全等隐患,有效地提高了系统的安全性。
设备管理框架采用标准而又灵活的体系结构设计,非常易于后续扩展,同时易于在 Android 平台的不同项目之间推广和复用,给设备系统带来了多方面的显着有益效果,达到了设计要求。
参考文献:
[1]宋 滟泓。
Android独 大引二次开发潮中国厂商少积累难有作为[J]. IT时代周刊, 2012(6): 51-52.
[2] 百 度 百 科 . Android [EB/OL]. [2015 -01 -25].
[3] 韩 超,梁泉 . Android 系 统原理及开发要点详解 [M]. 北 京 :电子工业出版社,2010.
[4] 阿 耀 . JNI:使 用 Java 调 用 本 地 C 代 码 [EB/OL].(2011-09-16) [2015 -01 -25].
[5] ( 美)拉 芙(Love,R) 着;陈 莉君,康华译 . Linux 内 核 设计与实现[M]. 3版。
北京: 机械工业出版社,2011.
[6] 宋 宝华。
Linux设 备驱动开发详解 [M]. 2版 .北 京 : 人 民邮电出版社,2010.
[7] 李 先妹。
数 字化变电站网络通信技术的研究[J]. 陕 西电力,2011(6):37-40.
[8] 徐 进,徐荣森,梅正茂。
基 于1394b总 线仿真设备的WDM驱动开发[J]. 电子设计工程,2015(2):63-66.
[9] 李刚。
基于SOA的Web GIS系统框架设计分析[J]. 陕西电力,2011(2):38-41.
[10]张 银勇,吴剑,李向党 . 某 推进系统气路启动特性研究 [J].火箭推进,2012(6):20-23,51.
【2】学校设备管理系统Android客户端功能的开发
摘要
随着高校信息化建设速度的深入发展,高校所使用的设备越来越多,种类也越来越复杂,而原有管理方式无法适应现代化管理的需要,出现了许多不足,从而对高校设备的管理成为重要研究问题。
因经,拥有一个功能完备、操作便捷的设备管理系统,是众多高校设备管理的首选。
根据设备管理系统的需求,我们对设备管理信息系统进行了详细的设计,包括Web端和Android客户端。
Web端主要分为六大模块,包括设备管理、记录管理、报表统计管理、库存管理、权限管理和系统管理功能模块;Android客户端分为查看用户信息、查看领用记录、扫描检索设备、搜索设备等模块。
该系统不仅能够使设备管理者对设备信息的录入、审核、查询和统计等功能快速方便的操作。
对于设备使用者来说,也可登录移动终端,搜索相关设备、查看领用设备详情等操作,给用户带来了很大的便捷。
本文侧重基于Android平台[1]的客户端功能的设计与实现,基于eclipse的开发环境,采用JAVA语言,使软件具有良好平台移植性和可扩展性,该APP软件使得设备管理系统的功能更加完善,提高用户操作的方便性。
1 Android客户端功能需求分析
在设备管理信息系统中引入Android客户端,主要为了方便用户的操作,用户无须使用电脑在web端登录,就可完成相关的操作。
比如检索设备处是否存在某个设备,以便于领用申请,查询自己的借用设备记录等。
Android客户端具体的功能需求结构图如图1所示。
Android客户端功能结构图
1)查看用户信息:用户使用工号从客户端成功登录后,即可查看自己的信息。
2)扫描检索设备信息:用户成功登录后,通过扫一扫功能扫描相应二维码、条形码到设备库检索设备,若存在该设备将获取设备信息,并显示给用户。
3)查看领用记录:用户成功登录后,可以方便查看以往领用的设备记录,无须登录web端系统进行查看。
4)搜索设备:用户成功登录后,通过搜一搜功能,并输入相应关键词进行检索,若存在相关设备,将获取设备相应的数据显示给用户。
2 Android客户端功能的设计与实现
2.1 Android客户端登录模块设计与实现
这种登录方式,需要用户输入用户名(教师工号)和密码进行登录,基于Android平台进行设计与实现。
登录模块在进行设计时,页面布局需要用xml格式编写,该xml声明一个垂直的线性布局,布局中包括了两个子线性布局,其中第一个线性布局包含一个Image View,用来设置登录界面logo;第二个线性布局通过包含两个EdiTextText(接收用户账号和密码的输入)、一个登录Button控件以及两个Text View,它们分别作用于设置用户忘记密码连接和App版权信息。
其中各个控件的样式通过Android的背景选择器selector[2]来定义,并在控件的background属性进行设置。
实现登录功能需要用到Login Activity和Loading Activity,打开客户端首先会启动一个欢迎引导界面Welcome Activity,其次才启动登录界面Login Activity,界面如图2所示。
当用户输完账号密码点击登录按钮之后,启动一个透明背景加载等待的Loading Activity挡在Login Activity前面,这样做的好处是防止用户多次点击登录按钮触发登录事件。
该Loading Activity首先获取Login Activity传过来用户账号和密码,然后开启一个线程发送请求到服务器进行验证。
若服务器返回成功登录的状态时,这时Loading Activity会通知Login Activity进行界面跳转并且调用finish()方法关闭自己,Login Activity接收到登录通知,就会启动主页面Main Activity,主界面如图3所示。
登录界面
主界面
2.2查看用户信息模块的设计与实现
用户成功登录客户端后,点击图3主界面中的“个人信息”或者“设置”中的个人信息项,Activity会向服务器的User-s CRUDController控制器发出“get Specific User Role Info”请求,控制器会以json形式返回用户信息数据,紧接着Activity调用Jso-n Util类解析传送数据展示给用户,如图4所示,相关代码如下:
List
【安卓设备管理论文】相关文章:
安卓论文开题报告范文09-30
安卓实习心得01-10
安卓总结与展望10-01
安卓实习总结10-06
安卓项目总结10-06
安卓在物业管理改进系统中的运用论文10-08
安卓开发实习心得06-07
安卓实习报告总结10-06
安卓开发实习总结10-06