android camera设置预览尺寸
时间: 2023-09-30 15:07:27 浏览: 134
在 Android 中,设置相机预览尺寸需要先获取到相机实例,然后通过 `Camera.Parameters` 类的 `getSupportedPreviewSizes()` 方法获取相机支持的预览尺寸列表,再选择一个合适的尺寸进行设置。
以下是一个设置预览尺寸的示例代码:
```java
private void setPreviewSize(Camera camera, int width, int height) {
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes();
Camera.Size optimalSize = getOptimalPreviewSize(previewSizes, width, height); // 获取最佳尺寸
parameters.setPreviewSize(optimalSize.width, optimalSize.height); // 设置预览尺寸
camera.setParameters(parameters);
}
private Camera.Size getOptimalPreviewSize(List<Camera.Size> sizes, int width, int height) {
final double ASPECT_TOLERANCE = 0.1;
double targetRatio = (double) width / height;
Camera.Size optimalSize = null;
double minDiff = Double.MAX_VALUE;
for (Camera.Size size : sizes) {
double ratio = (double) size.width / size.height;
if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue;
if (Math.abs(size.height - height) < minDiff) {
optimalSize = size;
minDiff = Math.abs(size.height - height);
}
}
if (optimalSize == null) {
minDiff = Double.MAX_VALUE;
for (Camera.Size size : sizes) {
if (Math.abs(size.height - height) < minDiff) {
optimalSize = size;
minDiff = Math.abs(size.height - height);
}
}
}
return optimalSize;
}
```
在上述代码中,`setPreviewSize()` 方法中的 `camera` 参数是相机实例,`width` 和 `height` 参数分别表示预览区域的宽度和高度。`getOptimalPreviewSize()` 方法中的 `sizes` 参数是相机支持的预览尺寸列表,该方法会返回一个最佳尺寸。最后,将最佳尺寸设置到相机的 `Camera.Parameters` 中即可。
阅读全文