Android Camera2 ImageReader 大小在 Android 5.0 Galaxy S5 上不正确

Posted

技术标签:

【中文标题】Android Camera2 ImageReader 大小在 Android 5.0 Galaxy S5 上不正确【英文标题】:Android Camera2 ImageReader size not correct on Android 5.0 Galaxy S5 【发布时间】:2017-02-26 18:42:42 【问题描述】:

我正在尝试应用 Camera2 api 来拍照。我在android 6.0.15.1.1 上得到了正确的结果,但不是5.0。 我不知道为什么。

CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraDevice.getId());

Size[] jpegSizes = null;

if (characteristics != null) 
    jpegSizes = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP).getOutputSizes(ImageFormat.JPEG);



if (jpegSizes != null && 0 < jpegSizes.length) 
    width = jpegSizes[0].getWidth();
    height = jpegSizes[0].getHeight();
    Log.i("jpegSizes width : ", String.valueOf(width));
    Log.i("jpegSizes height : ", String.valueOf(height));



ImageReader reader = ImageReader.newInstance(width, height, ImageFormat.JPEG, 1);
        List<Surface> outputSurfaces = new ArrayList<Surface>(2);
        outputSurfaces.add(reader.getSurface());
        outputSurfaces.add(new Surface(new SurfaceTexture(10)));



final CaptureRequest.Builder captureBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE); //  TEMPLATE_VIDEO_SNAPSHOT


captureBuilder.addTarget(reader.getSurface());


captureBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);

这些是 jpegSizes 数组中的大小。

 I/takepic w :: 5312 h : 2988
 I/takepic w :: 3984 h : 2988
 I/takepic w :: 3264 h : 2448
 I/takepic w :: 3264 h : 1836
 I/takepic w :: 2560 h : 1920
 I/takepic w :: 2048 h : 1152
 I/takepic w :: 1920 h : 1080
 I/takepic w :: 1280 h : 960
 I/takepic w :: 1280 h : 720
 I/takepic w :: 800 h : 480
 I/takepic w :: 640 h : 480

我都试过了,但总是出现这个错误:

E/CameraDevice-0-LE:尺寸为 (w=1, h=1) 且格式为 0x1 的表面是 无效,尺寸不在有效集合中:[1920x1080, 1440x1080, 1280x720, 1056x864、960x720、800x480、720x480、640x480、352x288、320x240、 176x144]

W/CameraDevice-JV-0:流配置失败

E/CameraCaptureSession:会话 0:创建捕获会话失败; 配置失败

请给我任何解决方案。

【问题讨论】:

有什么解决办法吗? 【参考方案1】:

在我的例子中,使用 TextureView 而不是 AutoFitTextureView 解决了 android 5.0 上的尺寸问题。希望它可以帮助某人。

【讨论】:

以上是关于Android Camera2 ImageReader 大小在 Android 5.0 Galaxy S5 上不正确的主要内容,如果未能解决你的问题,请参考以下文章

Android Camera2 教程 · 第一章 · 概览

官方Android Camera2 录像示例--停止录像时崩溃修正

android.hardware.camera2.full 来自哪里?

如何实现Android平台GB28181设备对接Camera2数据

android camera2连拍

Android Camera2 拍照入门学习