版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能移动终端应用开发设计报告(2013/2014学年第2学期)题目: 安卓照相机软件学院: 信息与电气工程学院专 业: 通信工程姓 名: 刘鹏晨学号:110312217设计成绩: 2014年5月15日
目录TOC\o"1-5"\h\z一、 软件需求分析 1\o"CurrentDocument"二、 软件总体设计 2\o"CurrentDocument"三、 关键技术分析 3\o"CurrentDocument"四、 软件详细设计 4\o"CurrentDocument"五、 软件测试方案 5\o"CurrentDocument"驱动测试 7HAL层测试 9\o"CurrentDocument"拍摄测试 10\o"CurrentDocument"硬件测试 11\o"CurrentDocument"六、 实验总结 12\o"CurrentDocument"七、 参考文献 12安卓照相机软件设计方案一、软件需求分析一、软件需求分析我们再拍照的时候总是会遇到这些情况,在拍照的时候时不时地有人闯入你的镜头,影响照相效果;有一张很美的照片但是因为某些背景的原因,导致照片拍出来的效果不怎么好。所以有一款可以直接忽略那些不和谐的因素是多么美好的一件事啊!不仅如此,由于现在手机普遍性和其不安全性,我们手机的数据泄露额越来越严重了,而且也有一部分人可以通过照片来窥探我们的某些隐私,让我们感觉自己很不安全。这是安卓智能手机的开源特性所致。尤其是今年央视315晚会曝光手机隐私泄露之后。人们越发迫切地想要保护自己的隐私不被侵害,越发迫切地保护好自己的隐私,越发迫切地不允许别人通过其他方法来窥探我们的隐私,更不能通过手机照片的某些背景泄露了我们的隐私!在这种情况下,手机马赛克照相机应运产生,它可以在拍照的时候屏蔽一些突然闯入你镜头的那些人,可以选择屏蔽背景,也可以屏蔽一些不想要出现的画面,这样不仅大大的方便了用户,也可以保护客户的隐私不被收到侵害,保护客户的隐私。让用户免于通过别的软件(Photoshop,美图秀秀等)来后期制作,来去除这些东西.这个软件对用户来说很方便!二、软件总体设计本软件主要是实现安卓手机的照相功能,不涉及摄像功能。本软件图标采用彩色马赛克加上一个m字母组合成一个图片,图片简洁大方,让用户可以对照相机的图片耳目一新,新颖。本软件没有采用抽屉式的设计,而是采用嵌套式设计,这样可以使得手机界面看起来更加简洁,没有那么多的冗余,让用户更好的体验这款相机所带来的强大功能。本软件和其他相机功能差不多,具体设置参数如下。本软件相机的一般参数设置包括对焦方式、取景模式、色彩效果、选择IS0、防抖设置、照片大小、照片质量及还原设置等选项【对焦方式】:有连续、自动、微距、无限远四种模式。选择连续对焦模式后当相机对准物体后则自动对焦,转移到另外一个物体时则重新对焦,对相机使用不熟练的用户推荐使用这种对焦模式。自动模式只有用户点击或者按快门时才会对焦;微距模式用于拍摄近处物体时使用;无限远模式适合拍摄远处物体或者风景时使用。【取景模式】:有自动、横向、纵向、夜景、海滩、雪景、日落、烟火8种模式。自动、横向、纵向是手机拍出照片的显示模式。夜景模式,适合在夜间光线相对较弱的环境下使用,此时150较高,快门较慢,拍照时要尽可能的保持手机稳定,快门完成后可保持一段时间再移开手机。海滩模式适合在海滩拍照时使用。雪景模式,白雪皑皑的环境下如果使用自动取景模式相机可能会因为无法找到参照点而出现无法对焦现象,选择该模式可解决这一问题。日落、烟火模式分别适用于拍摄日落和烟花场景。【色彩模式】:选择“无”为自动模式,真实还原物体颜色。“单色”模式拍出来的为黑白相片:“棕褐色”、“浅绿色”模式拍出的照片颜色偏重棕褐色及浅绿色;“负片”模式,即为底片模式。【选择150】:150即感光度,即相机对光线的敏感程度,相当于感光的速度,数字越大,感光越快。150并非越大越好。对于胶片,高感光度的清晰度会稍差些,颗粒也比较粗;对于数码相机,高150会带来较多的噪点,画质较差。正常环境下150100是比较适合的,画质较好。有“自动”“150100”、“150200”、“150400”、“150800”几种模式选择,一般选择自动模式,光线较暗时根据情况选择其他数值。【防抖设置】:打开此项后可以减少因手抖动带来的画面模糊情况。有“关闭”、“1/2秒”、“1秒”、“2秒”四个选项。这里的时间是指使用者手稳定的时间,比如选择“1秒”,当按下快门时相机会检测科动时间,如果在一秒内相机不抖动则自动释放快门拍照,如果一直抖动则手机继续检测。三、关键技术分析相机应用程序拍摄的步骤相机类提供图像的捕捉3启动预览3停止预览3拍摄照片3检索视频编码。米用open()方法获得相机实例。获取与getParameters()相关的配置项目如果有必要的话,可以重新配置相机特性参数,修改返回的Camera.Parameters对象,并调用setParameters(Camera.Parameters).如果要改回显示方向的话,则调用setDisplayOrentation(int)传递完全初始化的SurfaceHoloer给setPreviewDisplay(SurfaceHolder)。如果没有一个表面景象surface的话,相机将无法启动预览。调用startPreview()来开始更新预览表面景象surface。在可以拍摄一张照片之前,就必须是已经可以开始预览。当你决定要拍摄这一张照片时,调用takePicture(Camera.ShutterCallbackshutter,Camera.PictureCallbackraw,Camera.
PictureCallbackpostview,Camera.PictureCallbackjpeg)。捕获一张照片,然后等待处理的回调,取得实际图像数据。拍摄一张照片后,预览显示就已经停止了。需要拍摄更多张照片时,再次调用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类的方法说明设置自动对焦得到相机的参数方法说明设置自动对焦得到相机的参数autoFocusgetParametersopenrelease启动相机服务openrelease释放Camera服务设置预览设置预览参数setPreviewDisplay设置预览设置预览参数setParametersstartPreview 开始预览stopPreview 停止预览takePicture 拍照这里重点说明一下拍照的方法和使用,takePicture方法要实现3个回调函数,分别是:Camera.ShutterCallback(快门)和两个Camera.PictureCallback(图像数据)。这里我们在拍照之后要取得图像数据就需要实现Camera.PictureCallback的onPictureTaken方法。onPictureTaken中第一个参数就是图像数据,第二个参数则是相机。马赛克相机,这是一款既可以搞笑,娱乐,又可以修改,美观的软件。它可以让我们再拍照的时候享受一点乐趣,也可以让我们消除那些不想出现的东西。具体操作:当我们打开照相机的时候我们可以选择普通照相机,马赛克相机。可以供用户更方便的选择。当进入马赛克相机界面时,可以选择对现有照片马赛克处理,也可以对正在进行的照相机照的照片进行马赛克处理,用户先选中所需要处理的区域(考虑到现在大多数的手机是智能手机,且是触屏操作,因此本软件全部采用触屏处理,不考虑按键操作),双击选中,弹出一个界面供用户选择,界面显示图片,马赛克。用户点击选择图片,则会有很多图片可以让用户选择,用来遮挡那些不想出现的人或物,或者背景,这种效果比较正式,使得用户处理后的照片不至于太娱乐化。用户点击选择马赛克,则会出现马赛克,来遮挡所选区域,这样处理出来的效果会让用户觉得很搞笑,并且在用户选择马赛克时可以选择颜色,这样处理的效果可以更加娱乐。软件图片五、软件测试方案根据实验需求运行已编译好的程序,看是否能运行,是否能够按照预期达到想要的效果,需要以下调试工作:。测试,英文是Betatesting。又称Beta测试,用户验收测试(UAT)。来测试设计的软件是否正常运行。用户界面测试是指测试用户界面的风格是否满足客户要求,文字是否正确,页面是否美观,文字,图片组合是否完美,操作是否友好等等。UI测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能。确保用户界面符合公司或行业的标准。包括用户友好性、人性化、易操作性测试。用户界面测试用户分析软件用户界面的设计是否合乎用户期望或要求。它常常包括菜单,对话框及对话框上所有按钮,文字,出错提示,帮助信息(Menu和Helpcontent)等方面的测试。比如,测试MicrosoftExcel中插入符号功能所用的对话框的大小,所有按钮是否对齐,字符串字体大小,出错信息内容和字体大小,工具栏位置/图标等等冒烟测试的对象是新编译的每一个需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。本地化测试是测试特定目标区域设置的软件本地化质量。本地化测试的环境是在本地化的操作系统上安装本地化的软件。从测试方法上可以分为基本功能测试,安装/卸载测试,当地区域的软硬件兼容性测试。测试的内容主要包括软件本地化后的界面布局和软件翻译的语言质量,包含软件、文档和联机帮助等部分。本地化能力测试是指不需要重新设计或修改代码,将程序的用户界面翻译成任何目标语言的能力。为了降低本地化能力测试的成本,提高测试效率,本地化能力测试通常在软件的伪本地化版本上进行。本地化能力测试中发现的典型错误包括:字符的硬编码(即软件中需要本地化的字符写在了代码内部),对需要本地化的字符长度设置了固定值,在软件运行时以控件位置定位,图标和位图中包含了需要本地化的文本,软件的用户界面与文档术语不一致等。安装测试是确保软件在正常情况和异常情况下,例如,进行首次安装、升级、完整的或自定义的安装都能进行安装的测试。异常情况包括磁盘空间不足、缺少目录创建权限等场景。核实软件在安装后可立即正常运行。安装测试包括测试安装代码以及安装手册。安装手册提供如何进行安装,安装代码提供安装一些程序能够运行的基础数据。卸载测试,英文是UninstallTesting。卸载测试是对软件的全部、部分或升级卸载处理过程的测试。主要是测试软件能否卸载,卸载是否干净,对系统有无更改,在系统中的残留与后来的生成文件如何处理等。还有原来更改的系统值是否修改回去。安全测试,英文是SecurityTesting。安全测试是测试系统在防止非授权的内部或外部用户的访问或故意破坏等情况时怎么样。这可能需要复杂的测试技术。安全测试检查系统对非法侵入的防范能力。安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。例如:想方设法截取或破译口令;专门定做软件破坏系统的保护机制;故意导致系统失败,企图趁恢复之机非法进入;试图通过浏览非保密数据,推导所需信息,等等。理论上讲,只要有足够的时间和资源,没有不可进入的系统。因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。此时非法侵入者已无利可图。兼容测试是测试软件在一个特定的硬件/软件/操作系统/网络等环境下的性能如何。向上兼容向下兼容,软件兼容硬件兼容。软件的兼容性有很多需要考虑的地方。装配安装装配/安装/配置测试是验证软件程序在不同厂家的硬件上,所支持的不同语言的新旧版本平台上,和不同方式安装的软件都能够如预期的那样正确运行。驱动测试测试目的确保Linux驱动层按照一定的步骤去操作设备,不出现错误,对芯片和Camera硬件的操作都能正确执行。测试前提在需要调试驱动的内核里也需要开发板芯片上的串口驱动的支持,并且在编
译前使用makemenuconfig译前使用makemenuconfig配置的时候也需要把串口驱动编译进内核文件,并在kernelhacking菜单选择相应的需要打印的信息。测试和调试方法Linux驱动调试常用的方法有printk,kgdb,opps等方式,也可以使用第三方软件和硬件进行调试如trace32,MultiICE等arm仿真器进行调试,但这些仿真器软件都较为复杂,需要特定的脚本来实现某些调试功能,而且这些仿真器的硬件设备都比较贵。但在Camera模块驱动的调试里,常用的方法就足够了,而且成本也很低。常用的printk,kgdb,opps方法需要串口的支持,因为调试信息需要通过串口与主机交互,显示在主机的显示屏上。1)printk方式Linux内核里的printk()函数和c标准的printf()函数很类似,是内核里打印信息的函数。通过在内核特定位置调用printk()函数可以把所关心的信息通过串口打印到主机屏幕上,从而可以观察程序的执行过程和所关心的变量或指针的值,其原型为printk(constchar*fmt,...)。它与printf不同之处在于它可以附加不同日志级别,可以让printk根据这些级别对消息进行分类。通常用宏来指示日志级别。在<Linux/kernel.h>里定义了八种不同级别的日志字符串。例如KERN_INFO,表示提示信息;KERN_WARNING用于对可能出现的情况进行警告。默认的级别是DEFAULT_MESSAGE_LOGLEVEL。例如:printk(“thisisatest\n”);命令与printk(DEFAULT_MESSAGE_LOGLEVEL“thisisatest\n”);命令是相同的。根据日志级别,内核可能会把消息通过串口打印出来。当优先级值小于console_loglevel时消息才会显示出来。console_loglevel初始值是DEFAULT_MESSAGE_LOGLEVEL可以通过syslog系统调用修改其值。2)KGDB方式GDB是GNU开源组织发布的一个UNIX下的程序调试工具,KGDB提供了一种使用GDB调试Linux内核的机制。使用KGDB可以像调试普通的应用程序那样,在内核中进行设置断点、检查变量值、单步跟踪程序运行等操作。它可以通过一系列KGDB的命令,在主机端给开发板发送命令进行调试。调试过程中,系统的Camera模块设计和实现被调试的内核运行在开发板上,GDB调试器运行在主机端。测试项和测试步骤CameraSensor驱动测试上电,由于CameraSensor上电需要一个上电时序,可以通过示波器分别检测两路电,观察他们是否符合上电顺序。硬件复位,硬件复位是通过操作resetpin脚实现的。通过Linux提供的GPIO操作,在复位操作的时候分别读取它的值,再通过printk函数打印出来,以确定reset操作是成功的。PWDNpin的不使能。和复位一样通过,通过GPIO的操作来确定其执行成功。至此,CameraSensor已开始工作了,芯片已可以通过Linux驱动提供的I2C接口与CameraSensor通信了,接下来就是确保I2C通信的正常。利用I2C通信的相关接口去写相关寄存器,然后再去读取寄存器的值确保对寄存器操作的正确。通过初始化相关寄存器后,Camera就可以工作了,在Camera设备的data[0-7]pin脚通过示波器就可以检测到数据的变化了。至此可以确保CameraSensor硬件和驱动的正常,但还不能确定一些寄存器的配置是否正确,因为其中一些寄存器需要与Camera控制器驱动配合。Camera控制器驱动测试Camera控制器的一些配置需要与CameraSensor的配置相同,如vsync,href,pclk极性,图像的Ycbcr顺序等,否则Camera控制器会得不到正确的数据。首先要确保写入和读取寄存器的值是一致的。可以通过 Linux提供的readl,writel函数进行测试。在驱动里的流程可以通过printk函数打印到屏幕上以确保对控制器的操作流程确如驱动程序里写的那样。测试结果及分析通过串口打印的分析,与Camera相关的pin脚都可以被正确的操作,Camera硬件没有短路现象,Camera硬件与芯片的连接也正常。CameraSensor的寄存器都配置成功没有进入出错处理代码。Camera控制器寄存器的读写都正确,读取的数据和写入的数据完全一致。HAL层测试测试目的确保HAL层的代码和Android提供的Camera接口相衔接,确保Linux驱动层提供的设备节点可以正常使用。测试项和步骤Android接口实现打开Android下Camera应用程序,在串口中输入logcat命令,观察串口的打印信息,是否出现错误提示。Linux驱动提供的设备节点打开Android下的Camera应用程序,使其处于预览模式,观察串口工具minicom的打印信息,判断HAL层对设备节点的open,ioctl等操作是否在驱动里被正确执行。测试结果及分析打开Camera应用程序,对其进行预览、拍照等操作,串口工具minicom的打印信息显示Camera的HAL层代码按照设想的步骤执行,没有打印任何出错信息,HAL层工作正常。Camera拍摄效果测试在测试效果的时候,Camera应用程序已可以在屏幕上显示出Camera设备获取到的图像了,拍摄效果的测试就是需要对其中图像遇到的问题进行测试和调试,使其达到预期的效果。在Camera效果测试里直接通过人的感觉去分辨难以达到满意的效果。通常会辅助一些效果测试卡。如分辨率测试卡、24色卡、对比度测试卡、灰阶卡、灯箱等。这些卡通过放大实际的卡片图像与Camera的图像显示效果来供调试人员方便的找出图像的问题,有针对性的对图像进行微调。拍摄测试测试目的Camera拍摄效果直接影响到用户对产品的体验,是测试重要的一部分。测试的目的是使Camera应用程序在显示屏上正确反映所拍摄到的实际物品。测试项和测试步骤1)图像的颜色打开Android的Camera应用程序,使其处于预览模式,用Camera拍摄Camera测试卡中的24色卡,观察屏幕中显示的颜色与24色卡上的颜色是否一致。24卡系统的Camera模块设计和实现观察和控制开发板,通过电压表、示波器等测试Camera硬件状态。通过开发板的显示屏观察Camera效果。Camera模块的功能测试Camera模块的测试本文按照从 Camera硬件、CameraSensor驱动到Camera控制器驱动以及HAL层的顺序进行。Camera硬件测试Camera硬件是Camera模组厂商对CameraSensor的重新封装。模组厂商会在封装之后提供Camera硬件关于镜头、pin脚等相关信息。在硬件方面需要比对Camera硬件和芯片上的Camera接口使他们一一对应。硬件测试测试目的检测Camera硬件设备是否完好,与开发板的连接是否正确,芯片提供给Camera的电压、晶振是否正确。测试项和测试步骤1) 连接测试在驱动程序里用Linux提供的GPIO驱动对pin脚进行配置,使他们或高或低,并读取GPIO的值,观察其是否能够正常操作。2) 电压测试在开发板上运行Android,打开Camera应用程序,使其处于预览模式。用电压表检测Camera硬件的三个pin脚AVDD、DOVDD、VDD1.8的三个电压值,观察其是否分别为2.8V、2.8V、1.8V。3) 外部晶振测试同样打开Android应用程序,在应用程序进入预览模式时,用示波器检测Camera硬件上的MCLKpin脚,观察示波器,看示波器上显示的频率是否与驱动代码里提供的一致。测试结果及分析GPIO都可以正常操作,电压表显示的电压与代码提供的电压只存在微小的差异,示波器显示的频率和通过代码操作芯片提供的频率只存在微小的误差,不影响整体结果。六、 实验总结首先,通过这次的实验设计,让我对安卓照相机有了更深刻的认识,以前我只是以为一个照相机没什么的,可是当我搜集关于安卓照相机大量资料时,才发现现不仅是现在照相机在飞速发展,安装在我们手机上的照相机也有了长足的进步,以前的照相机只能照相,摄像。而随着科学技术的发展,相机也有了更多更好的功能,我所设计的马赛克相机原来网上已经有了成品,技术已经相当熟练,但是这个相机也加入了我自己的一些想法。通过本实验的程序设计,我对安卓开发有了越来越浓厚的兴趣。刚结束的数独游戏的设计与编程,让我获益匪浅,对安卓的开发产生了强烈的好奇心,对于这个照相机软件,我知道以我目前的水平很难把它开发出来,但是我会好好努力的。在感慨这个社会高速发展的同时,我也体会到了自己的渺小,我知道自己必须好好学习,才能逐步适应这个社会,来更好的发挥自己
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度室内外地板一体化设计与施工合同3篇
- 课题申报参考:民事非法定种类证据的实质审查机制研究
- 课题申报参考:面向金融大数据的联邦深度欺诈检测方法研究
- 二零二五版文化产业园规划设计与建设合同3篇
- 二零二五版木工企业员工离职与竞业禁止劳动合同3篇
- 2025年度个人营运汽车租赁车辆安全监控系统合同4篇
- 二零二五年度绿色节能幕墙安装服务合同文本4篇
- 2024露天煤矿开采项目咨询与服务合同范本3篇
- 2025年度木工班组安全生产标准化建设合同3篇
- 2025年度个人别墅防水系统安装合同范本
- 《狮子王》电影赏析
- 河北省保定市定州市2025届高二数学第一学期期末监测试题含解析
- 中医护理人文
- 2024-2030年中国路亚用品市场销售模式与竞争前景分析报告
- 中国2型糖尿病运动治疗指南 (2024版)
- 货物运输安全培训课件
- 统编版高中政治选择性必修2《法律与生活》知识点复习提纲详细版
- 前端年终述职报告
- 2024小说推文行业白皮书
- 市人民医院关于开展“改善就医感受提升患者体验主题活动”2023-2025年实施方案及资料汇编
- 政绩观存在的问题及整改措施范文(7篇)
评论
0/150
提交评论