静默拍照,不需要预览

本文介绍了如何在Android中实现静默拍照,即在后台完成拍照且无预览界面。首先讲解了相机开发的基础知识,包括Camera类、SurfaceView和SurfaceHolder之间的关系。接着详细阐述了如何利用SurfaceTexture实现无预览拍照,指出SurfaceTexture可以接收相机的图像流数据,但不会显示在屏幕上,从而达到静默拍照的效果。
摘要由CSDN通过智能技术生成

静默拍照,不需要相机预览,可以在后台完成拍照并保存。 可用于人脸验证解锁。

一、首先需要了解一下相机开发相关知识。相机开发有两个重要的系统类:
  • 1、Camera.java (android.hardware.Camera)
  • 2、SurafaceView.java (android.view.SurafaceView)

image

1.2 Surface、SurfaceView、SurfaceHolder的关系

image

Surface是用来处理屏幕内容合成器所管理的原始缓存区的工具,它通常由图像缓冲区的消费者创建(如SurfaceTexture、MediaRecorder),然后被移交到生产者(如MediaPlayer)。

SurfaceHolder 一个抽象接口,给持有Surface的对象使用,它可以控制Surface的大小和格式,编辑Surface的像素,以及监听Surface的变化。 这个接口通常通过SurfaceView获得。
SurfaceHolder.Callback有三个回调方法:

  1. surfaceCreated()
  2. surfaceChanged()
  3. surfaceDestroyed()

SurfaceView 提供了嵌入式图层的专用Surface。可以控制Surface的格式和大小,SurfaceView负责把Surface显示在屏幕的正确位置。
SurfaceView继承自View,用于在屏幕上面显示相机的预览画面。
SurfaceView中有两个对象,一个是Surface,一个是SurfaceHolder,我们可以通过getHolder()方法,获得当前SurfaceView的SurfaceHolder对象,通过SurfaceHolder的回调,可以知道surface的状态。

1.3 Camera

Camera类的接口和方法有很多,一个最简单的Camera应用的实现:

// 在surfaceCreated()中

Camera mCamera = Camera.open(0);
Camera.Parameters mParameters = mCamera.getParameters();
mParameters.setPreviewSize(640, 480);
mParameters.setPictureSize(640, 480);
mCamera.setParameters
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值