admin管理员组

文章数量:1566993

2024年7月23日发(作者:)

维普资讯

软件设计开发・・・・・・ 本栏目责任编辑:谢媛媛 

智能手机camera应甩酌设计与实现 

杨鹏飞1.苗忠良 

(1.东南大学软件学院,江苏南京210096;2.联想研究院上海分院,上海201203) 

摘要:当前主流的智能手机平台有Symbian+UIQ和Microso ̄Windows Mobile,除了以上两种,还有其他一些平台,本文给出了在一 

种开源平台:linux+Qtopia上如何来实现camera应用。Linux+Qtopia相对其他平台的优势有两个:一个是开源,需要时你可以对源代 

码进行的裁剪和修改;另一个是费用低廉,这对企业提高竞争力也有很大的帮助。 

关键词:Linux;Qtopia;camera;智能手机 

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2008)13—20678-03 

Design and Implementation of Camera Application of Smart Phone 

YANG Peng—fei’,MIAO Zh6@一liang2 

(1.Software College,Southeast University,Nanjing 21.0096,China;2.Shanghai Branch,Lenovo Corporation Research&Development, 

shanghai 201 203,China) 

Abstract:The current mainstream smart phone platforms are Symbian+UlQ and Microsoft Windows Mobile,in addition to the above two, 

there are some other platforms,this paper introduce an open—source platform:Linux+Qtopia and discuss how to implement camera ap— 

plications on this platform.Compared to other,Linux+Qtopia platform has two advantages:one is open source,you can cut and modiifed 

the source code on need.Other is low—COSt,a great help to improve competitiveness of enterprises. 

Key words:Linux;Qtopia;camera;smart phone 

1引言 

随着嵌入式系统,视频,音频压缩技术的飞速发展,camera越来越广泛的应用于嵌入式高端设备中,最常见的如:手机,PDA,监 

控统等等.而实现camera应用与具体的软件架构平台(底层的操作系统和GUI系统)相关,当前主流的智能手机平台有Symbian+UIQ 

和Microsoft Windows Mobile,除了以上两种,还有其他一些平台,本文给出了在一种开源平台:linux+Qtopia上如何来实现camera应 

用。 

2概述 

2.1 Qt/Qtopia平台介绍 

Ql是一个跨平台的C++图形用户界面库,由挪威TrollTech公司出品,目前包括Qt、基于FrameBuffer的Qtopia Core、快速开发 

T具Qt Designer和国际化工具Qt Linguist等部分。Qt支持所有的UNIX系统,当然也包括Linux系统,还支持WinNT/Win2k、Win— 

dows 95/98平台。基本上Ql同X-Window上的Motif、Openwin、GTK等图形界面库和Windows平台上的MFC、OWL、VCL、ATL是同 

类型的。Qtopia是Trolhech公司为采用嵌入式Linux操作系统得电子设备开发的应用平台,它是基于Qt的。Qtopia平台系统简要的 

架构图如图1所示。 

Application 

Qtopia 

Fralll ̄Buffer 

Embedded Linux 

Device Hardware 

图1 Qtopia2.1平台架构 

Qtopia的优  ̄:Qt/Qtopia虽然是商业公司的产品,但有开源版本,全部都是开放源代码,非商业用途亦采用GPL的版权宣告. 

著名的Open Source”KDE”项目便是采用Qt开发的,Qtopia core(qte) ̄. 跨平台的特点,省掉了不少移植软件的功夫,这样的概念和 

Java虚拟机很类似。同时它还采用模块化设计,其最大的好处是有弹性,QffEmbedded号称最小,可以缩到800 KB左右,最多可以长 

收稿日期:2008—03—20 

作者简介:杨鹏飞,男,江苏盐城人,硕士研究生,研究方向为软件工程;苗忠良,研究员,研究方向为计算机网络,移动通信协议.宽带无 

线技术等。 

678 电脑知识与技术 

维普资讯

本栏目责任编辑:谢媛媛 ・・・・・・软件设计开发・ 

到3 MB(for Intel x86),这样的弹性也让Qt/Embedded更适合在嵌入式环境下生存。 

Qtopia的缺点是:QtE的底层图形引擎只能采用FrameBuffer,这就注定了它是针对高端嵌入式图形领域的应用而设计的。由于 

该库的代码追求面面俱到,以增加它对多种硬件设备的支持,造成了底层代码比较凌乱,各种补丁较多的问题。01’E的结构也过于 

复杂和臃肿,很难进行底层的扩充,定制和移植 , 

2.2流媒体插件GStreamer的介绍 

GStreamer它的基本设计思想来自于俄勒冈(Oregon)研究生学院有关视频管道的创意,同时也借鉴了DirectSh0w的设计思想。 

GStreamer的程序开发框架使得编写任意类型的流媒体应用程序成为了可能。在编写处理音频、视频或者两倍皆有的应用程序时, 

GStreamer可以让你的工作变得简单。GStreamer并不受限于音频和视频处理,它能够处理任意类型的数据流。管道设计的方法对于 

