当前位置 : 主页 > 网络编程 > 其它编程 >

Android中自定义相机Camera使用

来源:互联网 收集:自由互联 发布时间:2023-07-02
应用中我们时常会遇到要制作拍照上传功能,但我们一般的做法都是直接调起系统的拍照界面或者使用第三方提供的界面。如果用户有定制要求或者我们有自己的一些需求我们该怎么办
应用中我们时常会遇到要制作拍照上传功能,但我们一般的做法都是直接调起系统的拍照界面或者使用第三方提供的界面。如果用户有定制要求或者我们有自己的一些需求我们该怎么办呢?今天我们按步骤

应用中我们时常会遇到要制作拍照上传功能,但我们一般的做法都是直接调起系统的拍照界面或者使用第三方提供的界面。如果用户有定制要求或者我们有自己的一些需求我们该怎么办呢?今天我们按步骤完成一个自定义相机的制作。

1.Camera相关的API

拍照我们主要用到的两个类,一个是SurfaceView,这个我们在上一次就介绍过了;还有一个就是Camera了。所以我们需要了解一下Camera相关API。

  • getNumberOfCameras:获取本设备的摄像头数目。
  • open:打开摄像头,默认打开后置摄像头。如果有多个摄像头,那么open(0)表示打开后置摄像头,open(1)表示打开前置摄像头。
  • getParameters:获取摄像头的拍照参数,返回Camera.Parameters对象。
  • setParameters:设置摄像头的拍照参数。具体的拍照参数通过调用Camera.Parameters的下列方法进行设置。

setPreviewSize

设置预览界面尺寸 setPictureSize 设置保存图片的尺寸。 setPictureFormat 设置图片格式。一般使用ImageFormat.JPEG表示JPG格式。 setFocusMode 设置对焦模式。取值Camera.Parameters.FOCUS_MODE_AUTO只会对焦一次;取值FOCUS_MODE_CONTINUOUS_PICTURE则会连续对焦
  • setPreviewDisplay:设置预览界面的表面持有者,即SurfaceHolder对象。该方法必须在SurfaceHolder.Callback的surfaceCreated方法中调用。
  • startPreview:开始预览。该方法必须在setPreviewDisplay方法之后调用。
  • unlock:录像时需要对摄像头解锁,这样摄像头才能持续录像。该方法必须现在startPreview方法之后调用。
  • setDisplayOrientation:设置预览的角度。Android的0度在三点钟的水平位置,而手机屏幕是垂直位置,从水平位置到垂直位置需要旋转90度。
  • autoFocus:设置对焦事件。参数自动对焦接口AutoFocusCallback的onAutoFocus方法在对焦完成时触发,在此提示用户对焦完毕可以拍照了。
  • takePicture:开始拍照,并设置拍照相关事件。第一个参数为快门回调接口ShutterCallback,它的onShutter方法在按下快门时触发,通常可在此播放拍照声音,默认为“咔嚓”一声;第二个参数的PictureCallback表示原始图像的回调接口,通常无须处理直接传null;第三个参数的PictureCallback表示JPG图像的回调接口,压缩后的图像数据可在该接口中的onPictureTaken方法中获得。
  • setZoomChangeListener:设置缩放比例变化事件。缩放变化监听器OnZoomChangeListener的onZoomChange方法在缩放比例发生变化时触发。
  • setPreviewCallback:设置预览回调事件,通常在连拍时调用。预览回调接口PreviewCallback的onPreviewFrame方法在预览图像发生变化时触发。
  • stopPreview:停止预览。
  • lock:录像完毕对摄像头加锁。该方法在stopPreview方法之后调用。
  • release:释放摄像头。因为摄像头不能重复打开,所以每次退出拍照时都要释放摄像头。

2.代码设置表面视图SurfaceView

接着我们一步一步来实现我们的功能。首先我们要把表面视图做好。

首先我们的布局是这样的。

上一篇:linuxc日志功能实现
下一篇:没有了
网友评论