多Android设备

关键词: 测试 软件 移动 技术

多Android设备(精选八篇)

多Android设备 篇1

智能移动设备的普及和Android、iOS等系统的快速发展,促进了移动应用市场的发展。高质量的软件离不开测试,目前移动平台下的测试仍以手工测试为主,而移动应用技术的发展和用户体验提升对软件质量的要求越来越高,对相关测试技术提出了新的要求。 目前,Android已占据全球智能手机操作系统市场份额的首位,但相比iOS有规律的软件版本和硬件升级,Android存在碎片化问题。Android应用需要经过多设备反复测试,提高测试效率是移动应用测试亟需解决的问题。

软件测试可分为单元测试、集成测试、系统测试(包括确认测试、功能测试、性能测试、回归测试等)以及验收测试。目前,针对Android应用的测试技术主要有:

(1)单元测试。xUnit系列的开源框架是目前主流的单元测试框架。Android平台整合了JUnit测试框架和Instrumentation机制,可针对某个应用进行单元测试[1,2,3]。

(2)集成测试。 使用开源的Robotium[3,4]可以完成Android下的自动化集成测试,提供了各种模拟手势操作(点击、长按、滑动等),以及一些查找和断言机制的API,对各种控件进行操作,可结合Android官方提供的测试框架实现应用程序自动化测试。Robotium支持Android中的Activity、Dialog、Toast、Menu。但Robotium有签名限制,无法对跨APP或使用了签名加密的应用进行测试。

(3)系统测试。MonkeyRunner和Monkey[2,5]是An-droid自带的用于黑盒测试的工具。MonkeyRunner工具可用于系统功能测试和回归测试,通过MonkeyRunner可以解释指定的Python程序,对Android应用程序执行一系列操作,例如运行、发送模拟击键,截取、保存用户界面图片等。Monkey则是Android自带负载的测试工具,多用于性能测试,可在Android下完成一定的随机压力测试。

(4)UI测试。UI测试[6]也是Android的一项重要测试,现有工具有UiAutomator、Appium等。在应用上线前还需要组织兼容性测试[2]。目前,一些企业提供了多种机型的移动应用云测试服务[6],国内较著名的有Testin、中国移动MM社区终端池、百度移动云测试中心等。

此外,Android还提供了一些辅助工具,用于控制测试设备及监控测试系统的状态,例如adb、DDMS、logcat等。上述工具与框架已在移动应用领域有一定范围的应用,但Instrumentation、Robotium、UiAutomator等工具对连接的设备有限制,每次只能连接一台设备,如在多设备上测试,需要多次连接,给测试带来一定不便,影响测试效率。

2 多设备自动化测试实现

本文提出一种实现多设备自动化测试的方案,使测试依次在多个已连接的设备上运行,从而提高测试效率,该方案从Android自带的MonkeyRunner着手,容易实现。测试前需搭建环境,将Android应用程序要运行的设备连接到服务器,被测设备可以是真机设备,也可以是通过Android SDK启动并连接的虚拟机。

2.1 MonkeyRunner框架

Monkeyrunner[7]是一个Python语言解释器,Mon-keyrunner逐行解释使用Python编写的测试脚本,执行对应操作。MonkeyRunner基于Jython,Jython是运行在Ja-va平台上的Python解释器,可以直接将Python代码编译成Java字节码执行。Jython实际上是Python语言在Java中的一种完全实现。Jython有很多优点,可以和Java实现无缝集成,可以直接访问所有有效的Java类,用户界面可以使用Swing、AWT或SWT等。使用MonkeyRunner测试时,可根据需要灵活调用所有的Java库及Python库。MonkeyRunnerAPI在com.android.monkeyrunner包中,包含MonkeyRunner、MonkeyDevice和MonkeyImage等模块。常用模块及说明如下:

(1)MonkeyRunner。提供工具方法的类,提供用于连接设备或模拟器的方法waitForConnection,常用的有sleep等。

(2)MonkeyDevice。表示一个设备或模拟器,提供安装和卸载程序包的方法、启动活动的方法,发送键盘或触摸事件等。

(3)MonkeyImage。表示一个截图对象,提供截图,将位图转换成其它格式,比较两个MonkeyImage对象以及写图像到文件的方法。使用MonkeyRunner框架实现测试的步骤如图1所示。

MonkeyRunner提供录制与回放功能。 MonkeyRe-corder是MonkeyRunner提供的用于录制的模块。from…import语句用于导入所需要的模块。录制所用的脚本monkey_recorder.py关键代码如下:

打开录制界面后,在右侧会自动生成录制脚本。其中,Tap表示脚本记录在屏幕上的点击操作,Type表示输入操作,Wait表示等待。录完一个脚本后,将其保存为.mr文件,通过Export Actions进行保存。

录制成功后,可使用回放脚本monkey_playback.py重现之前录制的测试。monkey_playback.py的关键代码如下:

将录制和回放使用的脚本monkey_playback.py放在某个文件夹中,例如E盘根目录下。重置测试环境后,使用回放脚本monkey_playback.py即可进行脚本回放。

2.2 连接多设备的自动化测试

