我正在使用直接向前的Camera API,以实现向后兼容性.相机视图本身被imageview略微覆盖,我的surfaceChanged执行此操作:
camera.setPreviewCallback((data, arg1) -> LiveView.this.invalidate());
camera.setPreviewDisplay(mHolder);
camera.startPreview();
Run Code Online (Sandbox Code Playgroud)
这适用于所有旧设备.我将预览大小设置为之前的最大可用大小surfaceCreated.然而,在Android 7.1上,它突然变黑(在Nexus 6和Moto X Play上,可能是其他的 - 所以在不同的设备上).它SurfaceView本身在Layout Inspector(willNotDraw = true)中是灰色的,但VISIBLE(和硬件加速).奇怪的是,我仍然能够拍摄照片,没有预览的事件,预览回调中的数据包含图像.
同时我得到以下日志
E/mm-camera: mct_pipeline_send_ctrl_events: Send Set Parm events
E/QCamera2HWI: static void* qcamera::QCameraCbNotifier::cbNotifyRoutine(void*) : cb message type 32768 not enabled!
E/QCamera2HWI: static void* qcamera::QCameraCbNotifier::cbNotifyRoutine(void*) : cb message type 32768 not enabled!
D/QCameraParameters: setSnapshotSkipHint: preview hint 3 fps 15.019738
Run Code Online (Sandbox Code Playgroud)
还有其他人在Android 7中体验过完全黑色的图像吗?有没有简单的修复方法?(比如直接绘制数据内容?)