我有一个正在运行的视频应用程序,它可以在1280x720中为许多运行7.0或更高版本的安卓平板电脑录制视频,但联想的Tab4 8除外。
使用Camera2 API,我通过查询受支持的预览大小来设置捕获。令人惊讶的是,联想Tab4 8只返回这些预览大小:
1040x780,864x480,640x640,800x480,720x480,768x432,640x480,480x640,576x432,640x360,480x360,480x320,384x288,352x288,320x240,240x320,240x160,176x144,144x176,160x120
但内置摄像头支持1280x720甚至1920x1080。只要尝试将分辨率或预览大小设置为1280x720,就会出现错误。android.hardware.camera2.CameraAccessException: CAMERA_ERROR (3): submitRequestList - must configure device with valid surfaces before submitting requests
为什么其他的相机应用程序可以处理它呢?我从playstore下载了“开放相机”。它可以选择在1280x720 (但不是1040x780?!)捕获。
发布于 2018-10-29 15:06:39
我已经知道是什么原因造成了这一切。这款联想平板电脑有一个“遗留摄像头”,这意味着相机的创建是为了服务于摄像头API,而不是Camera2 API。
在本例中,Camera2 API只是Camera2的包装器,但它不能公开所有功能,因此缺少对某些分辨率的支持。
通过以下调用,我现在可以知道,我的设备是否居住在遗留相机中:
Xamarin.Android:
CameraCharacteristics characteristics = camManager.GetCameraCharacteristics(cameraId);
var hardwareLevel = characteristics.Get(CameraCharacteristics.InfoSupportedHardwareLevel);
//hardwareLevel.ToString() would spit out one of the following numbers:
//LEGACY - 2 -> Legacy Cameras might not support 1280x720 resolution
//LIMITED - 0
//FULL - 1
//LEVEL_3 - 3https://stackoverflow.com/questions/53009758
复制相似问题