通过如下脚本代码可实现多设备连接(#后的内容为注释):

通过MonkeyRunner的waitForConnection方法,并指定设备名,可以同时连接并控制多个设备(包括虚拟设备和真机),通过MonkeyDevice提供的方法,进行程序安装、卸载、启动等操作。如要控制更多设备,可以模仿前述方法增加waitForConnection语句,并修改脚本。

3 实例分析

采用数组形式加入更多设备,使测试更高效。以测试Android自带的计算器为例,编写测试脚本,关键代码及注释如下:

如有更多需控制的设备,只需在前面相应添加Mon-keyRunner.waitForConnection即可,而不需要改动程序。运行脚本,即可观察到脚本依次在所有已连接的虚拟机上执行。运行结束后,在文件夹E:takeSnapshot下可以查看所有设备上运行结果的截图。

4 结语

本文根据Android应用测试需求,提出了一种在An-droid测试中实现多设备控制及自动测试的方案。从An-droid的测试框架MonkeyRunner入手,通过脚本实现同时连接多设备并自动在这些设备上运行测试,具有很强的可操作性和实用性,可大大提高测试效率,缩短项目周期,减少人工干预,还能在测试过程中通过脚本自动保存、分析截图。本文方法广泛适用于Android应用程序的自动化功能测试及回归测试,大大增强了测试用例的可重用性。

摘要:在测试Android应用时,通过MonkeyRunner框架及开发相关脚本,可实现脚本录制、多设备连接、自动执行测试、自动保存截图及对比等功能,提高测试用例的复用性,并有效减少Android碎片化带来的重复、繁琐的手工测试,使Android应用测试更高效。

关键词:安卓,自动化测试,多设备,MonkeyRunner,Python

参考文献

[1] 谢红霞,吴红梅.基于Android的自动化测试的设计与实现[J].计算机时代,2012(2):20-22.

[2] 杨丰盛.Android自动化测试之道[J].程序员,2011(4):112-114.

[3] 宋春雨.Android平台自动化测试的研究与实践[D].北京:北京邮电大学,2012.

[4] Robotium-google project hosting[EB/OL].http://code.google.com/p/robotium/,2013-04-07.

[5] 陈昊.Android手机自动化测试系统的设计与实现[D].西安:西安电子科技大学,2014.

[6] 张立芬,周悦,郭振.Android移动应用测试[J].中国新通信,2013(3):84-86.

多Android设备 篇2

本文描述的是,引导画面该如何才能较好的适配各种分辨率,了解此处有助于更好的定义引导画面,以及保持同设计师、工程师的良好沟通。

作为产品人员,需要向不同方向延伸了解一些知识,这些知识能让沟通更顺畅。

这些所了解的知识,可能会有一些错误,当发现问题时,随时更新自己的知识体系。

一、本文提到的引导画面的形式

类似下图,一个引导画面是一屏,左右拖动来切换

图1: 有道云笔记Android 1.2.0引导画面

图2:有道云笔记Android 2.0.0引导画面

二、实现方式之一:底色配合图片缩放

需要知道的是,同一DPI的设备也有不同的分辨率,比如Hdpi最常见的就有480×800和480×854的分辨率,还有其他的,比如480×640、600×1024….

因此,想对不同dpi做一种分辨率的方法,会存在问题。

我尝试用图来说明一下一张图片,如果不做处理在不同机器和不同分辨率上的显示样式:

以Galaxy Nexus为例,屏幕分辨率为720×1280,状态栏为50px,下方虚拟键盘栏为96px,所以实际中间图片大小为720×1134

2.1 在不同分辨率下的显示样式

让我们模拟下此720×1134的引导图在720×1280分辨率的设备上的显示样式如下图:

图A:720×1134的引导图在720×1280设备的显示样式

当我们在一台480×800分辨率的设备上显示时,图片会缩小为480px的宽度显示,此时高度对应会等比缩小为756px显示,假设此时状态栏标准高度为38px,则会空余16px的空间。如果我们设置背景颜色为红色,则此时显示状态如下图:

图B:720×1134的引导图在480×800设备的显示样式

同理,当我们在一台320×480分辨率的设备上显示时,假设此时状态栏标准高度为25px,等比缩放后,图片会缩小为455px(480-25) 的高度显示,此时宽度对应会等比缩小为289px显示,则会空余31px的空间。如果我们设置背景颜色为红色,则此时显示状态如下图:

图C:720×1134的引导图在320×480设备的显示样式

不再继续多举例了,

2.2 适配方案

从上述的例子来看,大图自动缩放后,最大的问题是上下、或左右会留出一些无法填充的位置。

所以,在边缘为纯色的情况下,我们只需要将背景填充为和边缘颜色一样的色值即可。

而且,我们只需要准备较大分辨率的一套,这样可以更好的保证在不同解析度设备上的效果。

2.3 缺陷

下图是在240×320的ldpi设备上的显示效果,如果仔细看,可以看到左右两侧竖向的颜色和中间部分的颜色有一些不一致。

原因还不确定,暂时未有明确结论,猜测可能和android的图像缩小显示机制有关系。

3.4 示例

(1) 有道云笔记Android 2.0.0的引导画面切图

(2) Android 2.0.0中的适配

√ 图片的周边保证是纯色的,这样才能有效的进行不同分辨率的适配。

√ 指定了720×1280的机器为标准参照设备,切出去除了虚拟键盘和状态栏的部分

√ 设定引导界面的背景色为和边缘色一致的颜色

三、实现方式之二:9-Patch

3.1 适配方案

前提:

√ 为了保证四边的缩放效果,边缘需要设定为纯色。

√ 为保证缩放效果,采用xhdpi的图片素材来做9-Patch的原始图片

适配:

√ 在draw 9-patch中,设定图片顶部的左侧和右侧一个像素为拉伸区域,设定图片右侧的顶部和底部一个像素为拉伸区域。

结果:

√ 类似实现方式一的图像示例,只是适配中出现的红色部分,会因为设定了拉伸区域而自动用设定的拉伸区域去填充,从而达到适配效果

3.2 缺陷

目前发现当图片较大时,9-Patch的图片缩放会出现问题,未能按照预期缩放。

3.3 示例

有道云笔记Android 1.2.0的引导画面采用9-Patch的方式实现,见图1

四、实现方式之三:透明引导图

4.1 适配方案

√ 提供背景透明的引导图

√ 提供背景的色值

√ 填充背景色,并放置背景透明的引导图

4.2 缺陷

png的图会比jpg的图大一些

五、小结

方式三是目前倾向采用的方式,本文如有进一步的实践信息,再予以补充。

上述描述和理解中,可能存在错误和问题,如有不当,敬请指出。 (完)

多Android设备 篇3

目前大多数的Android应用开发都基于单一设备,而便携式智能设备的广泛使用对多设备之间协同交互的需求越来越迫切。基于此,设计了一种无线局域网内多Android设备协同交互实验系统。首先分析了交互系统功能及其涉及的Android开发技术,接着进行了人机交互界面以及相关功能设计,最终通过多Android设备间的图片、视频及控制命令的无线传输,完成不同Android设备之间的协同控制与交互。将智能系统应用开发引入到大学生实验系统设计中,能够增强实验趣味性,激发学生的学习兴趣,进而培养学生的动手能力、创新能力。

1 Android系统应用开发简介

从开发的角度来看,Android是一个软件集,它包括一个操作系统、中间件和相关应用程序。Android SDK提供了在Android平台上使用Java语言进行应用开发必需的工具和API接口[1,3]。

Android依赖Linux内核提供核心服务,包括安全机制、内存管理、进程管理、网络、硬件驱动等。基于Linux内核,Android提供了多个程序库和运行时环境,利用Android提供的程序库可以方便进行多媒体(图片、视频)操作,Web控制,数据库读取以及图形显示等。而运行时环境运行在Dalvik Java虚拟机上,主要提供Java功能。除了基于Linux的系统核心以及各种程序库和运行时环境,Android还提供了应用框架以及部分核心应用,应用框架允许开发者使用Java编写应用程序,并能够充分的访问所有核心应用的API,简化组件的重用。部分核心应用包括智能设备常见的核心应用,比如联系人、电子邮件、日历、电话等。

综上Android的系统构架如图1所示,可见Android为开发者提供了包括硬件驱动、网络连接、数据库、多媒体操作、人机交互以及开发工具集,可以方便的进行应用开发。

2 实验系统功能设计

本实验系统基于Android操作系统,以图片和视频为对象,完成多个Android设备间的图片或视频的传输,不同设备间对同一图片或视频进行协同控制等。结合Android操作系统的人机界面,功能设计如下。

1) 上线检测功能:系统启动时,向局域网内广播本系统的地址,系统运行时,检测其他设备的上线及地址信息等并进行图形化显示。

