android开发教程My Android Camera Notes.doc
文本预览下载声明
My Android Camera Notes
1.使用SurfaceView控件来显示摄像头捕捉到的画面
XML/HTML代码
SurfaceViewandroid:layout_width=fill_parent
android:layout_height=240dip
android:id=@+id/surfaceView/
2.具体细节
/*获取SurfaceView控件*/
SurfaceView surfaceView = (SurfaceView)this.findViewById(R.id.surfaceView);
/*设置分辨率*/
surfaceView.getHolder().setFixedSize(176, 144);
/*下面设置Surface不维护自己的缓冲区,而是等待屏幕的渲染引擎将内容推送到用户面前*/
surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
/*打开摄像头,注意这里是Android.hardware.Camera */
Camera camera = Camera.open();
/*为Camera设置摄像参数*/
Camera.Parameters parameters = camera.getParameters();
/*设置预览照片的大小,此处设置为全屏*/
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); //获取当前屏幕管理器对象
Display display = wm.getDefaultDisplay(); //获取屏幕信息的描述类
parameters.setPreviewSize(display.getWidth(), display.getHeight()); //设置
/*每秒从摄像头捕获5帧画面,*/
parameters.setPreviewFrameRate(5);
/*设置照片的输出格式:jpg */
parameters.setPictureFormat(PixelFormat.JPEG);
/*照片质量*/
parameters.set(jpeg-quality, 85);
/*设置照片的大小:此处照片大小等于屏幕大小*/
parameters.setPictureSize(display.getWidth(), display.getHeight());
/*将参数对象赋予到camera对象上*/
camera.setParameters(parameters);
/*设置用SurfaceView作为承载镜头取景画面的显示*/
camera.setPreviewDisplay(surfaceView.getHolder());
/*开始预览*/
camera.startPreview();
/*自动对焦*/
camera.autoFocus(null);
/*拍照片*/
camera.takePicture(null, null, null, jpegCallback);
/*停止预览*/
camera.stopPreview();
/*释放摄像头*/
camera.release();
3.添加使用摄像头的权限
uses-permission android:name=android.permission.CAMERA/
4.测试:目前模拟器不支持拍照环境的模拟,必须使用真实手机测试。
5.代码清单
** string values : strings.xml
XML/HTML代码
?xmlversion=1.0encoding=utf-8?
resources
stringname=app_name手机拍照程序/string
/resources
** AndroidManifest.xml
XML/HTML代码
?xmlversion=1.0encoding=utf-8?
manifestxmlns:android=/apk/res/android
package=wjh.android.takepicture
android:versionCode=1
android:versionName=1.0
applicationandroid:icon=@drawable/iconandroid:label=@string/app_name
!--android:screenOrientation=landscape表示横向界面--
activityandroid:name=.MainActicityandroid:label=@
显示全部