安卓照相软件设计专项方案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

智能移动终端应用开发
设计报告
(/第2学期)
题目:安卓照相机软件
学院:信息与电气工程学院
专业:通信工程
姓名:刘鹏晨
学号:
设计成绩:
5月15日
目录
一、软件需求分析 ................................................ 错误!未定义书签。

二、软件总体设计 ................................................ 错误!未定义书签。

三、核心技术分析 ................................................ 错误!未定义书签。

四、软件详细设计 ................................................ 错误!未定义书签。

五、软件测试方案 ................................................ 错误!未定义书签。

驱动测试 .............................................................. 错误!未定义书签。

HAL 层测试........................................................ 错误!未定义书签。

拍摄测试 .............................................................. 错误!未定义书签。

硬件测试 .............................................................. 错误!未定义书签。

六、实验总结 ........................................................ 错误!未定义书签。

七、参照文献 ........................................................ 错误!未定义书签。

安卓照相机软件设计方案
一、软件需求分析
咱们再拍照时候总是会遇到这些状况,在拍照时候时不时地有人闯入你镜头,影响照相效果;有一张很美照片但是由于某些背景因素,导致照片拍出来效果不怎么好。

因此有一款可以直接忽视那些不和谐因素是多么美好一件事啊!
不但如此,由于当前手机普遍性和其不安全性,咱们手机数据泄露额越来越严重了,并且也有一某些人可以通过照片来窥探咱们某些隐私,让咱们感觉自己很不安全。

这是安卓智能手机开源特性所致。

特别是今年央视315晚会曝光手机隐私泄露之后。

人们越发迫切地想要保护自己隐私不被侵害,越发迫切地保护好自己隐私,越发迫切地不容许别人通过其她办法来窥探咱们隐私,更不能通过手机照片某些背景泄露了咱们隐私!在这种状况下,手机马赛克照相机应运产生,它可以在拍照时候屏蔽某些突然闯入你镜头那些人,可以选取屏蔽背景,也可以屏蔽某些不想要浮现画面,这样不但大大以便了顾客,也可以保护客户隐私不被收到侵害,保护客户隐私。

让顾客免于通过别软件(Photoshop,美图秀秀等)来后期制作,来去除这些东西.这个软件对顾客来说很以便!
二、软件总体设计
本软件重要是实现安卓手机照相功能,不涉及摄像功能。

本软件图标采用彩色马赛克加上一种m字母组合成一种图片,图片简洁大方,让顾客可以对照相机图片耳目一新,新颖。

本软件没有采用抽屉式设计,而是采用嵌套式设计,这样可以使得手机界面看起来更加简洁,没有那么多冗余,让顾客更好体验这款相机所带来强大功能。

本软件和其她相机功能差不多,详细设立参数如下。

本软件相机普通参数设立涉及对焦方式、取景模式、色彩效果、选取IS0、防抖设立、照片大小、照片质量及还原设立等选项
【对焦方式】:有持续、自动、微距、无限远四种模式。

选取持续对焦模
式后当相机对准物体后则自动对焦,转移到此外一种物体时则重新对焦,对相机使用不纯熟顾客推荐使用这种对焦模式。

自动模式只有顾客点击或者按快门时才会对焦;微距模式用于拍摄近处物体时使用;无限远模式适合拍摄远处物体或者风景时使用。

【取景模式】:有自动、横向、纵向、夜景、海滩、雪景、日落、烟火8种模式。

自动、横向、纵向是手机拍出照片显示模式。

夜景模式,适合在夜间光线相对较弱环境下使用,此时150较高,快门较慢,拍照时要尽量保持手机稳定,快门完毕后可保持一段时间再移开手机。

海滩模式适合在海滩拍照时使用。

雪景模式,白雪皑皑环境下如果使用自动取景模式相机也许会由于无法找到参照点而浮现无法对焦现象,选取该模式可解决这一问题。

日落、烟火模式分别合用于拍摄日落和烟花场景。