2) 图片或视频传输:在待机界面,打开某一操作对象(例如图片或视频文件),按住改操作对象,向界面显示的另一设备图标滑动,则将对象发送到相应的Android设备。

3) 图片或视频远程控制:当多台设备打开同一操作对象时,控制一台设备,对其他设备的对象进行操作(例如图片的缩放、视频的播放控制等)。

4) 图片或视频的协同控制:多台设备可以对同一对象进行操作,比如多台设备协同显示较大尺寸的图像,或同步播放相同的视频。

实际中,为了保障实验的可行性,设计了基本的实验操作流程供学生参考,具体如下:

1) 连接Wi Fi,保证不同Android设备位于同一无线局域网,并将设计程序安装到设备中;

2) 打开设备中的的应用,在屏幕右上角显示本机IP地址,当其他设备应用打开后,同时显示其他设备的IP地址;

3) 点击菜单键(或其他操作)加载图片(或视频);

4) 按住图片,将其向屏幕中其他某一设备进行滑动,将图片发送至相应设备,并在接收设备中进行接收和图片显示(滑动操作可以有惯性移动效果);

5) 当不同设备打开同一图片时,双击其中一设备图片,其他设备中图片会放大,再次双击,图片缩小;

6) 当不同设备打开同一图片时,双指按住其中一设备图片进行伸缩,各设备中的图片随之缩放;

7) 两台设备同时显示一张图片,在一设备中滑动图片控制不同设备的显示比例;

8) 当不同设备打开同一视频时,通过调整其中一设备的播放进度,其他设备中视频播放进度进行同步。

3 实验系统实现方案分析

Android系统开发环境配置主要包括:1) JDK安装;2) Android开发工具安装与配置;3) 创建Android虚拟机(AVD)[5]。

3.1 JDK安装与配置

由于Android系统开发使用Java语言,因此首先需要安装Java开发环境JDK,将JDK安装到相应位置,并进行环境变量设置。

右键点击“我的电脑”并依次选择“属性→高级→环境变量→系统变量”中添加以下环境变量:

JAVA_HOME: D:Program FilesJavajdk1.6.0_18(安装JDK的目录);

CLASSPATH: .; %JAVA_HOME%libtools.jar; %JAVA_HOME%libdt.jar; %JAVA_HOME%bin;Path: %JAVA_HOME%bin;

增加Path: %JAVA_HOME%bin;

安装完成之后,可以再检查JDK是否安装成功。打开cmd窗口,输入java—version查看JDK的版本信息。出现类似图2的画面表示JDK安装成功。

3.2 Android开发工具安装与配置

安装Android SDK,并在用户变量中新建PATH值为:Android SDK中的tools绝对路径。重启计算机以后,进入cmd命令窗口,运行android—h检查Android SDK是否安装成功。如果有类似图3画面表明Android SDK安装成功。

3.3 创建Android虚拟机(AVD)

为使Android应用程序可以在模拟器上运行,必须创建Android虚拟机(AVD)。在Eclipse中。选择Windows > Android SDKManager,下载相应版本的开发包(每发布一个新的Android版本就会有一个新的包)安装之后就可以创建相应版本的Android虚拟机了。

在Eclipse中。选择Windows > Android Virtual Manager,选择一个设备(Device)(如图4) 就可建立相应的Android虚拟机。设置好相关参数并启动,就完成了Android系统的开发环境配置,可以模拟相应的Android系统版本并进行应用开发了,图5为模拟的Android 2.3.3版本的启动界面。

3.4 系统功能实现方案

设同一无线局域网内有2台Android设备A和B,本系统需要完成的核心功能包括:1) A、B设备之间的数据(图片或视频)发送与接收;2) 通过一台设备A控制另一台设备B的图片(或视频)的显示与播放;3) A、B设备协同工作,共同显示一张图片或同步播放同一视频。

协同交互系统的关键是不同设备之间的控制命令及数据的发送与接收。利用无线网络传输技术可以使用TCP Socket和UDPSocket实现图片传输和操控命令的收发,两种Socket通信模型如图6所示。

其中UDP Socket可以实现广播发送,无需接收方的IP地址,因此当需要多个Android设备之间数据链接时可以采用UDP通信,UDP通信流程如图7所示。而对于已连接设备之间的通信就需要使用TCP通信,根据IP地址,TCP通信可以完成特定设备间的数据传输,因而TCP通信更加稳定和安全,TCP通信流程如图8所示。

协同交互系统的另一关键是命令传输与控制方式,Android操作系统支持触屏功能,通过不同的手势动作进行不同的对象控制,通过Android SDK提供了大量的函数库(例如Activity类、Simple On Gesture Listener类等),能够完成滑动、点击、双指缩放等手势动作的识别。

最后,针对不同的控制对象,其需要的操作函数也不相同,例如对于图片以及视频的显示与播放需要利用Imageview控件以及videoview的相关函数,对于多任务的操作需要利用多线程编程技术等。

综上,以图片或视频为控制对象的多Android设备的协同交互系统涉及TCP Socket,UDP Socket,Handle消息传递,多线程技术,手势识别,Imageview、Video View等多种技术的综合使用。具体地,1) 使用UDP Socket实现了设备的上线通知检测;2) 使用TCPSocket技术实现了数据以及操控命令的收发;3) 使用Handle消息传递机制实现了对消息的类间传递和处理;4) 使用多线程编程技术实现了跨UI线程的网络传输;5) 使用多点手势识别实现了图片的双击缩放,两指自由缩放,滑动发送等涉及UI界面上图片操作的实现;6) 使用Imageview、Video View等图片视频相关操作技术实现了图片的显示及缩放、视频的播放及进度调整等功能。

图9为系统开发效果示例,其中图9(1) 是通过滑动一设备图片将其发送至另一设备中,图9(2) 是通过两指自由缩放操作另一设备图片显示,图9(3) 是两台设备协同显示同一张图片以及不同设备的视频协同操作功能。

