我是靠谱客的博主 冷艳雪糕,最近开发中收集的这篇文章主要介绍Android 下设置 CameraView 预览与 Camera.Size 等比例Android 下设置 CameraView 预览与 Camera.Size 等比例,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
Android 下设置 CameraView 预览与 Camera.Size 等比例
前提
使用的是 Camera API 1。
Camera.Size 的选择,是基于当前 View 的比例下,尽可能选择更高的分辨率。
surfaceCreated 中重新拉伸 View
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback, Camera.PreviewCallback {
public void surfaceCreated(SurfaceHolder holder) {
... // 初始化 Camera Thread
try {
... // 设置 Camera 参数
Camera.Parameters parameters = mCamera.getParameters();
Camera.Size previewSize = parameters.getPreviewSize(); // 当前 Camera 分辨率
// 输入当前 CameraView 的长宽,Camera 预览长宽
MainActivity.getInstance().setCameraPreviewSize(this.getWidth(), this.getHeight(),
previewSize.width, previewSize.height);
} catch (IOException e) {
... // 出错处理
}
}
}
MainActivity 中计算 View 的新 Size
public void setCameraPreviewSize(int viewWidth, int viewHeight, int cameraWidth, int cameraHeight) {
boolean bIsPortrait = (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT); // 判断水平/垂直状态
if (bIsPortrait) {
int tmp = cameraWidth;
cameraWidth = cameraHeight;
cameraHeight = tmp;
}
int destWidth = viewWidth;
int destHeight = viewHeight;
if (bIsPortrait) {
destHeight = (int)(((double)cameraHeight / cameraWidth) * destWidth);
} else {
destWidth = (int)(((double)cameraWidth / cameraHeight) * destHeight);
}
FrameLayout.LayoutParams cameraFL = new FrameLayout.LayoutParams(destWidth, destHeight, Gravity.TOP); // set size
cameraFL.setMargins(0, 0, 0, 0); // set position
mCameraPreview.setLayoutParams(cameraFL);
}
最后
以上就是冷艳雪糕为你收集整理的Android 下设置 CameraView 预览与 Camera.Size 等比例Android 下设置 CameraView 预览与 Camera.Size 等比例的全部内容,希望文章能够帮你解决Android 下设置 CameraView 预览与 Camera.Size 等比例Android 下设置 CameraView 预览与 Camera.Size 等比例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复