要解决“Android Studio相机显示的是像素化的脸而不是虚拟场景”问题,可以尝试以下解决方法:
private Camera.Size getOptimalPreviewSize(List sizes, int screenWidth, int screenHeight) {
final double ASPECT_TOLERANCE = 0.1;
double targetRatio = (double) screenWidth / screenHeight;
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;
double diff = Math.abs(size.height - screenHeight);
if (diff < minDiff) {
optimalSize = size;
minDiff = diff;
}
}
return optimalSize;
}
在相机预览前,调用该方法来获取最佳预览尺寸:
Camera.Parameters parameters = camera.getParameters();
List supportedSizes = parameters.getSupportedPreviewSizes();
Camera.Size optimalSize = getOptimalPreviewSize(supportedSizes, screenWidth, screenHeight);
parameters.setPreviewSize(optimalSize.width, optimalSize.height);
camera.setParameters(parameters);
parameters.setPreviewFormat(ImageFormat.RGB_565);
// 或者
parameters.setPreviewFormat(ImageFormat.RGBA_8888);
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
parameters.setExposureMode(Camera.Parameters.EXPOSURE_MODE_AUTO);
// 其他相机参数设置
这些是一些常见的解决方法,可以根据具体情况进行调整和尝试。