首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >支持Android摄像头Api和Camera2 Api的问题

支持Android摄像头Api和Camera2 Api的问题
EN

Stack Overflow用户
提问于 2015-11-13 04:04:03
回答 1查看 2.1K关注 0票数 4

我正在帮助开发一个应用程序,它需要支持所有android版本的摄像头使用,而不需要使用任何不受欢迎的东西。这显然意味着我需要为Android (Api 21)使用新的Camera2 API。

今天,我将所有原始的相机代码转换为支持Camera2 API,检查Build.VERSION.SDK_INT以决定何时使用原始代码和何时使用新代码。当我回到Android4.x上进行测试以确保没有任何故障发生时,我遇到了当前的问题,我得到了java.lang.VerifyError并拒绝了操作码错误--这是我从未见过的。

我把我的问题归结为不理解为什么在Android4.4上运行时,以下代码会崩溃:

代码语言:javascript
运行
复制
public class CameraActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_camera);
    }

    void thisIsNeverRun()
    {
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
        {
            // set to null so we can compile and run easily.
            // Doesn't Matter as the code is never actually executed
            CameraDevice d = null;

            // calling getId as an example, anything will break it
            d.getId();
        }
    }
}

注意,从来没有调用过thisIsNeverRun()。在Android4.4设备上运行时,会发生崩溃,logcat生成以下输出:

代码语言:javascript
运行
复制
11-12 20:46:21.336 5875-5875/com.example.android.camera2basic I/dalvikvm: Could not find method android.hardware.camera2.CameraDevice.getId, referenced from method com.example.android.camera2basic.CameraActivity.thisIsNeverRun

11-12 20:46:21.336 5875-5875/com.example.android.camera2basic W/dalvikvm: VFY: unable to resolve virtual method 689: Landroid/hardware/camera2/CameraDevice;.getId ()Ljava/lang/String; 11-12 20:46:21.336 5875-5875/com.example.android.camera2basic W/dalvikvm: VFY:  rejecting opcode 0x6e at 0x0007

11-12 20:46:21.336 5875-5875/com.example.android.camera2basic W/dalvikvm: VFY:  rejected Lcom/example/android/camera2basic/CameraActivity;.thisIsNeverRun ()V

11-12 20:46:21.336 5875-5875/com.example.android.camera2basic W/dalvikvm: Verifier rejected class Lcom/example/android/camera2basic/CameraActivity;

11-12 20:46:21.336 5875-5875/com.example.android.camera2basic W/dalvikvm: Class init failed in newInstance call (Lcom/example/android/camera2basic/CameraActivity;)

11-12 20:46:21.336 5875-5875/com.example.android.camera2basic D/AndroidRuntime: Shutting down VM

11-12 20:46:21.336 5875-5875/com.example.android.camera2basic W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41c7bdb8)

11-12 20:46:21.336 5875-5875/com.example.android.camera2basic E/AndroidRuntime: FATAL EXCEPTION: main

11-12 20:46:21.336 5875-5875/com.example.android.camera2basic E/AndroidRuntime: Process: com.example.android.camera2basic, PID: 5875

11-12 20:46:21.336 5875-5875/com.example.android.camera2basic E/AndroidRuntime: java.lang.VerifyError: com/example/android/camera2basic/CameraActivity

这让我非常困惑,因为我以前从未见过这些类型的错误。我已经在两个不同的Android4.4设备上测试了这一点。诚然,在同一应用程序中,支持新API和新API是一种新的支持,但这似乎相当简单。也许我做了什么明显的错事?

在这一点上,我感到非常沮丧,因为任何包含Camera2代码的活动或片段都会在Android4.4上崩溃(我假设是其他版本),不管代码是否实际运行。我认为我可以通过将设备的摄像机代码< 21和设备> 21分别保存在不同的片段中来工作,但是我真的很想知道为什么这不能正常工作。

EN

回答 1

Stack Overflow用户

发布于 2018-03-23 07:52:35

Camera2 API只在Android5.0及以上版本的设备上工作。对于使用Android4.4的设备,您必须使用不推荐的Camera。您可以在这里找到更多信息:https://developer.android.com/guide/topics/media/camera.html#considerations

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33685758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档