【色彩模式】:选取“无”为自动模式,真实还原物体颜色。

“单色”模式拍出来为黑白相片:“棕褐色”、“浅绿色”模式拍出照片颜色偏重棕褐色及浅绿色;“负片”模式,即为底片模式。

【选取150】:150即感光度,即相机对光线敏感限度,相称于感光速度,数字越大,感光越快。

150并非越大越好。

对于胶片,高感光度清晰度会稍差些,颗粒也比较粗;对于数码相机,高150会带来较多噪点,画质较差。

正常环境下150100是比较适合,画质较好。

有“自动”“150100”、“150200”、“150400”、“150800”几种模式选取,普通选取自动模式,光线较暗时依照状况选取其她数值。

【防抖设立】:打开此项后可以减少因手抖动带来画面模糊状况。

有“关闭”、“1/2秒”、“1秒”、“2秒”四个选项。

这里时间是指使用者手稳定期间,例如选取“1秒”,当按下快门时相机会检测枓动时间,如果在一秒内相机不抖动则自动释放快门拍照,如果始终抖动则手机继续检测。

三、核心技术分析
相机应用程序拍摄环节相机类提供图像捕获→启动预览→停止预览→拍摄照片→检索视频编码。

采用open()办法获得相机实例。

获取与getParameters()有关配备项目
如果有必要话,可以重新配备相机特性参数,修改返回Camera.Parameters 对象,并调用setParameters(Camera.Parameters).
如果要改回显示方向话,则调用setDisplayOrentation(int)
传递完全初始化SurfaceHoloer给setPreviewDisplay
(SurfaceHolder)。

如果没有一种表面景象surface话,相机将无法启动预览。

调用startPreview()来开始更新预览表面景象surface。

在可以拍摄一张照片之前,就必要是已经可以开始预览。

当你决定要拍摄这一张照片时,调用takePicture(Camera.
ShutterCallback shutter,Camera.PictureCallback raw,Camera.
PictureCallback postview,Camera.PictureCallback jpeg)。

捕获一张照片,然后等待解决回调,获得实际图像数据。

拍摄一张照片后,预览显示就已经停止了。

需要拍摄更多张照片时,再次调用startPreview().
调用stopPreview()来停止更新预览表面景象surface
调用release()来释放相机,应用程序应及时在oPause()阶段释放相机,如果想要重新获取相机实例,要做onResume()中调用reaOpen()办法。

四、软件详细设计
Android中专门提供了Camera来解决相机有关事件,Camera 是一种专门用来连接和断开相机服务类,Camera 下面涉及如下几种事件:
Camera.AutoFocusCallback:自动调焦功能;
Camera.ErrorCallback:错误信息捕获;
Camera.Parameters :相机属性参数
Camera.PictureCallback:拍照、产生图片时触发;
Camera.PreviewCallback:相机预览设立;
Camera.ShutterCallback:快门设立;
Camera.Size:图片尺寸;
要在Android中使用相机服务很简朴,Camera没有构造办法,咱们要使用它直接通过open()办法来打开相机设备,然后通过Camera.Parameters 对相机某些属性进行设立,例如输出图片格式、大小等等。

下面是Camera类某些惯用办法简介。

Camera类办法
办法阐明
autoFocus 设立自动对焦
getParameters 得到相机参数
open 启动相机服务
release 释放Camera服务setPreviewDisplay 设立预览
setParameters 设立预览参数
startPreview 开始预览
stopPreview 停止预览
takePicture 拍照
这里重点阐明一下拍照办法和使用,takePicture 办法要实现3个回调函数,分别是:Camera.ShutterCallback (快门) 和两个Camera.PictureCallback(图像数据)。

这里咱们在拍照之后要获得图像数据就需要实现
Camera.PictureCallback onPictureTaken 办法。

onPictureTaken 中第一种参数就是图像数据,第二个参数则是相机。

马赛克相机,这是一款既可以搞笑,娱乐,又可以修改,美观软件。

