Android API 级别 16 及更高级别的 Torch 应用程序

Posted

技术标签:

【中文标题】Android API 级别 16 及更高级别的 Torch 应用程序【英文标题】:Android API Level 16 and higher Torch App 【发布时间】:2018-02-25 03:08:01 【问题描述】:

我找到了这个问题,但它对我不起作用。 (什么都没有发生。在 Wiko Rainbow Jam 上测试) android - Camera2 : The easiest way to turn on the torch light

我的应用程序必须在最低时运行。 API 16 级!我可以使用SupportCameraManager 或库(在 Apache 下)吗?

【问题讨论】:

【参考方案1】:

您可以使用this。

初始化 NoobCameraManager 单例。

NoobCameraManager.getInstance().init(this);

您可以选择设置调试日志记录的日志级别。日志记录使用 LumberJack 库。默认的 LogLevel 是 LogLevel.None

NoobCameraManager.getInstance().init(this, LogLevel.Verbose);

之后你只需要调用单例来打开或关闭相机闪光灯。

NoobCameraManager.getInstance().turnOnFlash();
NoobCameraManager.getInstance().turnOffFlash();

您可以自己处理访问相机的运行时权限,也可以让库为您完成此操作

NoobCameraManager.getInstance().takePermissions();

注意:即使您没有明确调用 takePermissions(),库也会获取权限,如果您还没有的话。这种行为将来可能会改变。

切换 Flash 也很容易

NoobCameraManager.getInstance().toggleFlash();

最好在完成后释放所有资源。

NoobCameraManager.getInstance().release();

【讨论】:

是的,我也找到了这个库,但我总是收到此错误消息:(编辑:此评论的错误消息太长 -> pastebin.com/FwqZhxXZ) 如果您请求用户许可并启动库,您不会... 我通过 EasyFlashlight.init(this);在构造函数中并在 Manifest.xml 中请求以下权限: android.permission.CAMERA android.permission.FLASHLIGHT android.hardware.camera android.hardware.camera.autofocus android.hardware.camera.flash if(EasyFlashlight.getInstance().canAccessFlashlight) //现在您可以安全地与 Flashlight API 交互 因为 Android Studio 说:“无法解析符号 'canAccesFlashlight'”我添加了两个括号,所以我的 If 语句看起来像这样: if(EasyFlashlight.getInstance().canAccessFlashlight()) EasyFlashlight .getInstance().turnOn(); //编辑:仍然导致错误【参考方案2】:

解决方案:问题是我只在开灯关灯时得到相机的参数。这显然也必须在构造函数或覆盖 onStart 方法中完成。

@Override
protected void onStart() 
    super.onStart();

    camera = Camera.open(); //Also Call this
    params = camera.getParameters(); //and this, in the Constructor

作为字段:

private Camera camera;
Parameters params;

然后您可以使用以下 sn-ps 代码启动手电筒:Android - Camera2 : The easiest way to turn on the torch light

【讨论】:

以上是关于Android API 级别 16 及更高级别的 Torch 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

将 Android Studio 配置为仅显示特定级别的 API

如何定位多个 API 级别?

我的Android Studio应用仅适用于API 23及更高版本

根据 API 级别隐藏应用小部件

如何将 API 级别添加到 NDK?

无法使用 API 级别 16 注册 Android 令牌