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