它可以让咱们再拍照时候享有一点乐趣,也可以让咱们消除那些不想浮现东西。

详细操作:当咱们打开照相机时候咱们可以选取普通照相机,马赛克相机。

可以供顾客更以便选取。

当进入马赛克相机界面时,可以选取对既有照片马赛克解决,也可以对正在进行照相机照照片进行马赛克解决,顾客先选中所需要解决区域(考虑到当前大多数手机是智能手机,且是触屏操作,因而本软件所有采用触屏解决,不考虑按键操作),双击选中,弹出一种界面供顾客选取,界面显示图片,马赛克。

顾客点击选取图片,则会有诸多图片可以让顾客选取,用来遮挡那些不想浮现人或物,或者背景,这种效果比较正式,使得顾客解决后照片不至于太娱乐化。

顾客点击选取马赛克,则会浮现马赛克,来遮挡所选区域,这样解决出来效果会让顾客觉得很搞笑,并且在顾客选取马赛克时可以选取颜色,这样解决效果可以更加娱乐。

软件图片
五、软件测试方案
依照实验需求运营已编译好程序,看与否能运营,与否可以按照预期达到想要效果,需要如下调试工作:
β测试,英文是Beta testing。

又称Beta测试,顾客验收测试(UAT)。

来测试设计软件与否正常运营。

顾客界面测试是指测试顾客界面风格与否满足客户规定,文字与否对的,页面与否美观,文字,图片组合与否完美,操作与否和谐等等。

UI 测试目的是保
证顾客界面会通过测试对象功能来为顾客提供相应访问或浏览功能。

保证顾客界面符合公司或行业原则。

涉及顾客和谐性、人性化、易操作性测试。

顾客界面测试顾客分析软件顾客界面设计与否合乎顾客盼望或规定。

它经常涉及菜单,对话框及对话框上所有按钮,文字,出错提示,协助信息(Menu 和Help content)等方面测试。

例如,测试Microsoft Excel中插入符号功能所用对话框大小,所有按钮与否对齐,字符串字体大小,出错信息内容和字体大小,工具栏位置/图标等等
冒烟测试对象是新编译每一种需要正式测试软件版本,目是确认软件基本功能正常,可以进行后续正式测试工作。

本地化测试是测试特定目的区域设立软件本地化质量。

本地化测试环境是在本地化操作系统上安装本地化软件。

从测试办法上可以分为基本功能测试,安装/卸载测试,本地区域软硬件兼容性测试。

测试内容重要涉及软件本地化后界面布局和软件翻译语言质量,包括软件、文档和联机协助等某些。

本地化能力测试是指不需要重新设计或修改代码,将程序顾客界面翻译成任何目的语言能力。

为了减少本地化能力测试成本,提高测试效率,本地化能力测试普通在软件伪本地化版本上进行。

本地化能力测试中发现典型错误涉及:字符硬编码(即软件中需要本地化字符写在了代码内部),对需要本地化字符长度设立了固定值,在软件运营时以控件位置定位,图标和位图中包括了需要本地化文本,软件顾客界面与文档术语不一致等。

安装测试是保证软件在正常状况和异常状况下,例如,进行初次安装、升级、完整或自定义安装都能进行安装测试。

异常状况涉及磁盘空间局限性、缺少目录创立权限等场景。

核算软件在安装后可及时正常运营。

安装测试涉及测试安装代码以及安装手册。

安装手册提供如何进行安装,安装代码提供安装某些程序可以运营基本数据。

卸载测试,英文是Uninstall Testing。

卸载测试是对软件所有、某些或升级卸载解决过程测试。

重要是测试软件能否卸载,卸载与否干净,对系统有无更改,在系统中残留与日后生成文献如何解决等。

尚有本来更改系统值与否修改回去。

安全测试,英文是Security Testing。

安全测试是测试系统在防止非授权内部或外部顾客访问或故意破坏等状况时怎么样。

