高仿微信Android自定义全屏相机(CustomCamera)

需求

高仿手微的全屏自定义相机(Custom Camera),拍照和预览都是全屏尺寸,适配任何机型。使用Camera API,告别摄像头PictureSize的限制。
本demo实现了全屏预览、全屏拍照、两指拖动缩放、自动聚焦、手动聚焦显示聚焦框、闪光灯。
下一版本更新: 高仿手微长按录制全屏高清视频,敬请期待!

接触过相机开发的都知道,Camera.Parameters支持的PreviewSIze和PictureSize是不匹配的。这就导致预览和拍照的图像尺寸不一致。一般情况下PreviewSize支持的尺寸包括手机屏幕尺寸,而PictureSize包含的尺寸就古怪的多了。

这就找到了实现全屏拍照的突破口

监听预览,拿到相机预览图像数据,转成bitmap

流程控制

  • 清单文件添加权限
<uses-permission android:name="android.permission.CAMERA" />


<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

sdk 25 (android6.0) 以上记得动态获取权限

  • 在onResume()里初始化相机
Camera camera = Camera.open(cameraId);// cameraId 为0,是开启后置摄像头;1 是前置摄像头。多摄的情况不在此考虑范围内。
//将预览图像渲染到surfaceView上
mHolder = surfaceView.getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
camera.setPreviewDisplay(mHolder);
  • 关键来了,设置Camera.Parameters 这里很容易出现各种问题

在相机API中可以通过setDisplayOrientation()设置相机预览方向。在默认情况下,这个值为0,与图像传

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值