4 实验系统应用效果

培养大学生的创新精神,实验教学不能仅仅验证理论知识,更需要让学生参与到实验设计中,在实验设计过程中提高实践能力[6,7,8,9]。所开发的系统首次应用于中国石油大学(华东)大学生创新实验设计中即受到广大学生的欢迎,通过该系统设计实验,使学生掌握了Android系统开发流程及系统设计方法,Android系统灵活的人机交互方式,比传统的鼠标键盘操作更能激发学生的学习兴趣及创新思维,在该系统设计实验的启发下,很多同学提出了便携式导航软件系统,智能听诊器,智能导盲手杖,智能汽车安全预警系统等众多新的想法与设计思路,真正培养了学生的动手能力及创新能力。

5 结束语

吐槽Android设备六宗罪 篇4

升级缓慢

如果快速和频繁的升级对你很重要的话, 谷歌的Nexus系列产品或许可以让你满意。相比之下, 其他Android设备的系统升级慢得就像一只生病的乌龟, 它们原本可以做得更好。更糟糕的是, 有些厂家先前作出了升级承诺, 后来却食言了。现在, 有些手机还在等待升级到Android 4.0, 更遑论升级到Android 4.1 (Android 4.2甚至连问都不要问) 。再看看那些没有兑现的承诺。一些制造商多次食言, 至今仍然没有兑现。

独家运营商

三星Galaxy S III手机真的比HTC's One X先进很多吗?No。它们在很大程度上属于同一水平, 而且有人甚至会说, HTC One X在某些方面还超过了Galaxy S III。那么, 为什么是Galaxy S III销售得那么好, 而HTC One X却还在挣扎中求生存?很简单:市场营销和可用性。市场营销是一个棘手的问题, 但可用性问题却简单得多:三星公司的主要产品适用于所有的运营商。HTC One X和HTC One X+却由AT&T独家运营。 (同样, 摩托罗拉新推出的Droid Razr手机也是由威瑞森独家运营) 。独家运营对顾客和制造商都是有害的。“单一运营商”概念已经过时。抛弃它吧。

不必要的UI设计

许多制造商往往通过新的UI设计来实现“差异化”, 这种做法并非无可非议。试想一下, 如果制造商把精力集中在通过特殊的硬件、出色的设计和超长的电池寿命来实现“差异化”, 而不是任意改变UI设计, 那该多好。很多制造商对Android 4.x进行的修改是可怕的错误。制造商可以通过辅助软件的功能创新来提高产品价值, 完全没有必要进行多余的UI修改。举例来说, 三星Galaxy Note II手机不寻常的外形和手写笔功能已经能够让它脱颖而出, 它并不需要一种“独特”但臃肿而混乱的UI来提高销量。

无法卸载的臃肿软件

许多制造商和运营商通过在手机上搭载臃肿软件来赚钱。在一些Android手机上, 预装的臃肿软件已经已经多到荒谬的地步, 而且很难卸载。对用户来说, 这不但是一种伤害, 也是一种侮辱。所以, 让我们进行一个合理的折衷:如果非如此不可的话, 制造商和运营商可以在手机上预装臃肿软件, 但用户应该享有卸载多余软件的权利。这样, 用户也有了自主权, 但制造商和运营商仍然可以盈利, 那些付了钱的公司也作了广告。

锁定bootloader

以前, 也许除了发烧级玩家们之外并没有多少人关心Boot Loader的锁定问题。随着人们对个性化的追求越来越高, 手机是否锁定Boot Loader, 是否可以加载第三方固件 (ROM) , 这个问题已经引起了越来越多用户的关注。摩托罗拉公司曾经在去年3月作过一项用户调查, 调查结果表明手机用户对Boot Loader解锁需求已超出意料之外。那些非常在意解锁Bootloader的用户只是想对手机有完全的掌控权, 他们大都是程序员、主题制作者、开发人员。这些人总想让手机表现出更好的性能。为什么不能满足他们的愿望呢?有些制造商锁定Boot Loader主要是出于安全考虑。然而, 有些制造商却坚持扮演上帝的角色, 对其产品的每一个方面都加以控制。这些制造商在打一场必败之仗。那些喜欢修改手机系统的玩家还是会去修改, 锁定Boot Loader只是给他们增添了一些困难。

欠佳的电池寿命

多Android设备 篇5

随着计算机图像处理技术的发展,采用图形与图像处理技术,进行视景仿真实现虚拟场景的重构和再现,在游戏开发和军事演练等领域具有重要的应用价值,当前,Android平台上的手机游戏开发成为视景仿真应用的一个重要方向,Android平台上的手机游戏开发是结合虚拟现实技术和控制技术实现游戏各种功能的应用和场景的虚拟再现。Android平台上的手机游戏具有多感知性、交互性、构想性,研究手机游戏虚拟场景仿真技术,实现对动态视点的随动和跟踪渲染,在跟随、旋转和固定偏移的运动模式下,对游戏中视景仿真界面进行动态视点随动,保证视景界面的逼真性,相关的算法研究受到人们的重视[1,2,3]。

传统方法中,对机游戏中视景图像的视点随动采用亮点跟踪方法、小生境算法、LOD渲染和网格渲染算法等。该类算法主要是通过对手机游戏虚拟场景的内部结构参数进行视景重构,采用GPU实时图像跟踪渲染算法进行偏移量测试,提高了视点的随动性能,但是当虚拟场景的复杂度较高时,动态视点随动跟踪渲染的效果不好[4,5,6]。采用亮点跟踪算法对观察者视线范围的限定较大,在当前亮点的视线范围内视景渲染效果不好。针对上述问题,本文提出一种基于多线程边缘轮廓特征信息交互的Android手机游戏视景仿真动态视点随动技术,首先进行基于Android平台的手机游戏虚拟视景仿真的参数模型构建,提取游戏视景图像的边缘轮廓特征信息,进行多线程信息交互,基于多层次细节渲染方法实现对游戏视景场景的动态视点随动跟踪,仿真实验进行了性能测试,展示了本文算法在手机游戏视景仿真和视点随动跟踪中的优越性能,视景仿真的逼真度较高。

1 视景场景仿真的参数体系和物理模型构建

1.1 基于Android的手机游戏视景仿真功能模型

