Android终端(精选九篇)
Android终端 篇1
1 Android介绍
Android是Google公司在2007年11月正式推出的一款开源的操作系统。Android系统在它推出后仅仅两年的时间,就打败了称霸智能手机市场10年的诺基亚Symbian成为全球最受欢迎的手机操作系统。
1.1 Android的安全机制
Google为Android引进了以下特有的安全机制:应用程序权限机制,组件包装和数字签名。
(1)应用程序权限机制[1]
Android把每个权限定义成一个字符串,开发过程中可以通过在XML Manifest文件中进行权限的声明和请求。权限定义分为两个类别,一类是应用程序在执行时所需要请求的权限,另一类是被其他组件请求的权限。
(2)组件包装
Android通过定义组件的“exported”属性来实现把组件包装在程序内容内。将“exported”属性设置为“false”就是拒绝被其他外部程序调用。
(3)数字签名
Android的所有应用程序必须有数字证书,这个数字证书是可以自签名的。
1.2 Android的系统框架
如图1所示Android的系统框架由4个部分组成:Linux内核层、系统运行库层、应用程序框架层和应用程序层[2]。
(1)Linux内核层
Android的Linux内核层是基于Linux2.6的,它是介于硬件层和其他软件组的一个抽象层次。提供内存管理、安全性、进程管理、驱动模型、网络组等核心服务。
(2)系统运行库层
这一层分成两个部分,系统库和Android运行时库。
系统库是应用层框架库的支撑。它起到了纽带的作用。它主要负责2D和3D绘图、显示合成和支持多种常用的音频、视频格式录制和回放等功能。
Android运行时库又包括核心库和Dalvik虚拟机两部分。核心库提供了Java语言核心库内的大部分功能;Dalvik虚拟机是Android重新设计的一款虚拟机。Dalvik可以在消耗较少的资源情况下,使一台设备同时运行多个虚拟机程序。
(3)应用程序框架层
应用程序框架层为开发者提供开发所需的各种API,常用的组件有:UI组件、Content Providers(提供一种使应用程序之间可以实现数据互相访问和共享的服务)、资源管理(管理字体、图片、组件ID等)、活动管理(它管理了整个程序的生命周期)等。
(4)应用程序层
应用层是和用户交互的一个层次,用户可以看得见和操作的一些应用。Android本身提供了桌面,联系人,拨打电话,浏览器等很多基本的应用程序。开发人员可以使用应用框架提供的API编写自己的应用程序。
2 智能家居远程家电控制系统的组成
整个系统主要包括3个部分:远程控制终端(Android手机或者平板电脑),服务器和家电控制器。先由远程终端发送带有控制命令的数据包到服务器,当服务器收到控制指令之后,再由服务器发送控制命令到相应的家电控制器上[3]。图2是远程家电控制系统的结构图。
在本文中,主要介绍控制终端的设计,下面简单地介绍一下服务器和家电控制终端。服务器收到命令数据时,通过设备类型和子设备号来识别是哪个设备的控制命令,然后将相应的控制命令发送到相应的控制器上。具体的帧格式定义,会在下一章节中讲解。对于家电控制器,分为两种。一种是简单控制电路的通断来控制电器的控制器,主要可控制灯光、冰箱、排风扇等家电,一种是模拟红外遥控器发出信号的控制器,主要可控制空调、电视机等使用红外遥控器的家电。我们有了家电控制器之后,就可以在不对家电做任何的改动的情况下,对家电进行控制。
3 终端程序设计
3.1 传输协议的选择
在智能家居中的应用原则中,TCP和UDP作为目前最常用到的网络通信协议,可以看出TCP是基于连接的协议,UDP是一个无连接的、不可靠的协议,相对于基于流传输的TCP而言,UDP是基于消息传输的,整体上具有传输速度快等优点。通过研究可以看出家用电器的控制信息特点是数据量小,控制信息短,适合用于传送少量数据、对可靠性要求不高的应用环境,因此更适合采用简单的、面向数据报的UDP协议。
3.2 应用层帧格式的定义
由于目前智能家居没有统一的标准,各个不同的系统都是自己定义各个设备的通信协议。表1是本系统家电控制系统应用层报文帧格式的定义。
(1)报头:固定为0x66、0x AD两字节,表示一个报文帧的开始。
(2)数据长度:从报头段0x开始算到命令数据段的最后一个字节总和。表示整个帧的字节数。
(3)路由地址:这个数据位是对路由进行选择。根据部署的网络不同的位置,选择链路质量最好的路由节点进行数据传输。
(4)设备类型:表示家居设备的种类,我们将家电控制系统固定为0x F4。
(5)子设备号:此字段为家电控制系统里的设备分配唯一的地址,这样我们可通过设备类型段和子设备号两个字段唯一标识某个家电设备,便于控制信息的准确有效送达到控制器。
(6)命令数据:装载具体的家电控制命令,告诉家电控制器收到数据之后需要对家用电器做哪些操作。
3.3 Socket套接字
在网络层通过传输层进行数据通信时,常常会遇到多个应用程序提供并发服务的问题,为了区别不同的应用程序进程间的网络通信和连接,就需要使用socket套接字这个接口。对于使用不同的协议通信,TCP是使用socket对象来实现,而UDP是使用Datagram Socket对象来实现。由于我们远程家电控制系统使用的是UDP协议,在这里我只介绍Datagram Socket。
Datagram Socket是用于连接两个端点的分组投递服务,是由Android系统提供的一个公共类。根据编程人员所给的参数,它可以建立与任意可用端口或者与给定端口的连接。
这里我们需要了解的方法有close()、receive(DatagramPacket pack)和send(Datagram Packet pack)。它们分别是关闭套接字、接收数据报和发送数据报。
从上文我们可以看到发送和接收数据报时,我们接收到的是一个Datagram Packet对象。所以在这里必须得提到的就是用来存储数据报数据的final类Datagram Packet。Datagram Packet有多个构造方法,但是它的每个构造方法中一定包括byte[]buf和int length这两个参数。buf是用来存储所要传输的数据,length是表示传输的数据的长度。当然你在创建Datagram Packet对象时,还可以指定接收端的IP地址和端口号[4]。
发送数据报的代码为:
其中portNumber是指服务器的端口号,message是根据应用层帧格式得到的控制命令,server Addr是指服务器的IP地址。
3.4 软件设计流程
图3是整个基于Android远程控制系统软件设计流程图。
为了方便地适用于不同的家电控制系统,我们将服务器的IP地址以一个由用户输入的方式来完成,这样当在一个新的地方安装整套系统时,在无需改变Android安装包的情况下,自己输入新的系统的服务器IP即可实现远程控制。
4 测试结果
本家电控制器在完成设计、调试后,在实际展厅进行控制实验表明该设计可以完成预定功能。在长期的实践和全面测试的过程中,证实本套系统可完成以下功能并且性能稳定。
(1)空调控制:空调开关,模式转换,扫风功能,调节风速;
(2)电视控制:电视遥控(开关、选台、音量调节、电视菜单),电视导航(包括各地省级市级电视台电视节目预告),电视游戏;
(3)灯光控制:各个房间灯光的开关;
(4)风扇控制:各个房间风扇的开关。
如图4所示,是手机控制界面图。从左到右依次是空调控制界面,电视控制界面,灯光和风扇控制界面。
5 小结
本文简要的介绍了基于Android的智能家居远程家电控制的终端设计和关键技术,包括Android的安全机制和内核分析,远程家电控制系统的组成,每个组成部分的功能,应用层帧格式的定义,传输协议的选用以及软件设计流程。并在最后展示了测试结果,证明了基于Android远程家电控制的可行性。与传统的基于Internet的远程家电控制系统相比,基于Android手机的控制系统有着巨大的优势和前景。
参考文献
[1]Shin W,Kwak S,Kiyomoto S,et al.A Small But Non-neg-ligible Flaw in the Android Permission Scheme[J].IEEEInternational Symposium on Policies for Distributed Sys-tems and Net-works,2010:109-110.
[2]赵炯.Linux内核完全注释[M].北京:机械工业出版社,2004.
[3]吴立爽,胡建平.智能电话远程家电控制系统的设计[J].信息技术,2005(9):152-154.
Android终端 篇2
杜圣东 2010年12月
一、引言
Windows操作系统统领PC时代近30年,Linux操作系统更是支撑起了高速稳定的互联网时代。从现在已经是步入发展快车道的移动互联网走到即将到来的全面物联网(Internet of Things)时代,是否拥有自主知识产权的智能终端操作系统,对我国物联网战略及信息安全来讲,十分关键。
如果用人体来比做物联网,那我们的眼睛、鼻子、耳朵、皮肤就是信息传感设备;触觉神经元链接系统就是高速网络;大脑自然就是后端海量数据中心里负责做任务处理、分析、反馈的服务器集群。下面的物联网定义是当前大部分学者普遍认同的观点:通过射频识别(RFID)、红外感应器、全球定位系统(GPS)、激光扫描器等信息传感和采集设备,按约定的协议,把任何物品与互联网连接起来,进行信息交换和通讯,以实现智能化识别、定位、跟踪、监控和管理的一种网络。
自从2008年初谷歌对Android这款轻量级的移动操作系统进行开源以来,吸引了摩托罗拉、高通、LG、三星、华为、HTC、思科、中国移动等制造商和运营商加盟研发和推广。谷歌把移动智能手机终端作为切入点,来引领其整合全球信息的战略,也是基于对下一代信息技术革命大趋势的把握。至今,搭载android系统的终端每天出货量超80万部。从2009年一款实现了可测量血压并实时传输个人记录到医院中心系统的Android终端面世开始,接下来还出现了可以作为车载导航的Android终端,可以扫描二维码、控制微波炉冰箱、可以控制机顶盒的Android终端。从中可以看出,Android不只是款手机操作系统,谷歌大力推广Android系统也不只是收广告费那么简单,而是其一直在引领和推动物联网的实实在在的应用和发展。如果说我们还在为物联网是什么、该怎么制定标准而争吵。那很可能在下一个信息10年,我国的信息战略要经受的不只是被微软追讨版权这么简单。因为物联网时代不仅仅是信息技术的革命:PC和互联网时代,机器是机器,人是人,通过灾备、防病毒等,对我们的影响谈不上深远;而在人和生产环境、生活环境、甚至是军事设施等物理环境进行大融合或局部融合(类似于公有云、私有云概念)的物联网时代,终端操作系统受制于人,是难以想象的
这也是为什么要开展物联网终端操作系统研究,而且具有必要性和紧迫性。以物联网最早的应用领域物流工程为例。嵌入标签的货物从识别、装箱、发货、运输到签收等每一个环节都可以在互联网上和物流中心系统进行查询和监控。但物流行业应用现状是,RFID扫读器、中心系统设备、GPS定位系统、GIS导航系统、仓储管理系统等这一系列的设备和软件并没有完成真正意义上的物连和互通,各环节之间或孤立或联系不紧密。后端物流行业大数据中心建立起来并不难,难点在于还没有很好的办法对前端各类设备和应用软件进行整合,过于分散的模式使得资源冗余浪费、成本太高且物流过程难以一体化管控。这也是本文提出基于Android的工业级物联网智能终端操作系统,来作为物联网前端中继节点这种设计思路的目的所在。
二、针对问题提出初步研究框架及思路
现有物联网定义中“按约定的协议,把任何物品与互联网连接起来”这种说法很宽泛,没有阐明一种具体可行的应用模式和解决方案。本文提出一种更深入的广义物联网概念,那就是代表我们眼睛、鼻子耳朵的信息传感设备把采集到的信息直接推送到高速网络之前,需要经过一定的集中过滤处理或轻量级的实时数据分析和反馈处理。这个环节是通过一个智能终端操作系统(好比物联网小脑)来完成的。本文中的物联网终端不是传统物联网范畴中定义的各类分散的、自成一体的终端设备(比如红外感应终端、RFID扫读器终端等),而是对各类好比神经末梢的终端感应采集点进行整合,集中互联、管控的具有操作系统特性的一体化终端系统,主要具有如下核心功能:
(1)根据标准协议与周围感应设备和采集点进行集中的指令和数据交互
(2)根据标准接口和协议通过互联网或移动通信网与后端数据中心互联互通,来完成任务提交、分发、调度和物体识别、管控等功能,同时满足部分轻量级任务现场实时处理的功能需求。
通过这种物联网后端和终端设计架构,能有效利用带宽,提高响应效率,优化物联网整体规划、设计和组织管理。当然这个物联网终端操作系统相对于进行海量数据处理和应用服务分析的后端系统来讲,应该是轻量级的,并具有移动便携性(比如物流过程中的随车终端,集GPS定位、GIS导航、装卸货品扫描、与物流中心主系统对接进行任务提交、数据共享、移动办公等功能的一体化物流物联网终端设备)和快速定制性(比如在家庭应用中,集实时病人血压检测,人工心脏监控,医院主系统对接进行病情记录等功能的一体化远程医疗物联网终端设备,可通过硬件和软件模块化定制装卸的方式,快速转变为能够进行物品扫描和GPS定位的物流物联网终端设备)特点。
要支持上述多个典型物联网行业应用的终端操作系统,其架构应该是高度抽象化和通用的。区别于传统的PC操作系统和专业性很强的嵌入式系统,本文提出的物联网智能终端操作系统具有如下特点:
(1)轻量级特点:
传统PC操作系统架构复杂,需要较高性能的硬件配置和系统内核处理能力。
传统嵌入式系统专业应用领域过于细分,硬件和软件具有行业定制高度相关等特点,其扩展性、通用性有限。物联网智能终端操作系统只是起到一个中继节点的功能,复杂的数据处理和分析在物联网后端进行,相比传统的PC系统更轻量级;但这个物联网中继节点的功能相比传统嵌入式系统更强大、更通用,行业相关性程度小以便于扩展。
(2)移动便携性特点:
传统PC操作系统一般作为家用或服务器配置,通过有线或局域无线上网。
传统嵌入式系统一般也是内嵌或固定放置,对某一细分的专业领域提供支持
物联网智能终端操作系统应该是随处可配置的,家居、车载、交通运输工具等随处可挂载,这个中继点对局部范围“物”的扫描、识别、采集和数据初步处理之后,再通过移动通信网(或传统互联网、VPN)与物联网后端大数据中心进行交互。
(3)通用性特点:
传统PC应用范围有限,或只限于通常的家用和办公功能;嵌入式系统或只限于灯光控制、导弹控制等精细专业的应用领域。
而物联网智能终端操作系统架构需进行高度抽象化;通过定义好的标准协议与传感信息设备进行数据和指令互通,并作为物联网中继节点与后端数据中心交互,通过这种标准化方式可扩展到任何行业进行应用;
(4)快速定制性特点:
通过内置硬件模块化可插拔,软件模块化可装卸的方式,可以让一款医疗物联终端设备很快变成一款能扫描货品的物流物联终端设备,而做到这一切就像在windows系统上安装网卡设备、驱动和拨号软件后立刻上网这样便捷。
通过上述的分析,工业级物联网智能终端操作系统在整个物联网规划、设计、布局和组织管理中的地位十分关键。谷歌的策略更是在加速这个行业的发展,可喜的是国内如华为、联想、中兴这些大厂都已经着手对谷歌Android操作系统进行深入的研究,而将来这个移动操作系统会不断地演化和扩展,引领真正的物联网时代。
三、核心研究内容
要开展基于Android的工业级物联网智能终端操作系统研究,需要对如下关键问题进行分析和提出解决方案:
(1)物联网智能中间件研究:针对上文中的通用性和轻量级特性要求,智能终端操作系统可以理解为整个物联网架构前端中的轻量级中间件。在不同的空间和应用环境,集中联系和管控无所不在的信息传感、采集设备,结合可识别的“物”的特点,对各种感知和采集到的数据进行现场实时轻量级的分析,或通过互联网、移动通信网提交到物联网后端数据中心进行处理。如何让Android操作系统具有上述特性,拥有与物联网传感设备进行标准化的数据和指令交互功能、与后端数据中心进行互联互通的功能,需要对Android的系统结构和协议栈进行深入研究和改进。
(2)DavikVM虚拟机研究和优化:Davik Virtual Machine虚拟机是整个Android操作系统的核心,也是性能优化的关键。系统核心函数库中的组件,大部分已经是业界标准(如SSL)或约定成俗的标准(如WebKit、SQLite);软件应用层则由广大软件商进行扩展,应用层框架及核心组件库会持续通过新开发应用的加入而增长、强化,这些都不是研究的重点。而DalvikVM虚拟机则是一个专为嵌入式设备打造的JAVA虚拟机,它不同于传统的JAVA虚拟机(JVM),DalvikVM拥有自己的高度优化的code-byte格式,可以初步保证在嵌入式设备上高效运行。但要达到类似物联网应用的工业标准,如何进一步提高其性能和稳定性,是需要深入研究的课题。
(3)软硬件整合研究:Android的底层驱动在传统的诸多 Linux嵌入式应用上早有实现。但要满足本文所阐述的物联网终端系统便携性和通用性特点,需要对硬件层、驱动层、操作系统内核层进行进一步的抽象和提炼,并对现有的软硬件整合流程进行改造(应用层不能直接访问硬件、通过JNI与底层C/C++库交互、多硬件厂商驱动程序非开源情况下怎么维护驱动库,类似这些问题可能需要改进),使其系统结构达到满足硬件及软件模块化、构件化、可插拔的使用要求。
(4)行业应用示范及推广: 物联网作为继PC、互联网之后的世界信息产业第三次浪潮,关注和炒作不可谓不火爆。但涉及到某个具体的应用领域,具体应用的物连网前后端设计,具体应用的原型系统实现等等方面,业界却鲜有实用的提法和方案。
没有切实可行的行业解决方案,和迟迟提不出来的物联网技术标准是推进物联网战略的最大障碍。这个障碍只有靠在某个需求最大最贴近物联网原始概念的行业进行规模试验和推广,而物流工程领域是示范应用的首选。
四、结语
任何高科技如果只给大家勾勒出一个美丽的童话而迟迟不能变成现实的话,那么多先进的技术都失去了意义。物联网目前只是一些小范围的试验,而且多半是没有创新地对已有RFID扫描、传感等设备的堆砌和原有技术的应用,远未达到真正意义上的物连网高度和大规模应用的程度。国外3000元左右Android手机,华为能用900元人民币做出来,性能虽然有一定损失,但可见其耗能和成本不是根本原因。没有切实可行的行业解决方案,和迟迟提不出来的物联网技术及协议标准才是最大的障碍。这个障碍只有靠在类似物流工程这样最贴近物联网原始概念的领域进行行业推广和大规模试验,在对物流工程领域进行行业资源整合及物联网应用部署,并切实解决问题的过程中,才能提炼出最有效的物联网标准,和最具实用意义和价值行业扩展性物联网解决方案。
【备注】
(1)物联网后端:不管是公有云、私有云还是SAAS、ASP模式,作为物联网或云的后端处理中心,其组织形式和功能相似---提供海量数据处理、海量应用服务的服务器网格或集群(类似于提供公共云服务的谷歌机器农场;提供私有云服务的电信、银行等关键行业后端服务器集群环境)。
(2)物联网前端中继节点:物联网前端感应、数据采集点数量庞大,但好比人体神经末梢的每个采集点信息量很小,如何把局部范围内的一系列感应采集设备集中联系并管理起来是迫切需要解决的问题。物联前端中继节点将是物联网系统架构中必不可少的关键环节,它具有如下功能:a.根据标准协议与周围感应设备和采集点进行集中的指令和数据交互b.根据标准接口和协议通过互联网或移动通信网与后端数据中心互联互通,来完成任务提交、分发、调度和物体识别、管控等功能,同时满足部分轻量级任务现场实时处理的功能需求。
Android终端 篇3
【关键词】 GPS 地图接口 反地址解析 移动终端 实时定位
1 引言
随着 GPS 技术的发展,基于 PC 机的导航定位系统由于其功耗高、携带不方便等已不能满足社会发展的需要。文中介绍了一种基于 Android 平台的移动终端定位系统,在系统中 Android 移动终端利用周围的无线网络资源与 Internet 连接可将 Google 的地图资源显示在移动终端上,实现地图的缩放、浏览、卫星图/地图模 式切换及实时定位用户当前位置。
2 设计原理
现在很多移动终端都内置了GPS 接收机模块,借助于日益完善的移动定位技术,移动终端的GPS定位 越来越实时、精准。而 Google 推出的 Android 平台提供了两个基于位置服務的地图 API 开发包。通过对这两个开发包内与位置服务相关的类的使用,配合移动终端设备本身具备的定位定向等相关模块,可以很好地实现 GPS 应用程序开发。
Android 的定位接口可以用来获取移动终端设备的地理位置。应用程序可以定时请求更新移动终端设备的当前地理定位信息。也可以借助一个 Intent 接收器来实现以经纬度和半径划定的一个区域,当设备出入该区域时,可以发出提醒信息。
主要包含下面几个与位置服务相关的类: ( 1) LocationManager: 该类用来获取当前位置,追踪设备的移动路线,或设定敏感区域,在进入或离开敏 感区域时设备会发出特定警报。 ( 2) LocationProvider: 该类是能够提供定位功能的组件集合,集合中的每种组件以不同的技术提供设备的当前位置,区别在于定位的精度、速度和成本。 ( 3) LocationListener: 该类用于接收当位置信息发生改变时从 LocationManager 接收通知。必须事先在定 位管理器中注册监听器对象。 ( 4) Criteria: 该类用于描述 Location Provider 标准, 包括位置精度水平、电量消耗水平、是否获取海拔或方位信息、是否允许接收付费服务。 Android 的地图接口( com. google. Android. maps) 可以借助 Google Maps 及定位 API,就能在地图上显示用户当前的地理位置。主要包含下面几个核心类: MapActivity: 该类是一个抽象类,用于显示 Google。
MAP的 Activity 类,它需要连接底层网络MapView: 该类派生自 android. view. ViewGroup,用 于显示地图的 View 组件。由于 MapView 需要通过后台的线程来连接网络,而这些线程要由 MapActivity 来管理,所以它必须和 MapActivity 配合使用。 MapController: 该类用于在控制地图的移动、缩放。 Overlay: 该类用于在地图上的绘制可显示的对象。 GeoPoint: 它是一个包含经纬度位置的对象。 另外 Google Maps 服务要求开发者获取一个使用 MapView 的 API Key,以便在使用应用程序时能加载 Google 地图数据。 根据上面介绍的 Android 平台包含的 API 开发包,为了实现移动终端 GPS 定位功能现可分以下几个步:
( 1) 向 Google 申请一组经过验证的“地图密钥” ( Map API Key) ,申请成功后修改布局文件中 android: apiKey 键值。 ( 2) 通过使用 Google Maps API 中的 MapView、 MapController 分别进行地图的显示、控制。 ( 3) 使用定位 API 来获取移动终端的当前定位信息及在 Google Map 上标注该终端的当前位置。 ( 4) 调用 Google Maps API 进行地址解析,根据经 纬度获得具体位置详细信息。
3 具体实现
3.1 申请申请 Maps API key 要使用 Google Map 服务的话,我们需要一个 API key。
3.2 GPS 定位及实时更新功能实现为了能在 Google Map 上显示用户当前的位置,就要通过 Android 的定位管理 LocationManager 来获取当 前设备的地理位置为了让用户能实时看到自己位置的变化,让它实 现一个 LocationListener 接口,使其能够监听定位信息的改变。
3.3 地图的显示与控制 地图的显示与控制主要采用 Android 提供的 Map- View 和 MapActivity 这两个类来实现。MapView 用来 显示地图,它可以通过获取其他事件来支持移动终端上地图的移动和缩放功能,也支持可以通过添加 Map Overlay 类在地图上标注用户当前位置。
3.4 根据经纬度进行反地址解析 在实际位置信息显示开发过程中,地图相关的操作普遍采用地理编码与地理反编码,Android 也提供了 Geocoder 类的 getFromLocation 方法进行地理反编码来 返回指定经纬度的详细地址( List 对象) 。笔者使用过程中不管是在模拟器还是在移动终端环境下,返回的 List 对象都为 null。经过分析发现 Google Geocoding API 的使用有每天 2500 个地理位置查询请求的限制。
参考文献:
[1]冉崇善,赵 萍. 基于 ITIL 的企业 IT 资源服务系统设计 武汉理工大学学报 2006
[2]陈 锐,魏津瑜. 基于 ITIL 的 IT 服务管理模型研究 2008
Android终端 篇4
随着电子产品的飞速发展, 智能手机成为人人必备的物品, 并且已经融入我们生活的方方面面。但是智能终端的数据传输能力缺存在着严重的不足。主要问题为传输速度慢, 数据传输需要依赖外部网络设备、操作不便捷等等。比如用户之间经常会互相交换音乐、视频、照片、应用软件等数据, 因为数据传输方面存在的各种问题, 通常需要用户在耗费较大数据流量和时间的情况下才可以实现两个移动终端之间的数据传输。这不仅给用户造成使用不便, 还带来了一定的经济损失。经过大量统计, 智能手机用户网络流量中的20%用来进行数据互传, 因此, 设计开发一款方便高效的移动终端数据传输系统是非常有必要的。
2 需要解决的问题
两个移动设备间进行数据传输, 首先要解决的问题就是如何选择设备间数据传输渠道的通讯机制, 采取什么数据传输方式才能更合适移动终端的数据发送与接收。然后要解决的问题是如何快速准确地识别对方的智能终端, 并建立可靠的网络连接。最后也是最重要的一个, 如何在传输后验证所传输的数据的完整性。
2.1 通信机制的选取
文件传输过程中需要可靠的传输, 而且两端须长期并且稳定地保持连接。该系统选用TCP协议机制来实现双方智能终端的数据共享, 并用SOCKET来实现TCP协议。TCP协议 (传输控制协议) 提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前, 必须先在双方之间建立一个TCP连接, 之后才能传输数据。而且TCP提供超时重发, 丢弃重复数据, 检验数据, 流量控制等功能, 保证数据能从一端传到另一端。理想状态下, TCP连接一旦建立, 在通信双方中的任何一方主动关闭连接前, TCP的连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求。
TCP的连接需要由客户端和服务端两部分组成。而现在的智能终端都拥有这么一个功能——可以开启热点共享。因此一个智能终端本身就可以成为一个服务端, 当然它也是客户端。如若发送端是服务端的话, 那么接收端为客户端;若发送端为客户端那么接收端为服务端。
2.2 移动终端建立连接
识别手机终端并建立连接包括识别和建立两个过程, 要先准确的寻找出周围环境中对方的手机继而建立起连接, 为发送数据做准备。通过其中一个设备建立热点。连入该网络后, 可以获取在该网络上的主机数目, 主机的详细信息, 由此, 可以快速判断出对方设备, 并识别。识别过程中, 获取目的主机作为服务器, 此时目的主机的IP应该是网关的IP, 建立连接后, 两台设备同处与一个局域网, 就可以通过局域网数据库传输的协议来设计实现文件传输的功能。
2.3 数据完整性验证
数据传输过程中可能会发生丢失数据包或者数据被篡改的可能, 这些都会造成发送失败。所以在发送数据后必须验证数据完整性, 如果不一致则需重新发送。客户端对文件进行hash文件校验, 把得到的校验码和服务端发来的校验码进行对比, 如若一致, 这发送过程成功, 连接将自动断开;若不一致, 则说明发送过程中有数据包的丢失或者发送延时, 则会重新发送一遍。如果数据包在传输过程中网络发生断开的情况, tcp的链接本身就可以判断网络是否正常, 但是近距离网络链接, 发生这种情况的概率是极小的, 在此不做更深入的讨论。
此外, 系统还应该能够有效支持不同品牌手机系统的使用, 兼容平台差异性, 满足大部分手机系统功能的要求。同时应该具有良好的拓展性, 出现系统负载太大或者需要进行业务拓展时, 系统满足需要, 方便扩展扩充。
3 系统的设计实现
本系统是基于Android平台下的文件传输系统。选择JAVA作为脚本语言, 使用eclipse为开发平台。系统所涉及的发送文件和接受文件功能的关键技术为手机终端之间的通信问题。也就是说, 首先, 在Android手机终端, 用户通过手机界面的操作, 选择发送文件后系统会自动建立起热点, 并按照热点的IP地址建立起TCP服务端;其次, 用户通过手机界面的操作, 选择接收文件后系统会自动搜索附近的WIFI热点, 并正确的建立起连接, 服务器将选取好发送的文件进行数据和程序的处理, 最后以字节流的方式传输给客户端。
两个智能终端中间的数据交互, 可以遵循下图所示。发送方确认发送的文件, 继而等待接收方连接的确认, 一旦连接建立后, 发送方便主动将要发送的文件主动发送到接受方设定的文件路径上。接收方验证文件的完整性, 与发送方发来的验证码进行对比, 验证成功的此传输过程结束, 断开连接;如果验证失败, 则请求发送方重新发送一次。
主要实现步骤分为以下两步:
第一步建立热点。可以使用Android自身的API, 同时需要申请以下三个权限:android.permission.ACCESS_WIFI_STATE, android.permission.CHANGE_WIFI_STATE, android.permission.WAKE_LOCK
具体创建热点步骤可以由Android提供Wifi Configuration类中提供的属性和方法来实现。可以参考以下代码:
第二步发送端应创建成服务端, 通过Server Socket创建的对象对指定的IP地址和端口进行监听, 一旦创建成功, 继而可以把所要发送的文件转换成字节数组或者字节流发送到接收端。接收端由Socket创建的对象对服务端进行侦听和捕捉, 通过把接收到的字节流进行转化成所要的文件, 保存在指定的路径下。每一个文件都有一个唯一的hash值作为它的文件校验码, 通过获取文件的hash值对两端的文件进行验证分析, 确保数据安全准确。
4 结束语
系统的实现解决了移动终端发送文件时存在的一些问题, 能够实现随时随地发送数据, 由于自创热点, 既不需要指定服务器支撑传输过程, 而且解决了蓝牙连接传输速度慢问题。提高终端之间数据传输的速度, 使操作更加方便快捷, 人机界面更加友好。使移动平台之间的数据传输更加简单化、智能化。
参考文献
[1]《基于UDP协议的多文件传输》李永胜、黄兰红、刘红军广西民族大学学报 (自然科学版) 2007/02
[2]《基于可靠组播文件传输协议的设计与分析》董淑松、康慕宁科学技术与工程2010/09
[3]《基于TCP的跨网段文件传输》郑石平、冯学智计算机工程与设计2007/05
[4]《基于Java三层架构的网络文件传输系统的研究与实现》张洁、许盛伟、毛明网络安全技术与应用2007/10
[5]《基于Android平台的WiFi文件传输系统的设计》苗振兴、马幼鸣、周鸣争长江大学学报 (自然科学版) 2013/07
Android终端 篇5
近年来,随着三网互通、4C(计算机、通讯、消费电子、内容)融合、三屏合一的数字化家庭网络技术革新和基础设施改造步伐加快,孕育了以家庭为核心的新型数字化文化娱乐和生活消费理念,催生了现代数字家庭新兴服务产业,人类生活已逐步进入智慧家庭时代。发展数字家庭服务,开发功能齐全、网络顺畅、操控智能的现代数字家庭智能终端设备,正在成为全球数字家庭产业发展的热点。
本文结合自主研发的基于Android平台的家庭智能终端系统,重点介绍智能终端人机交互模块设计,将家庭智能终端系统与搭载Android平台的移动终端设备通过无线网络有效连接,实现用户通过指点触摸、体感等人机交互方式完成与智能终端系统的信息交换,保证了用户准确、高效、轻松、愉快的操作需要。
2 家庭智能终端人机交互模块需求分析
本文所设计的家庭智能终端系统以搭载Android平台的智能机顶盒为核心,实现以数字电视、宽带网络、视频娱乐、网上生活消费等融合业务为特色的数字家庭网络娱乐与数字生活应用。为满足家庭不同年龄层成员对于家庭娱乐与数字应用的需要,终端系统对智能人机交互技术的需求更为迫切。因此,智能终端人机交互模块设计需要具有如下几个显著特征:
(1)可开展的数字家庭应用服务千差万别,信息交互模式应该具有多样性;
(2)支持多种无线网络运行环境下的移动终端设备(搭载Android系统平台)接入;
(3)满足不同性别、年龄、文化水平的用户的操控需要;
(4)支持当前主流的Android平台应用服务(如体感游戏)的操控方法;
(5)支持基于当前开发模式下的功能扩展,满足未来多样人机交互模式开发的需要;
上述特点满足了智能终端系统在人机交互技术方面当前的需求,并决定了未来的走向,即最大程度地使用人类自然形成的交流与认知形式,使智能终端的设计更趋智能化、人性化,让设备在人机交互中能听、能看、能说、能感觉。
3 家庭智能终端人机交互模块总体设计方案
家庭智能终端人机交互模块设计的总体思路是基于Android应用框架,利用便携式移动终端,通过无线网络实现对于家庭娱乐与数字应用服务的便捷操控。因此按照系统结构划分,可以分为服务端和客户端两部分,如图1所示。
其中,家庭智能终端作为服务端运行应用服务程序。而移动终端搭载的客户端程序可以根据不同阶层用户以及不同应用服务的需要,划分为三种不同的功能模块,即手柄控制模块、指点触摸控制模块以及传感器控制模块,各种功能模块间可以无缝切换,满足用户不同的操作需要。如图2所示。
另外,在服务端和客户端之间加入无线路由的目的是为了搭建WiFi无线网络,方便移动终端的无线接入。当然,无线路由器本身也可以集成到家庭智能终端设备内部,使其自身具备无线路由的功能。智能终端在采用有线或无线的方式连接无线路由器后,通过IP连接的方式与接入Wi Fi无线网络的便携式移动终端进行通信。由于Android系统本身支持Socket通信,因此客户端与服务端之间采用面向连接的Socket传输模式,其核心代码如下:
4 客户端功能模块设计
4.1 手柄控制模块设计
手柄控制模块的作用是在移动终端上实现日常生活中手柄操控的功能,包括“上”、“下”、“左”、“右”方向键以及“确定”、“后退”等功能键,通过点触移动终端触摸屏上相应的键值,以实现对于服务端应用服务的操控。手柄控制类GameRemoteActivity设计如图3所示。
其中mLeftBtn、mRightBtn、mUpBtn、mDownBtn分别代表“上”、“下”、“左”、“右”方向键, mABtn、mBBtn、mCBtn、mDBtn、mBackBtn、mExitBtn、mEnterBtn等分别代表不同的功能键,并根据方向键与选择键功能的不同,分别加入了点击事件监听OnClickListener。
4.2 指点触摸控制模块设计
指点触摸控制模块主要是针对支持指点触摸的应用服务而设计的。由于当前Android平台的应用服务大多针对的是搭载触摸屏的移动终端,因此,为了使这些应用服务能够运行于家庭智能终端上,指点触摸控制模块的设计就有其必要性。其作用主要是在移动终端触摸屏上划分出一块触控区域用于模拟原先直接运行于移动终端上的触控操作。指点触摸控制类MotionRemoteActivity设计如图4所示。
其中mTouchRange为划出的触控范围,在该范围内,所有指点触摸事件都加入了触摸事件监听set OnTouchListener。
4.3 传感器控制模块设计
由于Android系统内置了多种传感器,如加速度传感器、陀螺仪传感器、方向传感器等,因此,很多Android平台的应用服务(主要是游戏)加入了对传感器的支持。传感器控制模块的设计就是为了满足这些应用服务的操控需要,使得用户在家通过移动终端,而不依靠特殊的传感设备就可以完成对游戏的操控,实现了人机的自然交互。传感器控制类GestureRemoteActivity设计如图5所示。
GestureRemoteActivity中使用了加速度传感器Sensor.TYPE_ACCELEROMETER以及方向传感器Sensor.TYPE_ORIENTA-TION,并通过Android的SensorManager综合管理类来设定这些传感器的采样率以及精确度。
4.4 数据交换格式
在客户端功能模块设计过程中,需要对触控等事件进行数据转换,即将事件数据转换为字符串,以在函数之间轻松传递,并将这些字符串从客户端传递给服务器端程序。本文采用JSON (Java Script Object Notation)作为数据交换格式。JSON是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,但也使用了类似于C语言的习惯,这些特性使得JSON成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成。其核心代码如下:
5 总结
本文重点研究了基于Android平台的家庭智能终端人机交互技术,设计了结合手柄控制、指点触摸控制以及传感器控制三种功能应用的终端控制程序,基本满足了用户对多样家庭娱乐与数字应用的交互需要。但是,为了顺应数字家庭服务发展的趋势,未来还需要在当前的工作基础上,加入手势识别和自动语音识别等新型的人机交互功能以满足用户准确、高效、轻松、愉快的操作需要。
摘要:当前发展数字家庭服务, 开发功能齐全、网络顺畅、操控智能的现代数字家庭智能终端设备, 正在成为全球数字家庭产业发展的热点。本文研究的兼容Android平台的智能终端人机交互技术, 结合了手柄控制、指点触摸控制以及传感器控制三种功能应用的终端控制程序, 基本满足了用户对多样家庭娱乐与数字应用的交互需要。
关键词:智能终端,Android,人机交互,指点触摸
参考文献
[1]张庆丰译.人机交互 (第三版) [M].北京:电子工业出版社, 2007.
[2]孟祥旭, 李学庆.人机交互技术原理与应用[M].北京:清华大学出版社, 2004.
[3]E2ECloud工作室.深入浅出Google Android.北京:人民邮电出版社, 2009.
Android终端 篇6
随着人们生活水平提高, 生活节奏加快, 工作压力也增大, 逐渐形成了庞大的亚健康人群。目前, 我国亚健康和老龄化人口迅速在增加, 慢性疾病患者人群也在日益扩大, 高血压人群达到1.6亿, 心脏疾病患者增长更快, 各种突发疾病人群更是不断地扩大。随着移动通信网络的日益成熟及发展, 特别是手机用户数量的快速增长和普及。基于面向家庭和个人的远程医疗健康监护系统已经成为远程医疗领域的热点, 而移动健康医疗也将成为远程医疗发展的必然趋势之一[1,2]。因此, 将移动健康保健系统带入到社区和家庭, 对病患或者亚健康人群实施移动远程健康监护, 不论是从提高早期的预防能力, 减少患者或者亚健康人群的经济负担, 还是从增强医院的医疗服务能力, 减少医护人员的工作量来说, 都具有非常重要的现实意义。
2 系统的总体方案
移动智能终端保健系统充分利用用户现有的智能手机, 用户只需再安装一个健康分析软件和佩带一个生理信号采集终端。移动智能终端保健系统体积小巧、便于携带, 用户不受时间和地点的限制, 随时享受实时的健康分析服务, 既提高了医疗保健水平, 又能有效地降低用户的就医成本, 使用户得到更方便和快捷的医疗服务。
移动智能终端保健系统总体架构如图1所示, 由生理信号采集终端、智能手机处理终端和系统数据分析平台3部分组成。生理信号采集终端通过各类传感检测设备对人体的各种生理信号进行采集, 预处理后传输到手机终端。手机收到信号后进行处理, 滤除干扰信号, 并实时地计算和图形展现, 再将生理信号通过网络传输到系统数据分析平台。系统数据分析平台对接收到的数据进行深度的分析, 并及时反馈给用户。
3 系统设计
3.1生理信号采集终端硬件
生理信号采集终端的硬件部分如图2所示, 主要由3大模块组成: 心电信号检测模块、脉搏信号检测模块、微处理器控制系统。
3.1.1心电信号检测电路
心电信号检测电路如图3所示, 主要包括信号放大、滤波、末端放大等几个部分。
3.1.2脉搏信号检测
脉搏信号检测处理电路如图4所示, 检测得到的脉搏信号包含直流分量和交流分量。交流分量一般幅度为直流分量的1-2%, 且叠加直流分量之上, 主要体现动脉血容积量的变化, 是脉搏检测中要进行处理的部分[3,4,5,6]。
3.2系统软件
3.2.1手机与生理信号采集终端的通信
蓝牙通信是基于唯一MAC地址进行传输的, 考虑到安全问题手机蓝牙通信时需要先配对, 然后再开始相互连接, 连接完成后两设备将会共享同一个通道相互进行数据传输[7,8]。
(1) 蓝牙设备检索
系统检索发现蓝牙设备使用BluetoothAdapter类的start- Discovery () 方法就可以执行一个异步方式获取附近的蓝牙设备, 异步的方法不需要考虑线程被阻塞的问题, 所以整个过程只需要10秒时间, 此时注册一个BroadcastReceiver对象来接收查找到的蓝牙设备, 过滤ACTION_FOUND这个Intent动作来获取每个远程设备的信息。
(2) 绑定蓝牙设备
系统中配对一个蓝牙设备可以调用BluetoothAdapter类的getBondedDevices () 方法 , 就能获取已经配对的设备 , 该方法将会返回一个BluetoothDevice数组来区分每个已经配对的设备。
(3) 通信建立
系统支持蓝牙通信通过BluetoothSocket来建立连接, 服务器端 (BluetoothServerSocket) 和客户端 (BluetoothSocket) 指定同样的UUID, 避免建立连接的阻塞线程, 服务器端和客户端均启动新线程连接, 建立连接之后就可以进行数据通信, 为了更好地完成与生理信号采集终端进行交互, 在系统中设计了自己的通信协议, 保证在交互的过程中, 尽量避免数据包的丢失。
3.2.2生理信号数据处理
本系统中用一个服务Service来完成数据的接收和处理操作, 该服务Service可以运行在自己的应用程序进程里面, 也可以运行在其他程序进程的上下文里面, 这取决于开发者本身的需要, 其他的组件可以通过绑定技术, 绑定到一个服务Service上, 通过远程调用 (RPC) 来调用这个组件[9]。
4 结语
Android终端 篇7
智能家居(英文:smart home,home automation)是以住宅为平台,将外部设备、网络通信、内部数据、自动控制、无线路由等有关的设备和技术集成,打造高效率的住宅环境与方便日常事务管理的系统,提高家庭居住的安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。
智能家居最初主要以灯光遥控控制、电器远程控制和电动窗帘控制为主,随着社会的发展和技术的进步,控制的方法和对象不断增加,不断延伸到红外、烟感、门禁指纹控制等领域,可以说智能家居的发展几乎涵盖了大部分弱电行业,所以智能家居的市场发展非常广泛和迅速。
智能家居控制系统就是打造出一款方便住户日常生活以及管理家居,优化人们的生活,方便各个住户之间或者住户与社区的信息交互的综合平台。本文着重于研究基于Android平台的智能家居控制系统的终端软件的设计。
2 整体设计方案
在设计框架中,核心设备是智能家居控制终端,设计构思是:采用触摸平板和智能手机等设备对水、电、气、门、窗进行控制,并链接一些常用的APP以及社区与住户的信息交互。主要是以下四点:⑴使用Android框架设计Android终端,同时使用Android自带的Sqlite数据库用于数据的增删改查。⑵采用An⁃droid的图形界面的设计,设计简洁明了的图形界面,方便人们使用更加方便。⑶通过无线路由器来进行各种数据间的交互。⑷通过Socket设计终端与服务器的通信。
社区服务器实现了与智能终端的数据交互,同时为了保证不同产商之间系统可以兼容,在数据传输上采用了TCP/IP协议,保证不同产商之间系统可以兼容与互联。社区服务器使用socket与终端进行社区消息的推送和交互,例如:今天停水等等;还采用Http URLConnection用于终端的更新和被链接APP安装软件的下载,例如:系统更新是通过版本的对比,来判断是否下载。
系统的总体框架如图1所示。
3 Android终端的设计
Android终端的设计主要使用UI布局,SQLite数据库,Ac⁃tivity以及Socket通信(客户端)等框架。终端界面使用Activity的On Create()方法导入界面的布局,界面设计主要使用了UI布局中的Linearlayout(线性布局)和Relative Layout(相对布局),第一种布局是按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后。第二种布局是按照各子元素之间的位置关系完成布局,在此布局中的子元素里与位置相关的属性将生效。
3.1 Android终端界面
终端待机界面如图2所示。该界面的设计布局可以让住户对时间、天气等信息一目了然。时间与日期数据的显示都是通过网络获取当前的数据并显示。
天气和环境监测的数据是通过无线路由器以Socket获取外部设备传来的2进制数据,同时用数据转换成所需的数据,并进行显示。数据转换代码如下:(data为外部设备传来的2进制数据)
通过待机界面的主菜单按钮进入终端主界面,如图3所示。
终端主界面如图3所示。该界面的设计简单明了,方便的住户的使用,尤其是针对老年人的使用,使用人们的生活更加智能化。主界面的“应用管理”按钮点击进入应用管理界面,如图4所示。主界面上方的显示框是用于社区推送消息。”紧急呼叫”可以拨打110、119、120等紧急电话;“居家助手”可以对家里水电气的每月的使用情况以及缴费情况及时查看;“亲子互动”和“老人互动”是为了住户家中的老人和小孩互动或者活动而提供的一个信息共享的交流平台;”安防管理”是对门禁,窗,烟感,红外的外部设备链接,从而统一管理。如果终端隔5分钟没有任何操作,就会自动返回待机界面。
3.2 SQLite数据库的使用
Android操作系统中集成的SQLite数据库是一款开源的、高性能、消耗内存少的嵌入式数据库。对于SQLite,Android提供了Sqlite Datebase和Sqlite Open Helper两个类,实现了对数据库的操作。Sqlite Open Helper的get Writable Database()获取数据库对象,Sqlite Datebase则提供创建、删除、执行sql指令等。
该终端的备忘录使用了的SQLite数据库的增删改查;备忘录的表设计如下:
备忘录信息的插入使用数据库的方法,实现代码如下:(mtext为备忘内容,mtime为备忘时间,isalarm为是否提醒)
同理删除了使用delete(),修改使用update(),查询使用query();
x Utils框架中的Db Utils模块是Android中的orm框架,一行代码就可以进行增删改查;默认关闭;可通过注解自定义表名,列名,外键,唯一性约束等(。因此,留言板的数据库使用了该模块。留言板的表设计如下:
例如插入数据库的实现代码如下:(Context为当前界面的Activity,msg为一条完整的留言信息)。Db Utils db=Db Utils.cre-ate(Context);db.save(msg);
3.3 对外部APP链接
应用管理界面中的“求医问药”、“维修服务”、“家庭缴费”等以及应用管理界面,都是链接生活中常用的应用软件,比如:阿里健康、手机淘宝、大众点评、滴滴打车等,方便人们的使用。实现代码如下:(context为当前界面的Activity,Package为外部app的package)
对于外部APP的链接,在改进功能后,希望实现提供接口进行链接,而不需要把app下载到本地,这样可以更多的优化终端的使用。
3.4 Socket通信
在网络传输方面,Android本身提供了很好的Socket通信框架。它既可以接受请求,也可以发送请求,利用它方便数据传输。
终端客户端需要用Socket向服务器端发送连接请求,等待服务器端的响应,代码如下,Socket s=new Socket(String host,8800),其中host是服务器端的IP地址,8800是服务器设置的端口;再使用Socket本身的Input Stream(输入流)和Output Stream(输出流)与服务器端进行通信;最后通信完成,用close()方法关闭所有。终端的“安防管理”中对门禁,烟感等的管理都是以终端和外部设备在局域网的情况,使用socket通信来接受外部设备的实时监测情况。
系统更新的思路是通过当前终端的版本和服务器的终端版本进行对比,如果服务器的终端版本大于当前终端版本,就会提示是否更新,然后下载完成后,软件会自动安装。与服务器连接的代码的如下:Http URLConnection huconn=(Http URL-Connection)url.open Connection();
huconn.connect();APK自动安装的实现代码:
4 结束语
本文研究的智能家居控制系统是以易用实用为核心,以人性化为主,为人们提供一个方便、简易、安全和舒适的生活环境。本文研究的智能家居控制系统将家居控制模块和无线通讯模块结合在一起,提供一种方便易用的家居设备控制方式,方便用户在Android手持终端上对家居设备的统一管理;方便用户对水电气的实时监测及查询;解决了对红外、烟感等设备控制的不方便性;解决了社区与住户信息交互,住户之间信息交互的不方便。
本文给出的系统方案,基本满足用户的需求,但还有几点完善的空间。第一、多平台应用开发,不仅仅局限于Android平台,例如IOS平台也可以使用;第二、可以采纳用户的意见,对软件进行完善;第三、丰富系统功能,本系统还需进一步完善已有功能,扩展新功能[5]。该系统方案所需硬件操作简单、硬件获取途径方便、系统可靠稳定,并具有良好的扩展性及广阔的市场前景。
摘要:该文对智能家居控制系统进行分析和研究,给出一种基于Android平台的智能家居控制系统。该系统利用Android框架提供的各种资源设计并建立智能家居系统终端,并利用无线路由器建立一个家庭内部控制网关,并利用Socket通信进行社区与用户之间的通信,提升家居的安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。
关键词:智能家居,Android,无线路由器,Socket,社区交互
参考文献
[1]王朝华.基于Android的智能家居系统的研究和实现[J].计算机技术与发展,2012(6).
[2]熊刚.基于Android的智能手机的设计与实现[D].武汉:武汉理工大学,2010.
[3]马获蕾,汤海凤,Android系统中SQLite数据库的研究[J].电脑知识与技术,2013,28(9).
[4]戴歆.JAVA TCP/IP Socket网络通信编程研究[J].电脑知识与技术,2013,9(35).
Android终端 篇8
1 总体设计架构
视频监控技术主要应用于智能家居和工业生产领域, 本设计是基于Android移动平台实现实时的视频监控终端, 如图1所示。研究内容主要包括以下几个方面:在Android平台下实现与视频服务器的交互及读入监控采集的视频数据;对读入的视频数据解复用和解码, 将解码后的数据进行播放以及播放过程中的视音频同步。整个视音频监控系统的设计可以分为4个功能:模块嵌入式系统模块、视频采集模块、网络通信模块和客户端。
本文完成的主要内容是基于Android平台的移动终端的实现。Android客户端设计参照Android的系统架构可以分为本地框架和Java框架两个部分。功能模块可以细分为UI媒体播放库的设计以及视音频同步模块的设计。按照目前Android技术的软件开发架构还可以将应用的具体实现细分为表现层、业务层、访问层、数据层[5]。
2 客户端的设计
2.1 客户端的介绍
按照Google官网的介绍, Android系统架构可以分为应用程序层、应用框架层、系统运行库层和Linux内核层。本应用是基于C/S结构[6]开发的, IP摄像头通过Wi Fi连接网络[7], 手机通过服务器获取节目列表和对平台进行一定的操作, 采集多媒体信息的工作由高清摄像头和传声器阵列完成, 音频信息和视频信息采取TS流进行传输。其中视频采取H.264格式或MPEG-2格式, 音频采取AAC格式。
2.2 客户端的软件设计
客户端的设计可以分为4层结构, 分别为表现层、业务层、访问层和数据层, 采用面向对象特性进行设计。
2.2.1 表现层的设计
表现层即客户端界面的设计, 采取目前比较流行的fragment作为activity的一部分, 它把自己的layout嵌入到activity的layout中。Fragment Manager提供了对activity运行时的fragment的添加、删除和替换的操作, 使UI的设计更具灵活性, 可以随时退回到后一个界面而不用退出程序 (fragment是从Android3.0开始支持) 。
2.2.2 业务层的设计
业务层的设计主要可以分为解码、渲染和同步部分。业务层从功能上负责视音频解码、解复用以及视音频同步, 同时负责视音频回放和网络解析。视音频的回放不特别说明, 由video类和audio类负责, 从业务层的功能划分来看, 必然会涉及到多线程, 线程间的通信采用共享内存机制 (ndk库支持常用的一些Linux库, 包含线程库) 。而通过jni技术可以将ffmpeg的函数直接绑定到Java层使用, 但是为了避免不停地从C++层返回Java层, 浪费运行时间, 业务层采用纯C++的设计, 采用面向对象的封装、多态、继承的特征设计业务层。以上各个模块的关系如图2所示。
2.2.3 访问层的设计
访问层主要负责各个功能模块接口函数的调用, 客户端对服务器响应的处理, 以及客户端向服务器发送的指令。
2.2.4 数据层的设计
数据层主要负责客户端对SQLite数据库的创建和管理, 负责保存应用的各种配置文件。
2.3 客户端的运行流程
客户端的运行流程包含界面的登录、配置文件的设置、流媒体的播放, 如图3所示。
2.3.1 用户数据库配置
服务器与客户端分别采用mysql和SQLite数据库用户信息进行保存和处理。其中, 用户第一次登录需要配置网址、端口号和账户信息。
2.3.2 媒体库的初始化
媒体库的初始化包括初始化视音频解码、同步模块和队列。ffmpeg库在解码前, 先通过TCP/IP网络接收网址, 解析多媒体信息, 同时解复用, 最后将音频信息和视频信息分别独立开来。本文采取RTSP作为网络传输协议, 由ffmpeg为客户端提供网络服务, 需要对ffmpeg进行必要的初始化, 同时解析出多媒体的头文件以做下一步的操作, 其中由于渲染模块采取Android系统库进行渲染后, 需要对surface进行必要的初始化, 可以让解码后的转换的RGB数据传入Buffer后, 直接进行渲染。
2.3.3 解码和同步
解码采取ffmpeg库进行软解码, 同时在实时播放不流畅的时候采取系统库的硬解码。在Android中, 通过jni技术调用ffmpeg的动态库, 而Stagefright框架集成到ffmpeg里面, 调用过程是类似的, 如图4所示。
同步采取外部时钟进行同步, 保持视频和音频的不脱节。以视频举例, 每次视频播放都会计算下一帧播放的延迟, 如果视频PTS (Presentation Time Stamp) 快于外部时钟则加倍这个延迟, 如果慢于外部时钟则立即进行下一帧的播放。大概的视频同步图如图5所示, 其中delay为当前帧的pts-上一帧的pts。
音频同步的原理更为复杂, 因为不期望每次发生偏差的时候都进行同步如图6所示, 这样会使同步音频多于视频包, 每次处理声音样本的时候, 需要使用一个synchronize_audio的函数来正确地收缩或扩展声音样本, 同时需要为函数synchronize_audio设置一个最小连续值来限定需要同步的时刻, 而“失去同步”意味着声音时钟和外部时钟的差异大于阈值。这样会在同步时得到N个失去同步的声音样本, 为了不失去多个同步数量的差值, 需要计算一下失去同步长度的均值, 而失去同步的长度远和近的声音样本对于加权的平均值的重要程度是不同的, 这时会使用一个分数系数C, 这个系数来自于等比级数的加权平均值, 比如:diff_sum=new_diff+ (diff_sum) ×c;avg_diff=diff_sum× (1-c) , 而c=exp (log (0.01/AUDIO_DIFF_AVG_NB) , AUDIO_DIFF_AVG_NB设为20, new_diff=当前的音频显示时间-外部时钟。
2.3.4 播放视频和音频
目前Android采取主流播放器渲染的机制是surfaceflinger框架里面的渲染机制, 直接调用surface则加快了渲染的速度, 相对于Android提供的图片显示的方式要快很多。音频则用Audioflinger框架进行播放, 耗时相对于视频不是影响系统效率的主要因素。
3 性能测试和功能验证
本监控实验基于Android平板PC和手机, 高清摄像头, 以及一个Linux服务器进行验证和性能测试。
在实验过程中需要移植ffmpeg到Android平板, 借用了Google所提供的跨平台编译器将ffmpeg开源源代码编译成动态库使用。在本实验中主要测试软件播放一帧图像所需要的时间, 分别在不使用任何优化的软件和使用基于Neon优化指令集、硬解码、各种渲染方法的情况下播放一帧图像所需要的时间。
3.1 测试环境
服务器:Intel (R) Core (TM) i3-2100 CPU@3.10 GHz, 2 Gbyte内存;Fedora14 (内核2.6.35.14-106, fc14.i686, GCC4.5.1, GLIBC 2.12.90) 。
客户端:Nvidia Tegra2@1 GHz, 1 Gbyte内存, Android4.0.3, 屏幕分辨率1 280×800。
摄像头:像素800万, 捕捉幅面1 280×720, 分辨率1 280×720, 最大帧数30 f/s (帧/秒) , USB2.0。
传声器:敏感度100~10 000 Hz, (-40±3) d B。
3.2 测试设计
测试分别检验功能的正确性和性能的有效性, 检验功能主要利用日志进行排错, 性能利用系统时钟算取差值, 而经过观察和测试, 视频监控最消耗时间的是在视频解码和渲染视频上。
测试时分别在视频解码和视频渲染函数的前后两个点取时间戳。使用系统时钟函数打印出时间差值传入一个文本里面, 然后使用脚本语言计算出时间平均差值。测试结果采用不同的720p监控视频进行计算, 减少计算的误差。在正常情况下的软件解码, 720p视频解码平均消耗70 ms, 而Neon平均能节省一般的时间, 大约为30 ms硬解码, 也大约节省一般的时间, Neon指令集优化和硬解码可以让计算减为原来的1/4左右, 即使720p的视频也可以流畅地进行播放, 而720p的监控视频一般是24~30 f/s。
720p视频的渲染方式和时间如表1所示。
可以看出大致的时间消耗不大, 渲染方式不是决定性能差异的主要因素, 其中的Private C++API是本文采取的渲染方式, 它主要使用了Android的surfaceflinger框架, 其中调用了Android系统运行库。
至于同步, 测试采用两种方法, 一是对比pts和外部时钟的差值, 二是主观测试同步的质量。测试方法:主观测试1 000次说话 (可以通过观察嘴型得知) , 测试结果是98.3%的说话是同步的, 而第一种方法可以使用广播的电影来测试。视频经过同步模块的调整后, 与外部时钟的差值大概在30 ms以内。音频播放比较稳定, 差值大概在10 ms以内。
视频监控实验的截屏的图像如图7所示。
4 小结
目前视频监控系统的研究很少有涉及到高清图像传输时移动终端实时进行播放监控视频的问题, 本文设计并实现了基于Android的高清图像的远程监控终端, 并且在笔者教研室的项目中已经开始应用。
参考文献
[1]王建新, 杨世凤, 史永江, 等.远程监控技术的发展现状和趋势[J].国外电子测量技术, 2005 (4) :9.
[2]周建良.远程监控系统研究与应用[D].成都:西南交通大学, 2004.
[3]夏建明.基于TCP/IP的远程监控系统的研究与实现[D].西安:西安理工大学, 2005.
[4]马化腾:未来半年仍是Android发展黄金期[EB/OL].[2013-02-15].http://tech.sina.com.cn/i/m/2012-10-19/10297719312.shtml.
[5]张弢, 杨理想.Android远程监控终端应用的研究与开发[J].现代电信科技, 2012 (5) :45-47.
[6]李琴, 陈立定, 任志刚.基于Android智能手机远程视频监控系统的设计[J].电视技术, 2012, 36 (7) :134-136.
Android终端 篇9
关键词:温室,Android移动终端,多径通信
0 引言
温室是利用人工建筑的设施, 通过可以调控的技术手段, 实施高产、高效的现代农业生产方式。温室环境监控技术对农业生产有着重要的意义。目前, 温室环境监控主要依托传感技术、网络通信技术和嵌入式技术。随着农业现代化的普及, 手持式移动终端平台在农业信息采集与监控领域得到广泛应用[1]。
温室环境监控系统主要分为两类:一类是以本地监控为主, 其监控终端依靠本地计算机进行;另一类温室环境监控通过无线的方式进行, 包括近程的蓝牙、Zigbee网络等和远程的GPRS网络, 3G网络等通信方式[2,3,4,5]。在已有的温室监控系统中, 用作远程监控的移动设备获取数据的方式都是通过3G网络连接到Internet网络远程访问服务器来实现, 在近程通信时移动设备也是通过这一方式来实现。
为了降低通信成本, 提高通信可靠性和时效性, 本文研究了基于Android的温室数据多径通信移动终端设计, 不仅支持通过电信网络远程监控温室, 在温室内近程时也能够通过局域网获取温室环境参数。
1 多径通信系统设计
基于Android的温室数据多径通信系统由温室汇聚节点、数据存储转发服务器、Android移动监控客户端3个部分组成, 如图1所示。温室汇聚节点由温室环境参数采集和控制模块、无线转发模块组成, 它主要负责温室环境参数的获取、采集以及汇聚, 还可以通过控制温室设备来调节温室环境参数, 如空调, 卷帘机等[6]。数据存储转发服务器是温室汇聚节点与移动监控客户端在远程数据通信的桥梁, 负责对温室汇聚节点的数据进行存储, 当接收到来自Android移动监控客户端的请求, 则对温室环境参数进行转发。Android移动监控客户端为用户提供了一个良好的人机交互平台, 支持远、近程两种数据通信模式, 对获取的温室环境参数存储在移动客户端并予以显示。
远程通信时, Android移动监控客户端获取的温室环境参数的直接接口是数据存储转发服务器。而数据存储转发服务器的数据来源是温室汇聚节点, 服务器和温室汇聚节点的数据通信可通过Wi Fi实现[7]。近程通信时, Android移动监控客户端获取的温室环境参数的直接接口是温室汇聚节点。
2 基于Android的移动监控客户端设计
移动监控客户端主要有以下3个部分功能:温室环境参数的获取、温室环境参数的显示、温室环境参数的存储。移动监控客户端是在Google的开源Android平台上设计实现的温室环境监控系统客户端应用程序, 开发环境为Android SDK+JAVAJDK6.0+Eclispse3.5。
2.1 温室环境参数的获取
2.1.1 远程获取温室环境参数的实现
远程获取温室环境参数是通过3G, 4G等移动互联网访问存储有温室环境参数的服务器来实现的。服务器是温室汇聚节点与移动监控客户端数据通信的媒介, 担任存储转发的功能。本系统采用免费开源的Web应用服务器Tomcat, 编写Servlet应用程序运行于Tomcat平台上, 在移动监控终端客户端与服务器之间进行数据的处理。
服务器地址是由Tomcat绑定的本地IP地址, 供移动监控客户端及温室汇聚节点进行访问。Tomcat还进行设定访问端口, 完成数据的存储和转发工作。Tomcat接收到请求后, 将请求传递给Servlet容器, 再由容器向Servlet提供HTTP请求和响应, 而且是由容器调用Servlet的do Get () 和do Post () 方法得到客户端请求信息以及传送数据, 并将Servlet的响应返回给客户端。
服务器以Excel形式存储环境参数采集与控制模块的数据, 采用Json数据格式[8]封装传递过来的温度、湿度、光照强度、二氧化碳浓度数据, 封装好的数据以Web的形式供移动监控终端客户端访问。服务器接收到移动监控客户端发送过来的控制信号则直接通过Wi Fi给温室环境参数采集与控制模块, 将温室环境参数控制在合理的范围。
在Json通信方式下移动客户端采用HTTP协议[9]与服务器进行通信, 通过open Connection () 方法获得Http URLConnection连接对象, 进而通过get InputStream () 方法获得输入数据流Instream, 最后将输入数据流以parse JSON (Instream) 转换成Json格式, 再以迭代的方式进行拆包处理, 就可以获取各类环境参数。
2.1.2 近程获取温室环境参数的实现
近程通信时, 移动监控客户端通过连接温室AP模式的局域网Wi Fi来获取温室环境参数。此时温室汇聚节点是数据获取的直接接口, 也充当了C/S架构中的服务器。在此方式下移动客户端采用基于TCP/IP协议的Socket通信方式[10]。基于Wi Fi的Socket通信方式的通信模型如图2所示。
Socket也称作“套接字”, 在程序内部提供了与外界通信的端口, 即端口通信。通过建立Socket连接, 可为通信双方的数据传输传提供通道。Socket的主要特点有数据丢失率低, 使用简便。Socket用于描述IP地址和端口, 这里的IP地址是指服务器主机, 端口是服务器用来监听该程序的端口。应用程序通过Socket向网络发出请求或者回复请求。服务器程序启动并监听相应的Socket端口, 一旦监听到网络连接请求便立即响应, 实时处理数据传输, 并保存接收到的数据。
采用Socket通信时, 需要将无线模块设置成Wi Fi的AP模式。配置的主要参数是工作模式和网络协议, 工作模式应该配置为无线AP模式, 网络协议需要选择TCP协议。除此之外, 还需要设置网络IP地址、网络端口和网络超时时间等参数。
客户端与服务器通信, 必须在客户端创建一个Socket, 并指定与要连接的服务器的IP地址和端口。在Android中Socket提供了get0utput Stream () 和getInput Stream () 两种方法得到对应的输入流以进行读操作和对应的输出流进行写操作, 在Socket对象使用结束时, 调用Socket的close () 方法释放资源。
2.1.3 远、近程两种通信模式自由切换的实现
Android移动监控客户端通过Connectivity Manager类和Network Info类监听手机网络, 当前网络连接的类型信息。通过判断Mobile网络和Wi Fi网络是否可用以及连接的状态决定使用远程通信模式还是近程通信模式。由于状态监听在后台完成, 因此可以使用广播通知网络状态的变化而实现两种模式的自动切换。
当手机的Wi Fi处于连接状态时, 通过引用Wi Fi Info对象的get SSID () 方法来判断当前连接的Wi Fi是否为温室内覆盖的AP模式的Wi Fi, 如果是, 则采用近程通信模式, 否则采用远程通信模式。近程通信时, 后台还通过Wi Fi Info对象的get Rssi () 方法来判断连接的局域网Wi Fi的信号强度, 当get Rssi () 的返回值小于-70时, 因为此时局域网Wi Fi有可能连接不上或者掉线, 所以断开温室局域网Wi Fi采用远程通信模式。当手机的Wi Fi处于断开状态, 而Mobile网络处于连接时, 则采用远程通信模式。
2.2 温室环境参数的显示设计
移动监控客户端的软件结构采用Model-View-Controller方法[11]来进行设计。Model对应业务bean的实现;View对应美工视图的设计;Controller对应着Activity设计, 从用户接收请求, 将Model与View匹配在一起, 共同完成用户的请求。Android的界面有三种模式, 本移动监控客户端采用的是xml文件的生成方式, 界面与xml文件一一对应, 如主界面activity_main.xml, 曲线显示界面showchart.xml等。
温室环境参数的显示是温室监控系统的必要功能, 数据显示既要实时、直观, 又要能够显示出环境参数在一定时间段内的变化趋势图, 以供用户进行查看和了解。因此, 本系统除了在主界面直接显示数据 (如图3) , 还提供了另外2种数据显示方式, 一种是曲线变化显示, 另外一种是表格显示。
曲线变化图利用AChart Engine (简称ACE) , ACE是Google的一个开源图表库 (for Android) 。它功能强大, 支持散点图、折线图、饼图、气泡图、柱状图、短棒图、仪表图等多种图表。利用AChart Engine的Chart Factory类进行曲线绘制, 初始化的第一步需要完成XYMultiple Series Dataset对象的构造, 初始化封装图表所需的数据集;第二步是完成XYMultiple Series Renderer对象的构造, 设置表格的样式。初始化完成后新建一个Timer Task对象task, 在task中的run () 方法中定时刷新曲线。初始化后, 各种环境参数的曲线变化图构造在同一个Activity里显示, 如图4所示。随着数据的增多, 曲线变化图可以手动缩小和左右拖动进行全局查看。
Android本身有表格控件 (Grid View) 的, 但是Grid View的每一列的宽度被限定为一样宽, 有时设计表格时, 列宽不可能为同一宽度, 所有本系统采用List View控件去自定义实现表格。Listview的每一列都是由一个Textview去实现, 表格的竖线可以通过View控件来绘制。Listview每一列的颜色相互不同可以通过复写Adapter的类, 然后复写getview () 方法具体去实现。初始化完成后, 表格还会显示环境参数采集的时间, 如图5所示, 随着数据的增多, 表格可以上下拖动查看。
2.3 环境参数的存储设计
环境参数的存储是为了方便数据统计与分析, 温室环境参数在移动设备上进行备份。移动监控客户端以SQLite的形式[12]构建温室环境监控系统数据库。系统采用的SQLite数据库, 是遵守ACID的关系型数据库管理系统, 具有系统开销小、开源、检索效率高的主要特性。由于Android系统集成了SQLite数据库, 所以在使用时十分方便, 只需要采用SQL语句。数据的新增、修改、删除等操作, 分别对应采用insert语句、update语句、delete语句等。在数据库查询中, 通过访问Cursor游标下标的方法即可获取数据库中的数据。
在数据库首次创建时执行创建数据库方法, 如果数据库存在则自动打开数据库, 然后创建数据表格;如果在on Create () 方法中查询表格不存在, 则调用方法创建表格。在本移动客户端中创建了一个名为Green House的表格, 用来管理环境参数, 参数依次为time VARCHAR, tempra VARCHAR, humi VARCHAR, light VARCHAR, carbon VARCHAR, 分别代表时间, 温度, 湿度, 光照强度, 二氧化碳浓度参数。
3 系统运行情况
在服务器启动的前提下, 开启环境参数采集与控制模块。此时, 在Android平台上运行温室移动监控客户端, 客户端能够自动切换到最佳的通信模式获取温室的环境参数并在主界面显示, 如图3所示。然后点击“曲线变化图”按钮和“表格形式查看”便可进入相应子界面, 逐一进行功能测试, 测试结果如图4和图5所示。点击“数据存储”按钮便可将获取的温室环境参数信息存至Green House.db数据库。在各参数显示正常后, 点击“设置参数”按钮可修改环境参数控制数值可对温室进行控制。由测试结果可得, 基于Android的温室数据多径通信移动终端能够稳定运行, 并且基本功能均能实现。
4 结语
本系统实现了基于Android的温室数据多径通信移动终端设计, 将温室环境监控与Android平台终端相结合, 运用Wi Fi技术作为温室环境参数采集与控制模块的组网方式, 采用GPRS, 3G等移动互联网技术作为移动监控客户端远程访问Web服务器获取数据的主要通信方式, 除此之外, 还创新的应用Wi Fi的AP模式, 在近程时作为移动监控客户端获取数据的方式, 此模式能够快捷、无需网络成本即可获取数据。用户通过客户端查看与控制温室环境参数, 使用无线方式对温室环境进行全面、及时的监控, 符合智能农业的发展趋势, 具有广泛的应用前景。
参考文献
[1]张天柱.温室工程规划、设计与建设[M].北京:中国轻工业出版社, 2010.
[2]李莉, 张彦娥, 汪懋华, 等.现代通信技术在温室中的应用[J].农业机械学报, 2007, 38 (2) :195-200.
[3]杜尚丰, 李迎霞, 马承伟, 等.中国温室环境控制硬件系统研究进展[J].农业工程学报, 2004, 20 (1) :7-12.
[4]左志宇, 毛罕平, 李俊.基于Internet温室环境控制系统研究设计[J].农机化研究, 2003, 4 (4) :104-107.
[5]赵伟, 孙忠富, 杜克明, 等.基于GPRS和WEB的温室远程自动控制系统设计与实现[J].微计算机信息, 2010, 26 (31) :20-22.
[6]李莉.基于智能手机的温室环境监控技术的研究[J].现代电子技术, 2012, 35 (24) .
[7]刘军良.Wi Fi技术在温湿度远程监测系统中的应用[J].自动化仪表, 2014, 35 (6) :79-82.
[8]胡集仪.使用JSON改进WEB数据传输[J].科技信息, 2008 (35) .
[9]祝瑞, 车敏.基于HTTP协议的服务器程序分析[J].现代电子技术, 2012, 35 (4) :117-119.
[10]罗亚非.基于TCP的Socket多线程通信[J].电脑知识与技术, 2009 (3) .
[11]任中方, 张华, 闫明松, 等.MVC模式研究的综述[J].计算机应用研究, 2004 (10) .
相关文章:
android常用控件总结01-06
Android编程01-06
甲醛甲酚01-06
Android监控01-06
Android课程01-06
Android Activity 详述01-06
android项目心得01-06
android面试题目01-06
android移动开发答案01-06
android安全机制01-06