这也许需要复杂测试技术。

安全测试检查系统对非法侵入防范能力。

安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。

例如:
①想方设法截取或破译口令;
②专门定做软件破坏系统保护机制;
③故意导致系统失败,企图趁恢复之机非法进入;
④试图通过浏览非保密数据,推导所需信息,等等。

理论上讲,只要有足够时间和资源,没有不可进入系统。

因而系统安全设计准则是,使非法侵入代价超过被保护信息价值。

此时非法侵入者已无利可图。

兼容测试是测试软件在一种特定硬件/软件/操作系统/网络等环境下性能如何。

向上兼容向下兼容,软件兼容硬件兼容。

软件兼容性有诸多需要考虑地方。

装配安装
装配/安装/配备测试是验证软件程序在不同厂家硬件上,所支持不同语言新旧版本平台上,和不同方式安装软件都可以如预期那样对的运营。

驱动测试
1. 测试目
保证Linux驱动层按照一定环节去操作设备,不浮现错误,对芯片和Camera 硬件操作都能对的执行。

2. 测试前提
在需要调试驱动内核里也需要开发板芯片上串口驱动支持,并且在编
译前使用make menuconfig 配备时候也需要把串口驱动编译进内核文献,并在kernel hacking 菜单选取相应需要打印信息。

3. 测试和调试办法
Linux 驱动调试惯用办法有printk,kgdb,opps 等方式,也可以使用第三方软件和硬件进行调试如trace32,MultiICE 等arm仿真器进行调试,但这些仿真器软件都较为复杂,需要特定脚本来实现某些调试功能,并且这些仿真器硬件设备都比较贵。

但在Camera 模块驱动调试里,惯用办法就足够了,并且成本也很低。

惯用printk,kgdb,opps 办法需要串口支持,由于调试信息需要通过串口与主机交互,显示在主机显示屏上。

1) printk 方式
Linux 内核里printk()函数和c 原则printf()函数很类似,是内核里打印信息函数。

通过在内核特定位置调用printk()函数可以把所关怀信息通过串口打印到主机屏幕上,从而可以观测程序执行过程和所关怀变量或指针值,其原型为printk(const char *fmt,...)。

它与printf不同之处在于它可以附加不同日记级别,可以让printk 依照这些级别对消息进行分类。

通惯用宏来批示日记级别。

在<Linux/kernel.h>里定义了八种不同级别日记字符串。

例如KERN_INFO,表达提示信息;KERN_WARNING 用于对也许浮现状况进行警告。

默认级别是DEFAULT_MESSAGE_LOGLEVEL 。

例如:printk(“this is a test\n”);命令与printk(DEFAULT_MESSAGE_LOGLEVEL “this is a test\n”);命令是相似。

依照日记级别,内核也许会把消息通过串口打印出来。

当优先级值不大于console_loglevel 时消息才会显示出来。

console_loglevel 初始值是DEFAULT_MESSAGE_LOGLEVEL,可以通过syslog 系统调用修改其值。

2) KGDB 方式
GDB 是GNU 开源组织发布一种UNIX 下程序调试工具,KGDB 提供了一种使用GDB 调试Linux 内核机制。

使用KGDB 可以像调试普通应用程序
那样,在内核中进行设立断点、检查变量值、单步跟踪程序运营等操作。

它可以通过一系列KGDB 命令,在主机端给开发板发送命令进行调试。

调试过程中,系统Camera 模块设计和实现被调试内核运营在开发板上,GDB 调试器运营在主机端。

4. 测试项和测试环节
1) Camera Sensor 驱动测试
上电,由于Camera Sensor 上电需要一种上电时序,可以通过示波器分别检测两路电,观测她们与否符合上电顺序。

硬件复位,硬件复位是通过操作reset pin 脚实现。

通过Linux 提供GPIO 操作,在复位操作时候分别读取它值,再通过printk 函数打印出来,以拟定reset 操作是成功。

PWDN pin 不使能。