为了实现对手机游戏虚拟场景的视景仿真和三维建模,需要首先构建手机游戏虚拟场景仿真的三维参数体系,选择合适的方法求得各个建模点的分布参数。手机游戏的虚拟场景仿真的三维建模软件采用MAYA、3DStudio MAX,基于Android的手机游戏视景仿真的设计性能指标支持逻辑筛选、分离面裁剪、纹理动画序列等功能,进行矢量编辑和建模过程中,通过输入类似地图矢量数据等手机游戏开发的原始信息数据,高效地生成、编辑手机用户所感兴趣的模拟区域,在限定的范围内随机放置某些物体进行视景伴随跟踪[7],手机游戏虚拟场景的三维建模的主要步骤描述如图1所示。

根据图1可见,对手机游戏虚拟场景三维建模中参数体系设计是关键,这里假设x(t)是一个手机游戏虚拟场景建模的三角网模型贡献点,Xp(u)表示x(t)在限定模型边界范围的游戏界面的视景微小建模点,手机游戏虚拟场景视景模型由大量的虚拟场景构成,需要首先生成表述手机游戏的虚拟场景数据的三维体纹理数据,在当前视点视线范围内,定义模型边界范围的图像序列表示式为:

式中,zi(t)表示Zi(t)的观测值,t为观察者视线范围的时间参数(i=1,2,…,T),i表示手机游戏虚拟场景的位置参数(t=1,2,…,N),采用STARMA模型进行手机游戏虚拟场景的三维立体数据建模[8,9,10]。把需要绘制的场景状态信息和渲染指令输入到场景数据库中,得到手机游戏虚拟场景模型数学表达式为:

式中,z(t)表示t时刻观测值的N×1维向量,通过模型多边形,纹理等信息的重构,对手机游戏中的图像场景的纹理和背景区域进行多维透视变换处理,纹理和背景的三维控制由常数Kbbw(S)、Kdcp(S)、Da、p、Mαa、b、Mβa、d、p组成的矩阵向量。进而将场景图像数据绘制到显示终端,在网格点所在的位置进行空间插值后,进入下一帧的渲染循环,图像场景渲染的迭代式为:

上式中,φkl为手机游戏虚拟场景的三维体纹理数据,θkl为手机游戏虚拟场景附着物几何表面沿法向向外偏移向量。通过上述方法进行基于Android平台下手机游戏开发视景仿真,用Creator的Terrain菜单模块,打开需要的工程文件,进行游戏开发,整个游戏视景仿真的文件的组成如图2所示。

1.2 游戏视景的物理模型建模

在上述进行基于Android平台下手机游戏开发视景仿真的总体描述和渲染设计的基础上,进行物理模型建模。在物理模型建模之前,首先将场景数据库中的相关数据(如模型多边形,纹理等)渲染至帧缓存,按照LOD方法进行多层次细节管理,三维手机游戏虚拟场景的多层次细节LOD映射过程为:

其中,vs表示三维手机游戏虚拟场景图形渲染引擎中的原始点,vt为三维手机游戏虚拟场景的模型映射点。使用Open Flight建模环境得到三维手机游戏虚拟场景的全局最佳重构路径,采用网格矢量裁剪的方法求取整个场景中的高分辨率像素信息,得到不同分辨率下的视景场景的网格重构图如图3所示。

在确定网格分辨率时,通常离观察者近的地方保持较高的分辨率,在Lynx Prime面板中需要创建MarineWaveGenerator FFT,在机器视觉下进行动态视点观测,得到手机游戏虚拟场景的物理模型渲染网格权重为:

其中,ωkn为所需视野范围的大小,N为给定网格渲染点数,设定渲染个数、纹理、周期,基于多层次细节(LOD)渲染,得到Android动态视点跟踪的目标场为:

其中,n为待贴纹理序列个数,m为嵌入维数,τ为时间延迟,随着视线绕Z坐标轴方向转动,进行动态视点跟踪。

2 多线程交互的Android动态视点随动技术改进实现

在上述进行了游戏视景仿真和物理模型重构的基础上,进行手机游戏视景的动态视点随机设计,对游戏中视景仿真界面进行动态视点随动,保证视景界面的逼真性。传统方法中对手机游戏中视景图像的视点随动采用亮点跟踪方法,对观察者视线范围的限定较大,在当前亮点的视线范围内视景渲染效果不好。为了克服传统方法的弊端,本文提出一种基于多线程边缘轮廓特征信息交互的Android手机游戏视景仿真动态视点随动技术,通过提取游戏视景图像的边缘轮廓特征信息,进行多线程信息交互,游戏视景图像的边缘轮廓特征信息的提取过程描述为如下,首先假设在手机游戏虚拟场景表面网格面中有2×2个像素点,得到的全部帧图像在(x,y)处的灰度值为:

其中,YG为游戏虚拟场景目标视觉特征的尺度,BG为图像的差分尺度,IG为单位矩阵,得到单帧角点的分块信息素为:

采用边缘分割对静态视点视觉信息进行直方图分割,得到当前时刻下的手机游戏界面的动态运动公式为:

其中,为手机游戏中的界面随动的方位角,k为迭代次数,求解视景动态跟踪的运动参数方程式为:

其中,Δx和Δy分别表示手机游戏虚拟场景目标视觉图像的水平位移和竖直位移,k表示每帧图像尺寸。计算目标候选区域特征。采用白平衡偏差补偿方法得到目标特征拓扑结构上(a,bm)点处的相位补偿值:

其中,λ是正则化参数,采用不同分辨率下为二阶累积泰勒展开,对手机图像的边界信息进行提取,即:

即=fi-fj,Δiv=fi-fk,fj、fk分别表示能见度fi左边和上边的一阶邻域像素灰度值,在Lynx Prime中设置能见度范围,来模拟各种光照强度下的手机游戏视景界面的色差,进行M-1次传递迭代,得到手机游戏虚拟场景的成像分辨率:

根据上述方法,将图像的亮点模型进行静态视点平滑处理,根据视景图像的位置、尺度、主方向等信息,采用多线程信息交互,实现动态视点随动跟踪和定位。最后,进行手机游戏开发实现,在Open Flight的建模环境提供了三维图形观察器,灵活地加速数据库的组织、模型,用极少的四边形构成高程网格图模拟动态视点的对应顶点。为了增强图像的真实感,使用纹理映射技术,提高图形显示的刷新频率。为了避免当视线转动到法向垂直时,这个面就变成一条直线的情况,通过Geometry Tools把面变换为体,选择了按边旋转的方式,由此实现基于多线程边缘轮廓特征信息交互的Android手机游戏视景仿真动态视点随动。

3 仿真实验与性能分析

