Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在API 21中使用camera2类,并使应用程序在较低的API中仍然运行?_Java_Android_Build.gradle_Android Camera2 - Fatal编程技术网

Java 如何在API 21中使用camera2类,并使应用程序在较低的API中仍然运行?

Java 如何在API 21中使用camera2类,并使应用程序在较低的API中仍然运行?,java,android,build.gradle,android-camera2,Java,Android,Build.gradle,Android Camera2,我是android开发的初学者,我在使用android.hardware.camera2时遇到了问题,因为我的最低sdk是API 16。所以我现在想做的是能够使用这个类,但同时我仍然可以确保使用LowerSDK的人仍然可以使用它 我是否应该将最低SDK版本设置为API21,并为版本较低的用户创建一个if-else语句?还是有别的办法 更新:我无法导入android.hardware.camera,那么我将如何在if-else语句中使用它(如果它是唯一选项)?您不需要minSdkVersion≥

我是android开发的初学者,我在使用android.hardware.camera2时遇到了问题,因为我的最低sdk是API 16。所以我现在想做的是能够使用这个类,但同时我仍然可以确保使用LowerSDK的人仍然可以使用它

我是否应该将最低SDK版本设置为API21,并为版本较低的用户创建一个if-else语句?还是有别的办法


更新:我无法导入android.hardware.camera,那么我将如何在if-else语句中使用它(如果它是唯一选项)?

您不需要minSdkVersion≥ 21使用camera2 API。您甚至不需要设置targetSdkVersion。您只需要编译dkversion即可≥ 21(最好在开发时使用最新的API)

由于最小API大于4,如果(Build.VERSION.SDK\u INT>=21),则可以在
下的块中使用新的camera2API。这是Android的常见做法,尽管一些软件纯粹主义者会坚持运行时检查是否存在
Android.hardware.camera2.CameraManager


您应该隔离使用不推荐使用的摄影机API的代码,并使用注释标记这些方法
@TargetApi(16)
@SuppressWarnings(“不推荐”)

我建议使用
如果(Build.VERSION.SDK\u INT>您的需求)
。可能更好。如果最低版本是21,它还能工作吗?实际上你想做什么?想要使用camera?@Erika和您检查当前版本时使用的if语句(将
您的要求
替换为21,并将其设置为
=
)您检查的版本(在本例中为21)。如果大于等于21,则使用camera2。否则,使用相机。只要没有需要更高版本的库,或者没有需要更高版本的功能(例如,如果您想使用OpenGL ES 3而不支持2,可以将minSDK设置为18),就可以设置您想要的任何minSDK版本。是的,我想使用相机