项目实训(二十)Camera探究

安卓中可以操作相机的类有hardware.Camera和Camera2,后者只适用于6.0+的部分机型,所以这里只探究API1的Camera。

项目里发现使用了SurfaceTexture,SurfaceTexture不同于SurfaceView和GLSurfaceView的地方在于它接受输入数据但是不在屏幕上绘制出来,因此可以作为数据源和view之间的一层,处理传来的数据然后交给view绘制。项目里这部分涉及到JNI,太复杂了,这这里就不探究了。只看Camera的基本使用。

这里配合SurfaceView使用。

1.预览:

初始化(有权限的前提下):Camera cam = Camera.open();

还有一个带参数的重载,传入的是camId,这个id就代表相机编号。现在的手机一般都不是一个摄像头,在Camera.CameraInfo里定义了两个常量,从字面意义上就能看出表示前置和后置两个摄像头id。

然后在surfaceView.getHolder.setCallback中的surfaceCreated里拿到SurfaceHolder交给cam执行预览,相当于一个绑定,数据从相机流入surfaceview:


默认发现相机角度偏了90度,所以这里转回去。

 

2.翻转镜头:

先释放原相机资源然后获得另一个相机开始预览。上面提到两个常量,前置和后置相机Id分别是1和0,所以代码是这样的:

        camera.stopPreview();
        camera.release();
        camera = Camera.open(1-currentId);
        camera.setPreviewDisplay(holder);
        camera.setDisplayOrientation(90);
        camera.startPreview();

currentId是每次获取相机时记录的当前Id。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值