为了测试本文算法在实现Android手机游戏视景仿真的动态视点随动跟踪定位中性能,进行仿真实验,实验的硬件环境为:Intel Core2双核T5550 CPU,2GB DDRII内存,NVIDIA Ge Force 8400M GS。软件采用的是Vega Prime软件进行视景仿真,通过Creator的Raster to DED工具进行实体模型建模。本文开发的手机游戏为一个模拟海上作战的手机游戏,为了使得动态视点将停留在其所指定的坐标位置上,需要进行动态视点随动处理,首先构建游戏的三维物理模型,如图4所示。

在上述模拟模型构建的基础上,在Android客户端进行游戏开发,通过函数可以对视点位置进行设置、变更,设置观察位置:

仿真系统中,对于单一的背景声音采用Win32 API函数来实现,基于多层次细节渲染方法实现对游戏视景场景的动态视点随动跟踪,在游戏场景中绘制逼真天空和海面效果,得到本文方法进行相对动态视点随动的视景仿真效果图如图5所示。从图5可见,采用本文方法进行手机游戏视景的动态视点随动,视点附连在场景运动体上,能有效实现包括跟随、旋转和固定偏移三种相对运动方式,具有较好的逼真性能。

4 结束语

本文结合在Android平台下进行手机游戏开发项目进行动态视点随动技术改进,优化视景仿真效果,本文提出一种基于多线程边缘轮廓特征信息交互的Android手机游戏视景仿真动态视点随动技术,首先进行基于Android平台的手机游戏虚拟视景仿真的参数模型构建,提取游戏视景图像的边缘轮廓特征信息,进行多线程信息交互,基于多层次细节渲染方法实现对游戏视景场景的动态视点随动跟踪,仿真结果表明,该技术能有效实现对手机游戏视景的动态视点随动,视点附连在场景运动体上,手机游戏开发的视景逼真度较好,性能优越。

参考文献

[1]李志丹,和红杰,尹忠科,等.基于块结构稀疏度的自适应图像修复算法[J].电子学报,2013,41(3):549-554.

[2]盂勃,韩广良.基于改进的尺度不变特征变换特征点匹配的电子稳像算法[J].计算机应用,2012,32(10):2817-2820.

[3]王俊,朱利.基于图像匹配-点云融合的建筑物立面三维重建[J].计算机学报,2012,35(10):2072-2079.

[4]罗泽峰,单广超.基于网络和虚拟多媒体技术的海战平台视景仿真实现[J].物联网技术,2015,5(3):91-92,94.

[5]冯晓萌,吴玲达,于荣欢,等.直接体绘制中增强深度感知的网格投影算法[J].电子与信息学报,2015,37(11):2548-2554.

[6]葛立志.基于全弹道控制分析的水下航行器攻击模型视景仿真[J].舰船电子工程,2015,35(3):137-141.

[7]房娟,刘洪英,陈增淦,等.基于显微高光谱成像技术的运动和感觉神经分类研究[J].影像科学与光化学,2015,33(3):203-210.

[8]张广燕,王俊平,邢润森,等.PSLIP新模型及在边缘检测和图像增强中的应用[J].电子学报,2015,43(2):377-382.

[9]AMENT M,SADLO F,DACHSBACHER C,et al.Low-pass filtered volumetric shadows[J].IEEE Transactions on Visualization and Computer Graphics,2014,20(12):2437-2446.

多Android设备 篇6

关键词:计算机应用,移动互联网,Android,多分辨率,UI

0 引言

2007年11月,Google公司发布基于Linux2.6内核的移动终端操作系统—Android,由于其开源性,得到很多手机厂商的追捧和应用开发者的青睐。近年来智能手机发展迅速,运行速度、存储容量和可靠性等指标有了显著提高[1],当今的智能手机用户对应用软件的舒适性和美观性有了更大的期望,应用程序界面友好性已经越来越重要。但是由于Android的开源性,硬件厂商屏幕分辨率不统一,据统计目前市场上Android系统手机的分辨率有10余种,分辨率分布如此广泛使得开发者在处理多分辨率适应方面遇到了不少难题。文章首先介绍Android平台的系统架构及资源管理方法,之后介绍目前开发者在处理多分辨率时采用的方法,而后重点分析Android平台资源加载机制并且结合实例给出多分辨率的处理步骤及技巧,最后介绍测试多分辨率效果的方法。

1 Android平台简介

Android是一个包括操作系统、中间件和关键应用的移动设备软件堆[2],Android系统和其他系统一样,采用分层的架构。由下至上依此为Linux操作系统和驱动、程序库及Android运行时环境、应用程序框架层、应用层。Android应用程序的基本组件有Activity、Intent、Broadcast Receiver、Service四种,各个组件的配置信息以及权限管理、版本管理等配置信息都保存在Android Manifest.xml中。

1.1 Android应用程序资源管理

手机界面上加载的图片是Android资源的一种,除此之外还有XML资源(anim.xml layout.xml等)以及原数据文件(音视频文件等)[3]。新建一个Hello Android的Android应用程序,默认生成的文件架构包含src,gen,assets,res等文件夹,以及Android Manifest.xml配置文件。src文件夹中保存的是Android源代码,res文件夹代表应用程序需要使用到的资源文件,gen包中包含R.java文件。Res文件夹中包含的所有资源文件都对应在R.java中。

当开发者在res/目录中任何一个子目录中添加相应类型的文件之后,ADT会在R.java文件中相应的匿名内部类中国自动生成一条静态int类型的常量,对添加的文件进行索引。Android系统采取这种架构使视图等资源文件与控制代码分离,实现松耦合。然而可以使用R.java文件在代码中对相应的资源文件进行存取,灵活操作。

1.2 一般多分辨率处理方法及其缺点

1.2.1 图片缩放

基于当前屏幕的精度,平台自动加载任何未经缩放的限定尺寸和精度的图片。如果图片不匹配,平台会加载默认资源并且在放大或者缩小之后可以满足当前界面的显示要求。例如,当前为高精度屏幕,平台会加载高精度资源(如Hello Android中drawable-hdpi中的位图资源),如果没有,平台会将中精度资源缩放至高精度,导致图片显示不清晰。

1.2.2 自动定义像素尺寸和位置

如果程序不支持多种精度屏幕,平台会自动定义像素绝对位置和尺寸值等,这样就能保证元素能和精度160的屏幕上一样能显示出同样尺寸的效果。例如,要让WVGA高精度屏幕和传统的HVGA屏幕一样显示同样尺寸的图片,当程序不支持时,系统会对程序慌称屏幕分辨率为320×480,在(10,10)到(100,100)的区域内绘制图形完成之后,系统会将图形放大到(15,15)到(150,150)的屏幕显示区域[3]。