和复位同样通过,通过GPIO 操作来拟定其执行成功。

至此,Camera Sensor 已开始工作了,芯片已可以通过Linux驱动提供I2C 接口与Camera Sensor 通信了,接下来就是保证I2C 通信正常。

运用I2C 通信有关接口去写有关寄存器,然后再去读取寄存器值保证对寄存器操作对的。

通过初始化有关寄存器后,Camera 就可以工作了,在Camera 设备data[0-7]pin 脚通过示波器就可以检测到数据变化了。

至此可以保证Camera Sensor 硬件和驱动正常,但还不能拟定某些寄存器
配备与否对的,由于其中某些寄存器需要与Camera 控制器驱动配合。

2) Camera 控制器驱动测试
Camera 控制器某些配备需要与Camera Sensor 配备相似,如vsync,href,pclk 极性,图像Ycbcr 顺序等,否则Camera 控制器会得不到对的数据。

一方面要保证写入和读取寄存器值是一致。

可以通过Linux 提供readl,writel函数进行测试。

在驱动里流程可以通过printk 函数打印到屏幕上以保证对控制器操作流程确如驱动程序里写那样。

5. 测试成果及分析
通过串口打印分析,与Camera 有关pin脚都可以被对的操作,Camera硬件没有短路现象,Camera 硬件与芯片连接也正常。

Camera Sensor 寄存器都配备成功没有进入出错解决代码。

Camera 控制器寄存器读写都对的,读取数据和写入数据完全一致。

HAL 层测试
1. 测试目
保证HAL 层代码和Android 提供Camera 接口相衔接,保证Linux驱动层提供设备节点可以正常使用。

2. 测试项和环节
1) Android 接口实现
打开Android 下Camera 应用程序,在串口中输入logcat 命令,观测串口打印信息,与否浮现错误提示。

2) Linux 驱动提供设备节点
打开Android 下Camera 应用程序,使其处在预览模式,观测串口工具minicom 打印信息,判断HAL 层对设备节点open,ioctl 等操作与否在驱动里被对的执行。

3. 测试成果及分析
打开Camera 应用程序,对其进行预览、拍照等操作,串口工具minicom 打印信息显示Camera HAL 层代码按照设想环节执行,没有打印任何出错信息,HAL 层工作正常。

Camera 拍摄效果测试
在测试效果时候,Camera 应用程序已可以在屏幕上显示出Camera 设备获取到图像了,拍摄效果测试就是需要对其中图像遇到问题进行测试和调试,使其达到预期效果。

在Camera 效果测试里直接通过人感觉去辨别难以达到满意效果。

普通会辅助某些效果测试卡。

如辨别率测试卡、24 色卡、对比度测试卡、灰阶卡、灯箱等。

这些卡通过放大实际卡片图像与Camera 图像显示效果来供调试人员以便找出图像问题,有针对性对图像进行微调。

拍摄测试
1. 测试目
Camera 拍摄效果直接影响到顾客对产品体验,是测试重要一某些。

测试目是使Camera 应用程序在显示屏上对的反映所拍摄到实际物品。

2. 测试项和测试环节
1) 图像颜色
打开AndroidCamera应用程序,使其处在预览模式,用Camera拍摄Camera 测试卡中24 色卡,观测屏幕中显示颜色与24 色卡上颜色与否一致。

24 卡系统Camera 模块设计和实现
观测和控制开发板,通过电压表、示波器等测试Camera 硬件状态。

通过开发板显示屏观测Camera 效果。

Camera 模块功能测试
Camera 模块测试本文按照从Camera 硬件、Camera Sensor 驱动到Camera 控制器驱动以及HAL 层顺序进行。

Camera 硬件测试
Camera 硬件是Camera 模组厂商对Camera Sensor 重新封装。

模组厂商会在封装之后提供Camera 硬件关于镜头、pin脚等有关信息。

在硬件方面需要比对Camera 硬件和芯片上Camera 接口使她们一一相应。

