Gee*_*Gee 132 api camera android android-camera android-camera2
新的camera2 API让我很困惑.我想开发一个使用该设备相机的应用程序(适用于Android API 10 - 21).如前所述这里,我应该使用"相机" API.
但是,当我尝试将"Camera"API (android.hardware.Camera)添加到清单的用户功能时,它被标记为已弃用.另一方面,我无法将其更改为"camera2"API (android.hardware.camera2),因为它只与Android API 21+(Android 5 - Lollipop)兼容 - 也会链接它,但我只能添加2个链接.
我不仅希望我的应用程序在旧版本的Android上运行,而且还需要最新版本的...
Edd*_*ala 152
即使旧的相机API被标记为已弃用,它仍然完全正常运行,并且将保持相当长一段时间(因为Play商店中几乎所有使用相机的应用程序当前都使用它).
您将不得不忽略Android Studio对其被弃用的抱怨,但如果您想支持早于21的Android版本,则必须使用旧的API.
在API级别21,您当然可以使用新API及其新功能,但如果您在API之间切换,目前您必须在应用程序中维护完全独立的流程.不幸的是,这两个API有着不同的世界观,很难编写一个支持库,可以让你在旧设备上使用类似新API的东西(如果不是,那么库将从新API映射到旧API)在API 21+).
slo*_*ott 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());
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以将所有东西分开,这将使您的生活变得更加轻松.
建议 - 与camera2的生活并不是那么好.Venders仍然会进行垃圾实现,因此您必须添加许多条件和变通方法.
示例1 - S6报告它不支持闪存:)示例2 - LG设备报告支持的图像大小列表 - 但并非所有这些都实际支持!!
要支持您想要的API,请使用以下代码.只需确定相应的名称对应api级别.例如,API 21是LOLLIPOP,API 15是ICE_CREAM_SANDWICH_MR1.
if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1)
&& ((Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP))) {
// your code here - is between 15-21
} else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// your code here - is api 21
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80538 次 |
| 最近记录: |