实际应用的滤波器几乎没有负荷,它甚至可以用来设计出对延时有很高要求的高端音频应用程序。 

3 camera的整体设计 

camera的整体设计图如下 

图2 camera整体设计架构图 

最底层是硬件传感器(sens0r)和驱动(Drive),驱动的封装形式是V4L2,然后是camera的流媒体引擎(IPP,GStreamer,Lib),IPP全 

称是Integrated Performance Primitives,是一个集成了支持多核心、为多媒体和数据处理高度优化的软件包,包括视频编码/解码、音 

频编码/解码、图像色彩转换、数据压缩、信号处理、图像处理、JPEG编码/解码、语音识别、语音编码/解码、矩阵数学和密码术等等.流 

媒体引擎位于capture设备驱动程序和应用程序之间,实现对音视频编解码器、图像编码器的封装,实现capture设备的操作及基本 

功能(预览、拍照、录像等)。引擎实现的功能如下: 

(1)对capture设备的读控制进行封装和统一管理; 

(2)实现camera引擎,支持一定格式的视频编码与音频编码,图像编码共三类格式的应用操作。 

需要指出的是如果就camera一个应用来说,可以不用流媒体引擎这一层,也就是camera上层GUI程序直接调用driver来实现 

camera相应的功能,但是这样做的结果是上层的GUI代码复用性较差,这是因为camera拍照以及摄像有3GP,iPEG,MPEG4等多 

种多媒体类型格式,这也就意味着要使用许多工具来处理这些不同的内容。GStreamer可以通过将所有不同的工具和库隐藏到它的 

插件中,以及使用媒体管道这个一般性概念,以一种统一的方式表示对不同类型媒体进行操作,这就意味着当camera硬件变动以 

及增加一些多媒体类型格式的时候,上层的应用界面及控制无需做太大的变动。 

4 UI以及调用逻辑设计 

合理的,人性化的界面设计会带给用户良好的交互体验,所以Camera的UI设计也是整个应用的重要一环。Camera按功能来 

划分,可以划分为以下几点: 

(1)camera应用接口模块,主要功能:相当于主控程序; 

(2)拍照相关模块,主要功能:完成有关拍照的功能; 

(3)摄像相关模块,主要功能:完成有关摄像的功能; 

(4)选项相关模块,主要功能:照片属性设定功能; 

(5)省电模块,主要功能:待J0 ̄(standby)功能。 

UI相关主要模块的说明: 

(1)拍照预览 

Camera模块启动后,首先进入拍照预览界面。按0k键实现拍照,然后应用再次回到拍照预览模式。 

(2)拍照设置 

在拍照预览模块,可以通过左软键进入选项菜单进行拍照设置,或者通过左右键实现拍照模式切换,通过上下键实现变焦切 

换。 

(3)摄像预览 

在拍照预览模块下,通过选项菜单可以进入摄像预览模块,按0k键开始摄像。在摄像模式下,可以执行停止操作,执行停止操 

作后,应用回到摄像预览模式。 

(4)视频回放  ・

在摄像预览模式下,进入选项菜单,可以通过“查看视频”,进入视频回放模式,显示首帧,可以按键操作进行回放,可以执行暂 

停、停止等操作,执行停止操作后回到选择视频文件的界面。 

679 

维普资讯

软件设计开发。t ・ 本栏目责任编辑:谢媛媛 

UI整体设计图如下 

图3 UI逻辑图 

主要的结构与类设计如下(设计语言:Qtopia2.1): 

(1)camera的状态可以分为以下几种:拍照预览状态,摄像预览状态,照片回放状态,照片删除状态,视频回放状态。用枚举类型 

表示如下: 

typedef enum 

f 

PH0T0PREVIEWSTATE. 

VIDE0PREVIEWSTATE. 

PH0T0REVIEWSTATE. 

PH0T0DELETE. 

VIDE0DELETE. 

VIDE0REVIEWSTATE 

}CameraState; 

(2)camera的选项菜单的状态可以分为以下几种:拍照主菜单状态,摄相主菜单状态,相片回放设置状态,拍照质量设置状态, 

分辨率设置状态,拍照模式设置状态,拍照亮度设置状态,拍照特效设置状态,拍照音设置状态,视频回放设置状态,照片或视频删 

除状态,内屏状态。用枚举类型表示如下: 

typedef enum 

{ 

PH0T00P110N. 

VIDE00PT10N. 

PH0T0REVIEW. 

PH0T0QUALITY, 

PH0T0SIZE. 

PH0T0M0DE. 

PH0T0BRIGHTNESS 

PH0TOEFFECT 

S0UND 

VIDE0REVIEW 

DELETE 

INTERNALSCREEN 

}CameraOptionState; 

(3)CameraMainWindow-camera类:主界面和主控制类,完成其他所有界面的初始化,以及主要的控制逻辑。根据不同的Cam— 

eraState显示不同的界面 

