调用需要 API 级别 21(当前最低为 17):android.hardware.camera2.CameraDevice.StateCallback

Posted

技术标签:

【中文标题】调用需要 API 级别 21(当前最低为 17):android.hardware.camera2.CameraDevice.StateCallback【英文标题】:call requires API level 21 (current min is 17): android.hardware.camera2.CameraDevice.StateCallback 【发布时间】:2017-02-23 23:41:36 【问题描述】:

android Studio 中的错误。 我有 android 4.4.2 的智能手机,我无法安装更新的。 我该怎么办?

private CameraDevice.StateCallback mCameraDeviceStateCallback = new CameraDevice.StateCallback()
    @Override
    public void onOpened(CameraDevice camera)
        mCameraDevice = camera;
    
    @Override
    public void onDisconnected(CameraDevice camera)
        camera.close();
        mCameraDevice = null;
    
    @Override
    public void onError(CameraDevice camera, int error)
        camera.close();
        mCameraDevice = null;
    
;

【问题讨论】:

您可以动态检查您正在运行的设备的操作系统版本,并且只有在它足够高时才使用此调用。您不能在旧设备上使用它。 【参考方案1】:

严格来说,这不是解决此问题的正确方法,但您仍然可以将旧相机与新设备一起使用,只需将相机启动延迟 2-3 秒,如下所示:

final Handler handler = new Handler();
            handler.postDelayed(new Runnable() 
                @Override
                public void run() 
                    mCamera.startPreview();
                
            , 2000);

如果您确实必须支持 21 岁以上和 23 岁以上的设备,这在大多数情况下都可以使用。

【讨论】:

以上是关于调用需要 API 级别 21(当前最低为 17):android.hardware.camera2.CameraDevice.StateCallback的主要内容,如果未能解决你的问题,请参考以下文章

android:Theme.Material.Light 需要 API 级别 21(当前最低为 8)

如何修复 Android 中的“调用需要 API 级别 26(当前最低为 25)”错误

调用需要 API 级别 24(当前最低为 8):新的 android.location.GnssStatus.Callback

setAdapter“调用需要 API 级别 11(当前最低为 8):android.widget.AbsListView#setAdapter”?

调用需要 API 级别 23(当前最低为 14):android.app.Activity#requestPermissions,checkSelfPermission [重复]

如何在Android Studio中为消息“调用需要API级别21(当前最小值为16)”启用lint错误?