1.2.3 兼容更大尺寸的屏幕

当前屏幕超过程序所支持屏幕的上限时,定义supportsscreens元素,这样超出显示的基准线时,平台在此显示黑色的背景图。例如,WVGA中精度屏幕上,如程序不支持这样的大屏幕,系统会谎称是一个320×480的,多余的显示区域会被填充成黑色。

1.2.4 采用Open GL动态绘制图片

Android底层提供了Open GL的接口和方法,可以动态绘制图片,但是这种方式对不熟悉计算机图形学的开发者来讲是一个很大的挑战。一般开发游戏,采用Open GL方式。

1.2.5 多个apk文件

Symbian和传统的J2ME就是采用这种方式,为一款应用提供多个分辨率版本,用户根据自己的需求下载安装相应的可执行文件。针对每一种屏幕单独开发应用程序不失为一种好方法,但是目前Google Market对一个应用程序多个分辨率版本的支持还不完善,开发者还是需要尽可能使用一个apk文件适应多个分辨率。

2 多分辨率处理方案详解

2.1 基本术语介绍

2.1.1 屏幕尺寸

真正的物理尺寸,屏幕对角线的长度,单位是英寸。为了简化起见,Android把支持的所有物理尺寸分成了4组:small,normal,large,extra large。

2.1.2 屏幕密度Density

一定物理范围的像素的个数,单位通常是dpi(dots per inch),即每英寸的点数。例如一个低分辨率屏幕相对于高分辨率屏幕在一定的物理区域内包含的像素点要少。为了简化起见,Android将所有的屏幕密度分成四组:low,medium,high和extra high。

2.1.3 方向Orientation

从用户视角来看的屏幕的方向,Portrait纵向和Landscape横向。

2.1.4 分辨率Resolution

屏幕上所有的像素点数目,一般用480*800的形式来表示。密度无关像素dp:Android平台中虚拟的像素单位,定义成一种密度无关的形式,像素px和dp的转换公式为px=dp*(dpi/160)。在界面开发中应使用dp作为像素单位,从而保证在不同的屏幕密度上控件所占的实际px因密度而自动调整。

2.2 手机屏幕的分类

Android采用两种标准对屏幕进行分类。按照屏幕尺寸分为四组small,normal,large,extra large;按照屏幕密度分为四组low,medium,high和extra high,其分界线如图1所示。

为了优化程序UI,让其适应多种分辨率并能清晰显示,一般情况下需要为不同屏幕大小密度提供不同的图片文件和对应的布局文件,在运行的时候,Android系统会根据当前设备的屏幕大小及密度等信息,选择加载其中一套匹配的资源加以运行,从而达到适应多分辨率的效果。

2.3 Android支持多分辨率原理及步骤

由以上分析,默认的加载方式都不能很好地适应不同的分辨率,Android从1.6开始支持多种分辨率的处理,原理简而言之就是根据屏幕参数,动态加载资源文件。在Android项目文件结构中,drawable文件夹下包含三个子文件夹,分别为drawable-hdpi,drawable-mdpi,drawable-ldpi,分别存放hdpi,mdpi,ldip的位图。应用程序运行时,Android系统会根据当前设备的屏幕大小、分辨率、屏幕密度、方向、长宽比等信息,选择相应文件夹进行加载。Android配置修饰符的定义规则如下:

1)在res文件夹下新建目录,命名为-这种格式,其中为标准资源名称,例如drawable或者layout;即修饰符,指定对应的屏幕参数,比如normal/small/large,hdpi/mdpi/ldpi,land/port,long/notlong等。

2)在步骤1新建的文件夹中存入相应的资源,比如位图资源或者layout资源,资源文件的名字必须与默认资源文件的名字相同。例如

3)Android系统支持多分辨率的机制离不开AndroidManifest.xml文件的supports-screen元素,若应用程序要适应多种分辨率,需要将any Density设置为true。

2.4 界面设计技巧

前面的部分已经详细讲解了如何架构应用程序使其更好地适应多种分辨率屏幕,此外,在界面设计和控制中我们还应该掌握一些原则或者技巧,从而使应用程序界面友好、适应性强。

1)在XML layout文件中定义长度的时候,最好使用wrap_content,fill_parent,或者dp进行描述,这样可以保证在屏幕上面展示的时候有合适的大小。例如,一个view layout_width="100dip",在HVGA@160 density的设备上显示100个px,而在WVGA@240 density的设备上显示150个px,但是所占的物理尺寸时相同的。

2)在Activity或者其他控制视图加载的代码处,不要使用像素单位的硬编码。

3)不要使用Absolute Layout。绝对布局是由Android UI toolkit提供的布局容器中的一种。但是与其他layout不一样的是,Absolute Layout使用固定的位置表示,使得在不同的屏幕上面显示效果不好,因此Absolute Layout在sdk1.6及以后的版本中被弃用了。

4)为不同屏幕密度的手机,提供不同的位图资源,可以使得界面清晰无缩放。

3 多分辨率兼容性测试方案

在产品发行之前,要在所有的目标手机上进行全面的测试。Android SDK包含了一套测试多分辨率的机制。可以自己定制avd作为应用程序的测试环境,avd会模拟真实机器的屏幕大小和密度。例如图2为模拟器的列表,可以将程序运行在这四个模拟器中进行多分辨率的测试。

4 结论

本文介绍Android平台的体系架构和分辨率相关的术语,详细论述资源加载原理和多分辨率处理的详细流程,最后给出了测试应用程序是否适应多种分辨率的方法。结合本人实践经验进行讲述,内容深入浅出,较完整地论述了如何使应用程序尽可能多地适应多种分辨率屏幕。

参考文献

[1]孙晓宇.Android手机界面管理系统的设计与实现[D].北京:北京邮电大学,2009.SUN X Y.The design and implement of Android UI System[D].BeiJing:BeiJing University of Posts and Tele-communications,2009.

[2]韩超,梁泉.Android系统原理及开发要点详解[M].北京:电子工业出版社,2009.HAN CH,LIANG Q.Android system theory and in-sight of development points[M].Bei Jing:Electronic Industry Press,2009.

[3]E2ECloud.深入浅出Google Android[M].北京:人民邮电出版社,2009.E2ECloud.Simple Google Android[M].Bei Jing:Posts and Telecom press,2009.

多Android设备 篇7

关键词:温室,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设备 篇8

1相关技术

1.1 QR Code