硬件测试
1. 测试目
检测Camera 硬件设备与否完好,与开发板连接与否对的,芯片提供应
Camera 电压、晶振与否对的。

2. 测试项和测试环节
1) 连接测试
在驱动程序里用Linux提供GPIO 驱动对pin脚进行配备,使她们或高或低,并读取GPIO 值,观测其与否可以正常操作。

2) 电压测试
在开发板上运营Android,打开Camera 应用程序,使其处在预览模式。

用电压表检测Camera 硬件三个pin 脚A VDD、DOVDD、VDD1.8 三个电压值,观测其与否分别为 2.8V、2.8V、1.8V。

3) 外部晶振测试
同样打开Android 应用程序,在应用程序进入预览模式时,用示波器检测Camera 硬件上MCLK pin 脚,观测示波器,看示波器上显示频率与否与驱动代码里提供一致。

3. 测试成果及分析
GPIO 都可以正常操作,电压表显示电压与代码提供电压只存在微小
差别,示波器显示频率和通过代码操作芯片提供频率只存在微小误差,不影响整体成果。

六、实验总结
一方面,通过这次实验设计,让我对安卓照相机有了更深刻结识,此前我只是觉得一种照相机没什么,可是当我收集关于安卓照相机大量资料时,才发现现不但是当前照相机在飞速发展,安装在咱们手机上照相机也有了长足进步,此前照相机只能照相,摄像。

而随着科学技术发展,相机也有了更多更好功能,我所设计马赛克相机本来网上已有了成品,技术已经相称纯熟,但是这个相机也加入了我自己某些想法。

通过本实验程序设计,我对安卓开发有了越来越浓厚兴趣。

刚结束数独游戏
设计与编程,让我获益匪浅,对安卓开发产生了强烈好奇心,对于这个照相机软件,我懂得以我当前水平很难把它开发出来,但是我会好好努力。

在感触这个社会高速发展同步,我也体会到了自己渺小,我懂得自己必要好好学习,才干逐渐适应这个社会,来更好发挥自己才干。

在本次实验中,也遇到了诸多困难,有诸多东西虽然在课上讲过,当时也理解了,可一到自己设计中,还是不懂得该怎么办,这让我懂得了一种道理,课上懂了并不是真懂了!只有自己动手实践了,才懂得自己是不是真会了,才干更好理解课上所讲,才干更好学好这样课程。

七、参照文献
[1]张孝祥.java就业培训教程.机械工业出版社,.
[2]廖雷.java程序设计教程.中华人民共和国电力出版社,.
[3]Warton.java.多线程编程初步.电脑报.4月.
[4]Cay S.Horstmann.java核心技术卷1:基本知识.10月.
[5]韩超,梁泉.Android系统原理及开发要点详解.电子工业出版社.1月.
[6]韩超,梁泉.Android系统级进一步开发—移植与调试.电子工业出版
社.2月
[7]李芝兴,杨瑞龙.Java程序设计之网络编程.清华大学出版社.
[8]R.J(Bud)Bates. GPRS:General Packet Radio Service .McGraw-Hill,.
[9]Cameron,J.R.JSP & JSD the Jackson approach to software
development .Silver Spring MD:IEEE Computer Society Press,1983.
[10]M.J.King,J.P.Pardoe.Program design using JSP a practical
introduction .Basingstoke Hampshire:Macmillan,1992,.
[11]James Goodwill. Pure Java Server Pages .Indianapolis Ind:Sams,,.
[12]Gwenael Le Bodic. Mobile messaging technologies and services SMS
EMS and MMS .New York:J.Wiley,,.
[13]Henry Labord(?)re,Vincent Jonack. SMS and MMS interworking in mobile networks .Boston:Artech House,,.
[14]张健.Java语言与Jbuilder应用基本教程.科学出版社.-3.
[15]陈轶,姚晓昆.Java程序设计实验指引.北京.清华大学出版社,.。

相关文档
最新文档