slott..
38
将所需的所有方法放在界面中,然后创建一个这样的相机实例
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Log.d(TAG, "camera2 selected");
this.camera = new Camera2(getContext());
} else {
Log.d(TAG, "camera1 selected");
this.camera = new Camera1(getContext());
}
通过这种方式,您可以将所有东西分开,这将使您的生活变得更加轻松.
建议 - 与camera2的生活并不是那么好.Venders仍然会进行垃圾实现,因此您必须添加许多条件和变通方法.
示例1 - S6报告它不支持闪存:)示例2 - LG设备报告支持的图像大小列表 - 但并非所有这些都实际支持!!
这是真的.相机2 API实际上将相机设备分为三类:LEGACY,LIMITED和FULL.如果摄像机被归类为LEGACY,那么所有的camera2 API调用都会被翻译成camera1,因此它真的不值得打扰.我的建议是调用`CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraID); if(characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL)== CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY)...`并选择旧的API(如果是). (14认同)