为什么默认的Android摄像头预览比我自己的摄像头预览更平滑?

use*_*316 7 camera android android-camera

我只是设置了一个非常基本的相机预览,可以全屏显示相机.我比较了我的应用程序和Android相机的平滑度,并认为Android相机看起来更顺畅.

为什么会这样?是否有任何特殊技巧可以改善相机预览性能?

ssa*_*tos 7

我前一段时间遇到过同样的问题,结果发现它与相机分辨率有关.您可能Camera正在使用最大可用分辨率进行初始化,这可能会降低预览期间的性能.尝试picture size用这样的东西设置一个较低的.-

Camera.Parameters params = camera.getParameters();
params.setPictureSize(1280, 960);
camera.setParameters(params);
Run Code Online (Sandbox Code Playgroud)

请注意,您需要设置可用的图片大小.您可以查看可用尺寸

camera.getParameters().getSupportedPictureSizes();
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

编辑

似乎使用不同于默认宽高比的图片大小,也会降低性能.这是我选择我的方式pictureSize.-

首先,我得到相机默认的宽高比 pictureSize

Camera.Parameters params = camera.getParameters();
defaultCameraRatio = (float) params.getPictureSize().width / (float) params.getPictureSize().height;
Run Code Online (Sandbox Code Playgroud)

然后我得到一个pictureSize符合相同比例的较低值.-

private Size getPreferredPictureSize() {
    Size res = null;
    List<Size> sizes = camera.getParameters().getSupportedPictureSizes();

    for (Size s : sizes) {
        float ratio = (float) s.width / (float) s.height;
        if (ratio == defaultCameraRatio && s.height <= PHOTO_HEIGHT_THRESHOLD) {
            res = s;
    break;
        }
    }
    return res;
}
Run Code Online (Sandbox Code Playgroud)

PHOTO_HEIGHT_THRESHOLD您想要允许的最大高度在哪里.