Android Camera2预览被拉伸
创始人
2024-08-13 11:01:37
0

当Android Camera2预览被拉伸时,可以通过设置预览尺寸和相机输出尺寸来解决。以下是一个代码示例,演示如何在Camera2应用程序中解决预览拉伸问题:

// 获取相机输出尺寸
StreamConfigurationMap map = cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
Size[] outputSizes = map.getOutputSizes(SurfaceTexture.class);

// 选择合适的预览尺寸
Size previewSize = chooseOptimalSize(outputSizes, desiredWidth, desiredHeight);

// 设置预览尺寸
textureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
    @Override
    public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {
        // 设置预览尺寸
        surfaceTexture.setDefaultBufferSize(previewSize.getWidth(), previewSize.getHeight());

        // 打开相机
        openCamera();
    }

    // 其他回调方法...
});

// 选择最佳预览尺寸的方法
private Size chooseOptimalSize(Size[] choices, int desiredWidth, int desiredHeight) {
    List bigEnough = new ArrayList<>();
    for (Size option : choices) {
        if (option.getWidth() >= desiredWidth && option.getHeight() >= desiredHeight) {
            bigEnough.add(option);
        }
    }

    // 如果存在合适的预览尺寸,则选择最小的尺寸
    if (bigEnough.size() > 0) {
        return Collections.min(bigEnough, new Comparator() {
            @Override
            public int compare(Size lhs, Size rhs) {
                return Long.signum((long) lhs.getWidth() * lhs.getHeight() - (long) rhs.getWidth() * rhs.getHeight());
            }
        });
    } else {
        // 如果没有合适的预览尺寸,则选择最大的尺寸
        return choices[0];
    }
}

在这个示例中,chooseOptimalSize()方法用于选择最适合的预览尺寸。它首先找到所有宽度和高度大于或等于所需宽度和高度的尺寸,然后选择最小的尺寸。如果没有找到合适的尺寸,则选择输出尺寸列表中的第一个尺寸。然后,在onSurfaceTextureAvailable()方法中,将预览尺寸设置为SurfaceTexture的默认缓冲区大小。

通过使用这种方法,您可以在Camera2应用程序中解决Android Camera2预览被拉伸的问题。

相关内容

热门资讯

安卓换鸿蒙系统会卡吗,体验流畅... 最近手机圈可是热闹非凡呢!不少安卓用户都在议论纷纷,说鸿蒙系统要来啦!那么,安卓手机换上鸿蒙系统后,...
安卓系统拦截短信在哪,安卓系统... 你是不是也遇到了这种情况:手机里突然冒出了很多垃圾短信,烦不胜烦?别急,今天就来教你怎么在安卓系统里...
app安卓系统登录不了,解锁登... 最近是不是你也遇到了这样的烦恼:手机里那个心爱的APP,突然就登录不上了?别急,让我来帮你一步步排查...
安卓系统要维护多久,安卓系统维... 你有没有想过,你的安卓手机里那个陪伴你度过了无数日夜的安卓系统,它究竟要陪伴你多久呢?这个问题,估计...
windows官网系统多少钱 Windows官网系统价格一览:了解正版Windows的购买成本Windows 11官方价格解析微软...
安卓系统如何卸载app,轻松掌... 手机里的App越来越多,是不是感觉内存不够用了?别急,今天就来教你怎么轻松卸载安卓系统里的App,让...
怎么复制照片安卓系统,操作步骤... 亲爱的手机控们,是不是有时候想把自己的手机照片分享给朋友,或者备份到电脑上呢?别急,今天就来教你怎么...
安卓系统应用怎么重装,安卓应用... 手机里的安卓应用突然罢工了,是不是让你头疼不已?别急,今天就来手把手教你如何重装安卓系统应用,让你的...
iwatch怎么连接安卓系统,... 你有没有想过,那款时尚又实用的iWatch,竟然只能和iPhone好上好?别急,今天就来给你揭秘,怎...
iphone系统与安卓系统更新... 最近是不是你也遇到了这样的烦恼?手机更新系统总是失败,急得你团团转。别急,今天就来给你揭秘为什么iP...