(4)Camera0ption类:选项菜单类,包含所有的选项菜单。 

CameraOption类根据不同的Camera0ptionState显示不同的选项菜单 

内容。 

(下转第683页) 

680嘞电脑知识与技术 

维普资讯

本栏目贲任编辑:谢媛媛 

U属于多个子集时的权限互斥问题I圳 

软件设计开发・ 

4系统实现 

4.1权限控制中的数据库表设计 

对于电子税务信息系统的权限访问控制,需要建立用户、部门、岗位、用户角色之间的关系表(UserId,DepartmentId,Positionld, 

Roleld),建立RDPU、对象、权限三者之间的关系表(RDPU,Objectld,PermissionValue),以及对象、状态之间的关系表(ObjectId. 

StateId),通过这样的三张表即可将电子税务信息系统中的权限描述信息存储表示。 

对于RDPU字段,可以通过Userld,DepartmentId,Positionld,RoleId字段相互连接的方式组成,当连接字串中的某个连接位是 

“0”,则表明该层次位置没有参与到权限控制中,例如,可以将用户、部门、岗位、用户角色之间的关系表的四元记录(21,54,20,8), 

根据权限的分配要求,形成RDPU、对象、权限三者之间的关系表的三元记录(21—54—20—8,201,l10),根据RDPU模型的权限验证 

原则,则21用户对201对象有l10权限值,如果形成(0—0—0—8,201,l10)三元记录。则角色值为8的用户对201对象有l10权限 

值。然后再结合对象的状态,可以得到一个灵活、安全的电子税务信息系统的控制权限。 

4.2数据加密 

为了保证权限管理的安全性,需要对数据进行加密,其中最主要是对用户的口令进行加密,其原理是:用户的口令经过加密存 

放在数据库,当需要验证用户的口令时,将用户输入的口令进行加密并与数据库的加密数据进行比较。如果相符则说明口令正确。 

为了安全考虑,密码的加密使用了不可逆算法,加密过程中使用了系统名称,操作员代码,操作员密码等参数,防止有人利用漏 

洞对密码进行猜测。 

4.3权限判定的具体实现 

通过建立判定函数public int Permission(string RDPU,int objectId,int StateValue),用户登录系统后,其相关信息便可以全部从数 

据库中得到。用户对于功能模块的访问,根据用户所具有的角色,功能模块ID值,以及用户的状态值,由判定函数Permission得到其 

需要访问的系统功能模块的权限值;用户在对电子税务信息系统访问时,将用户RDUP值,数据对象的ID值,以及数据对象的状态 

值传给判定函数。得到其可以访问数据对象的权限值。 

5结束语 . 

权限管理和访问控制是的一个重要组成部分。本文提出的基于RD'UP的四层次模型。使得电子税务信息系统既可以通过设置 

角色和部门来实现粗粒度的权限设置,也可以根据岗位和用户来实现细粒度的权限设置。权限设置中的R、D、U、P之间的关系互斥 

问题通过设置它们的优先级别得到解决。 

参考文献: 

[1】姚国章,王秀明.电子税务:互联网提升税收征管[J】.审计与经济研究,2003,18(2):46—50. 

[2】王峰.电子税务网络安全解决方案[J].信息安全与通信保密,2004(10):31—32. 

[3】宋维平,曾一,涂争光.BS模式下OA系统的权限控制设计与实现[J】.计算机工程与应用,2004,40(35):199-201. 

[41胡和平,邹松.角色互斥在角色访问控制系统中的应用[J】.计算机工程,2002,28(4):124—126. 

(上接第680页) 

(5)VideoCaptureWidget类:对底层驱动和引擎调用的封装。 

5结束语 

为了提高整个应用的可扩展性,代码可重用性,在整体设计时,加入了一个用GStreamer实现的camera引擎,通过GStreamer的 

运用,大大提高了上层应用代码的可重用率,以后当需要增加另一个新的媒体类型时,代码改动相对比较小。GUI类设计简洁、合理, 

主要的类只有三个,并没有一个界面对应一个类,而是把camera分成很多状态,根据camera的每个状态,显示不同的内容。 

参考文献: 

【1】倪继利.Qt及Linux操作系统窗口设计[M】.电子工业出版,2006. 

『21宋宝华.Linux设备驱动开发详解[M】.人民邮电出版社,2008. t 

『31 Frank Buschmann.面向模式的软件体系结构[M】.机械工业出版社,2005. 

[4】GStreamer中国.GStreamer应用程序开发手册[EB/OL].[2008-03—10】.http://www.gstreamer.cn/documentation/index.htm1. 

[5】GStreamer中国.GStreamer插件开发指南[EB/OL].[2008—03—10】.http://www.gstreamer.cn/documentation/index.htm1. 

[6】Trolhech Co.Qtopia2.1 Online Document[EB/OL].[2008-03-101.http://doc.tmlhech.com/qtopia2.1/html/index.htm1. 

本文标签: 状态权限设计用户应用