QR码的“QR”是Quick Response的缩写。这种二维码能够快速读取,与之前的条形码相比,QR码能存储更丰富的信息, 包括对文字、URL地址和其他类型的数据加密。QR码1994年由日本Denso-Wave公司发明,QR码的标准JIS X 0510在1999年1月发布,而其对应的ISO国际标准ISO/IEC18004,则在2000年6月获得批准[3]。QR码是属于开放式的标准。

1.2 ZXing

ZXing是一个开源的开发库,该库支持条形码的编码和解码。该库支持的条形码编码格式有UPC-A、EAN-8、EAN-13、 Code 39、Code 128、ITF、Codabar、Plessey、MSI、QR Code、 PDF-417、Aztec、Data Matrix;该库支持的条形码解码格式有UPC-A、UPC-E、EAN-8、EAN-13、Code 39、Code 93、Code128、ITF、Codabar、MSI、RSS-14 (all variants)、QR Code、Data Matrix、Aztec and PDF-417;该库的运行平台有Java环境、An-droid环境等[4]。

ZXing库中有几个非常重要的类包,分别为Capture Activi-ty、Capture Activity Handler、Decode Thread、com.google.zxing.cli-ent.android.camera、Viewfinder View。其中,Capture Activity类, 用来启动条码识别扫描器的类;Capture Activity Handler类,用来调用条码解码线程的类;Decode Thread类,用来解码条码的线程的类;com.google.zxing.client.android.camera包,用来控制移动端摄像头设备的包;Viewfinder View类,是负责实现自定义扫描控件的类。

2系统设计

2.1系统工作流程

设备验收使用后,给设备编一个设备编号,根据该设备编号生成一个QR码标签,贴在设备上。一次设备盘点的时序图如图1所示,用户通过客户端扫描QR码,解析出设备编号,根据设备编号向服务器端的Servlet发送查询请求,Servlet运行do-Post方法到数据库中查询信息,把查询到的设备信息返回到客户端,用户核对设备信息,再根据盘点信息向服务器端的Serv-let发送请求,把盘点信息记录到数据库中,并返回操作成功与否的标志信息。这就是一次设备盘点的工作流程,不断地重复这一流程,直到盘点结束,就可以得到设备盘点结果,打印盘点报表,让部门负责人签字确认。

2.2数据库设计

设备盘点只是设备管理中的一个功能模块,下面仅对和设备盘点相关的数据库表做详细介绍。为了满足移动客户端的设备盘点需求,设计如下的数据项和数据结构:

管理员信息表(工号,姓名,密码,所属部门编号,备注);其中,工号是主键;所属部门编号是外键,来自部门信息表;使用工号和密码进行登陆。

部门信息表(部门编号,部门名称,办公地点,部门负责人, 负责人电话,备注);其中,部门编号是主键。

固定资产信息表(设备编号,设备名称,规格型号,生产厂商,生产日期,附件,验收日期,所属部门编号,备注);其中,设备编号是主键;所属部门编号是外键,来自部门信息表;验收日期是填写设备验收后正式使用的日期;附件字段填写设备的附属配件信息。

盘点信息表(盘点编号,盘点类型,盘点日期,盘点结果,盘点部门编号,备注);其中,盘点编号是主键;盘点部门编号是外键,来自部门信息表;盘点类型取值为:月盘点、季度盘点和年度盘点。

盘点细目信息表(盘点细目编号,盘点编号,设备编号,设备状态,备注);其中,盘点细目编号是主键;盘点编号是外键, 来自盘点信息表;设备编号是外键,来自固定资产信息表;设备状态取值为:正常、待修、损毁、丢失、其他。

3关键技术

3.1 QR Code扫描

扫描获取QR码信息首先要打开移动端设备的摄像头,并通过Srufaceview来预览;然后调用com.google.zxing.client.andro-di.camera包中的相关方法来控制摄像头自动对焦;再调用ZX-ing中的Decode Thread类的相关方法来进行解码[5]。在这一过程中,使用到线程机制,为了不堵塞Android的UI线程,要把解码工作单独放在一个线程中来实现。下面仅对回调方法han-dle QRCode Decode作详细描述。

3.2 Android端与Web端的通信方式

Android与服务器通信通常采用HTTP通信方式和Socket通信方式[6]。在本系统中,我采用HTTP的通信方式。HTTP是一种无状态协议,使用request对象来实现请求,使用response对象来实现响应,一次会话结束,客户端和服务器端的链接就会自动关闭。

为了实现Android端和Web端的数据交互,我编写了一个静态方法,返回值为JSON类型,方法的头部如下:

public static JSONArray dopost(String url,String [] parameter,String [] parameter_value,int len,String response_para)

其中,ur是服务器端servlet的地址,parameter是传递参数的名称,parameter_value是传递参数的值,len是传递参数的个数,respense_para是传递的标志。该方法的核心代码如下:

4结束语

设备盘点客户端的测试效果如图2和图3所示。

点击扫描盘点按钮调出二维码扫描对话框对QR码进行识别别,,根根据据识识别别到到的的设设备备编编号号到到服服务务器器查查询询出出设设备备信信息息显显示示,,用用户核对后,填选设备状态信息,点击保存按钮,完成一次设备盘点,重复此操作过程,结束盘点时,点击完成盘点按钮,就可以得到如图3所示的盘点结果信息,在盘点结果信息中,可以看到部门的这一次盘点的详细信息,该部门总的设备数、正常数、 待修数、损毁数、丢失数和其他情况的数量。该客户端的实现, 提高了设备盘点的工作效率,对企业的设备管理有着重要的意义。

参考文献

[1]郭云飞,黄东.基于B/S模式的多层结构的电厂设备管理系统的设计[J].计算机与现代化,2004,12(12):119-119.

[2]张庆.基于状态的设备管理系统的设计与实现[J].计算机工程与应用,2006,15(15):179-179.

[3]QR码_百度百科[EB/OL].http://baike.baidu.com/link?url=q BXGe JKm UY_Vq10BBl_Xsl-9b7ka8T2rw Nf SNh_ox3f QHpqtRi KNv_DTIY7hu Sbu.

[4]ZXing[EB/OL].https://github.com/zxing/zxing.

[5]佘志龙,陈昱勋,郑名杰,等.Google Android SDK开发范例大全[M].3版.北京:人民邮电出版社,2011:718-718.

本文来自 古文书网(www.gwbook.cn),转载请保留网址和出处

相关文章:

资助新政策01-06

android开发培训01-06

Android测试01-06

android开发环境简介01-06

android横竖屏总结01-06

Android安全01-06

android外文翻译01-06

Android手机01-06

Android开发01-06

android应用学习总结01-06

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:资助新政策 下一篇:Android安全