《AM安卓完整报告.docx》由会员分享,可在线阅读,更多相关《AM安卓完整报告.docx(12页珍藏版)》请在优知文库上搜索。
1、AM安卓完整报告Android照相机软件1.软件需求分析如今很多科技进步更新很快,也给人们带来了便利,手机的功能越来越强大,人们对手机的需求早已不是基本的打电话和发短信,人们更多的是希望手机能像电脑一样便利,所以智能手机慢慢成为人们选择的目标。其中Android照相机的种类也越来越多。设计Android照相机首先要比照相机的各种性能有肯定的解,要知道一个Android照相机都包含哪些必备的东西,在大脑里形成肯定的脉络。布没有硬件的状况卜可以在虚拟机里创建开发环境和测试。Eclipse就是一个开放源代码的、基于Java的可扩绽开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建
2、开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKitJDK)0基于Android的笑脸识别照相机和一般照相机有大部分的性能是一样的,都须要进行对主界面的设置,相机焦距的自动调整,配置相机特性的参数,保存图片等等。不同的在于,笑脸识别照相机是一款手机处在拍摄界面时通过被拍摄人是否微笑来感应从而实现拍照功能,即先轻敲摄像头按钮,当被拍人物微笑就会时自动拍照。2.软件总体设计2.1过程设计(1)主界面:全屏,半透亮;(2)轻敲摄像头按钮,当被拍人物微笑时自动拍照:(3)图片被点击触发的时间:(4)拍摄的图片的预览设置:预览大小,设置Su
3、rface辨别率;(5)图片保存和保存拍摄图片后还须要配置相机特性的参数,设置保存的图片尺寸以及设置图片质量;(6)拍摄效果:反光,黑白等:(7)写相应的数据权限。2.2拍摄流程图主界面笑脸感应拍摄相机自动焦距保存图片开启相机拍摄图片预览退出屏幕常亮放弃拍摄返回拍摄主界面2.2拍摄流程图3.关键技术分析设计Android照相机过程一些可能须要用到的函数:(1)创建一个ACtiVity用来标识恳求照相功能。activity在创建的时候回调的函数主要用来初始化一些变量。SurfaceHoldcr.Callback接口:SurfaceHolder.Callback是用于接受发生在SurfaceVie
4、w中变化的信息SurfaceHoldcr.CalIback实现三个函数:SurfaccChanged当surface的大小或是尺寸变更的时候调用SurfaceCreated:当surface被创建时调用SurfaccDcstroyed:当surface被毁坏时调用。(2)SurfaceView控件显示照相机中的预览效果。(3)屏幕显示设为半透亮,全屏,没有标题:SetContentView(R.layout,main):mSurfaceView=(SurfaceView)findViewById(R.id.surface_camera)(4) SurfaceHolderSUrfaCeHolde
5、r用来限制SurfaceView,它是系统供应的一个用来设置SurfaceVicw的一个对象,而它通过SurfaceView.gelHolder0这个方法来获得。而Camera提供一个SetPreviewDisplay(SurfaceHolclcr)的方法来连接SUrfaCeHOlder,并通过来它限制SurfaceViewo(5) StartPreVieW()和StoPPreVieW()开启和关闭预览。(6) Camera.open()这走个静态方法,假如相机没有别人用着,则会返回一个相机引用,假如被人用着,则会抛出异样。(7) )SurfaceHolder.Callback这是个holde
6、r用来显示SUrfaCCVieW数据的接口,他分别必需实现3个方法:SUrfaCeCreatedo这个方法是surface被创建后调用的:SUrfaCeChangedo这个方法是当SurfaceVicw发生变更后调用的;SUrfaCeDeStrOyed()这个是当SurfaceView销毁时调用的。SurfaccHolde通过addCallBack()方法将响应的接I绑定到他身上。SurfaceHoldcr还必需设定一个SeITyPeO方法。(8)MySurfaceView类它继承于SurfaceView,并在里面实现了照相机的预览功能.(9)camera.tackPiture()Canler
7、a.tackPiture()这个方法是用来实现拍照功能,这个方法有二个参数:ShutterCalIBackshutter,PictureCallBackraw和PictureCallBackjpeg.(10) shutter作用:拍照瞬间调用。(11) raw作用:获得没有压缩过的图片数据。(12) jpeg作用:返回jpeg的图片数据。(13) null当不须要对图片进行处理时,可以干脆用null代替。须要留意的事当调用camera.takePiture方法后,camera关闭了预览,这时须要调用StartPreVieW()来重新开启预览。(14) notify_calIback用于处理一些
8、通知的消息,如按了快门等。(15)我们通过BitmapFactory.decodeByterray(data,0,data,length)来获得图片并通过io处理,将图片保存到想要保存的位置。(16) setPreviewCallBack0.功能是为每一帧图片增加回调,处理并显示。4.软件具体设计4.1授权(1)首先,须要授权。uses-permissionandroid:name=android.permission.CAMERA(2)自动对焦功能:uses-featureandroid:name=android.hardware,camera,autofocus/4.2主界面的设计主界面准
9、备运用Absolute1.ayout布局来设计该界面,并且定义了一个全屏的SurfaceView用来拍摄者在进入程序的第一个界面(就是拍照界面):两个BUlIon分别是:拍照、退出。摄像头界面将通过全屏(横屏)显示。屏幕显示设为半透亮的,其代码为:setContentView(R.layout,main)04.3 拍照设置依据拍摄的方向旋转图片,还要设置被点击触发的时间配置。但是,这是对于一般的相机,对于笑脸感应照相机则是不须要被点击触发的时间配置的,它是依据人的面部表情来确认是否拍照,当人物微笑时拍摄主界面就会有所感应,就会实现拍照功能,但是,当人物面部没有任何表情或不是微笑时,拍摄界面就不
10、会有任何反应,即须要先轻敲摄像头按钮,当被拍人物微笑时就会自动拍照。还有很重要的一点就是这个笑脸感应照相机是须要前置摄像头的。拍照前的设置完毕了,那么接下来就是拍照了,拍照用到了一个Camera.tackPiture()这个方法,这个方法,有二个参数分别是ShutterCallBackshutter,PiclureCalIBackraw,PictureCa11Backjpeg。当起先拍照时,会依次调用ShUtter的OnShUtter()方法:raw的OnPictureTaken方法:jpeg的OnPiCtUreTaken方法。三个参数的作用是shutter,拍照瞬间调用;raw,获得没有压缩
11、过的图片数据:jpeg,返回jpeg的图片数据。当你不须要对图片进行处理,可以干脆用null代替。再接下来就是在Android相机快门关闭时候的回调接口,通过这个接口来通知用户快门关闭的事务,这时Android相机在快门关闭的时候都会发出响声,依据须要可以在该回调接口中定义各种动作,例如:使设备振动等等。而且这里须要留意,当调用CameraJakePiture方法后,camera关闭了预览,这时须要调用StartpreVieW()来重新开启预览。这样就是实现了拍照的功能。起先拍照时,还要准备用于表示对焦状态的图片,对焦胜利后,变更状态图片,最终停止拍照。还须要创建一个PictureCallba
12、ck对象,并实现其中的OnPictureTaken方法,该方法用于处理拍摄后的图片数据。4.4 拍摄图片预览设置创建一个照相,要考虑用什么控件显示照相机中的预览效果,那就是SUrfaCeView,而限制SurfaccVicw则须要一个SUrfaCeHolder,它是系统供应的一个用来设置SurfaceView的个对象,而它通过SUrfaCeVieW.getHolderO这个方法来获得。而Camera供应一个SetPreVieWDiSP供y(SurfaceHolder)的方法来连接。还有就是运用到一个拍照的类,同样也是SurfaceView来实现的,想要在一部分上显示,并且运用按钮操作的话,可以
13、修改一下这个类,而且这个是拍照之后停留在拍照页面的;或者假如须要在拍照后不停留在拍照页面的,可以Fl行修改和添加参数。还须要用到SurfaccHolder来通过它限制SUrfaCeVieW,而我们所运用android的Camera类供应了StartPreVieW()和StopPreviewO来开启和关闭预览。关系如下:CameraSurfaceHolderSurfaceView0Camera.。Peno这是个静态方法,假如相机没有别人用着,则会返回一个相机引用,假如被人用着,则会抛出异样。还有就是SurfaceIIolder.Callback,这是个holder用来显示SurfaceView数
14、据的接口,他分别必需实现3个方法:SurfaceCreatecl()这个方法是surface被创建后调用的;SUrfaCCChangedo这个方法是当SUrfaCeViC谭发生变更后调用的;SUrfaCeDeStrOyed()这个是当SurfaceView销毁时调用的。SurfaceHoldc通过addCalIBackO方法将响应的接口绑定到他身上。SurfaceHoldcr还必需设定一个SetTyPe()方法。写一个MySUrfaCeVieW类,他继承于SurfaceView,并在里面实现了照相机的预览功能。这样应当就能够预览了,接下来就是对一些细微环节的设计。首先要依据屏幕方向设置预浏尺寸
15、和拍摄的方向旋转图片(纵向拍摄时要须要将图片选择90度),再然后对相机所拍摄的影像的预览进行设宣。其中设置预览的画面的代码:camera.SetParameters(parameters)还要设置预览大小:Camera.Parametersparameters=camera.getParameters()相机特性的参数设置:Displaydisplay=wm.getDefaultDisplay()还有就是要设置Surface辨别率相机和H动焦距屏,还要保证幕常亮等等。4.5 图片保存和其他设计图片的保存基本步骤:(1)获得当前口期时间,作为文件名;(2)推断SD卡是否存在,存在的话获得根书目位置;(3)将位图压缩为JPEG格式,写进SD卡中。其中要运用将拍摄的图片传入RictureCallback接口的OnPictureTaken方法。还有就是要图片保存就须要在那个参数中的jpeg的方法里面进行处理。JiBiiBitmapFactory.(IecodeByleArray(data.0,dta.length)来获得图片并通过io处理,将图片保存到想要保存的位置。并且还须要设置保存的图片大小,设置图片质量以及设置图片格式等等。其中图片质量:parameters.setPiCtureFormat(PixelFormat.JPEG)设置图片的大小:par