CameraX 库打开手电筒

好久没有写文章了,罪过,这几个月一直很忙,都没有时间进步了。。。

最近新开发一个项目,正好拿google的jetpack组件练练手,于是就集成了CameraX。里面很多坑啊,都在度娘的帮助下解决了。

不过还有一个问题,google和度娘都帮不了我了,在此记录一下:CameraX 库怎么打开手电筒?

其实有两种方法

  • 这种方式很简单: 官方demo里面获取到了camera对象,注意是androidx.camera.core.Camera包下面的,可以利用这个对象来控制手电筒:
// 打开手电筒
camera?.cameraControl?.enableTorch(true)
// 关闭手电筒
camera?.cameraControl?.enableTorch(false)
  • 还有一种就是直接使用camera2的方式
val cameraInfo = camera?.cameraInfo
if(cameraInfo is CameraInfoInternal) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {val id = cameraInfo.cameraIdval c = mContext.getSystemService(Context.CAMERA_SERVICE) as CameraManagertry {// 打开手电筒c.setTorchMode(id, true)// 关闭手电筒c.setTorchMode(id, true)} catch (e:java.lang.Exception) {ToastUtil.show(mContext, "手电筒打开失败$e")}}
}

其实第一种方式是发送了一个livedata消息,最终实现还是使用了第二种方式

当然拍照时按下快门的时候控制是否开启闪光灯,也是有方法的:

// 按下快门时:根据光线强弱自动打开闪光灯
imageCapture?.flashMode = ImageCapture.FLASH_MODE_AUTO
// 按下快门时:强制打开闪光灯
imageCapture?.flashMode = ImageCapture.FLASH_MODE_ON
//按下快门时:强制关闭闪光灯
imageCapture?.flashMode = ImageCapture.FLASH_MODE_OFF

CameraX 库打开手电筒的两种方式相关推荐

  1. linux的进程与库之间的通信两种方式

    文章目录 前言 一.进程A与算法库b的通信方式之一:动态dlopen加载算法库b,编译的时候是需要加载该头文件就可以,无需连接该算法库b 具体的实施细节: 二.进程A与算法库b的通信方式之二:进程A编 ...

  2. android 打开网页的两种方式.

    有时候我们要在自己的应用中打开一个网页. 这是本人用到 的两种方式. 1.  网页放置于自己的ACTIVITY              1.1 在资源文件中申明WIDGET <WebView ...

  3. Android打开蓝牙的两种方式

    隐式打开方式 关键API使用如下: if ( !bluetoothAdapter.isEnabled()) {boolean res = bluetoothAdapter.enable();} 完整判 ...

  4. 利用requests库获取cookie的两种方式

    第一种: from fake_useragent import UserAgent import requestsdef get_Cookies0():ua = UserAgent().ie #随机获 ...

  5. android webview打开pdf 的两种方式

    方法1:利用设备自带浏览器打开pdf private void loadPDF1(){ mWebView.getSettings().setJavaScriptEnabled(true); mWebV ...

  6. python用浏览器打开网页的两种方式

    import os import webbrowser os.system('"C:/Program Files/Internet Explorer/iexplore.exe" h ...

  7. 【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入和动态注入 | 静态注入两种方式 | 修改动态库重打包 | 修改 /data/app/xx/libs 动态库 )

    文章目录 一.注入本质 二.静态注入和动态注入 三.静态注入两种方式 ( 修改动态库重打包 | 修改 /data/app/packageName/libs/ 下的动态库 ) 一.注入本质 进程注入本质 ...

  8. 主程序调用动态库的两种方式,动态库调用主程序的函数

    主程序调用动态库有两种方式,即隐式调用和显式调用. 隐式调用就是共享方式,程序一开始运行就调进去.在链接时候用如下的方式链接动态库:gcc -o main main.o -L./lib -ltest( ...

  9. mysql不停止重启服务器_不停止MySQL服务增加从库的两种方式

    现在生产环境MySQL数据库是一主一从,由于业务量访问不断增大,故再增加一台从库.前提是不能影响线上业务使用,也就是说不能重启MySQL服务,为了避免出现其他情况,选择在网站访问量低峰期时间段操作. ...

最新文章

  1. idea提交新项目到远程git创库
  2. SQL 语句递归查询 With AS 查找所有子节点
  3. Java BigDecimal初探
  4. CORS(跨域资源共享)
  5. MySQL - cast()函数
  6. android商品mysql_android使用mysql的方法总结
  7. vscode中控制台不能输入_vscode调试时如何在控制台输入
  8. linux添加用户、权限
  9. 祝心想事成无Bug,1024快乐!
  10. [Ubuntu] 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
  11. LINUX下载编译tiff
  12. Druid 在有赞的使用场景及应用实践
  13. 【Java基础教程】Java的输入输出
  14. 《Android框架揭秘》读书笔记--在Java中调用C库函数
  15. android usb 摄像头 驱动开发,自制USB摄像头硬件的驱动编写_修改UVC
  16. 【股票】股票是什么?什么情况下股票会涨?
  17. 2019年幼儿教师如何报名考取?教育部中央电教馆幼师证报名考取详情
  18. Android Java 虚拟机
  19. 面试官问你如何进行程序设计?——设计模式之七大原则——接口隔离、合成复用、迪米特法则以及C++设计实现
  20. 网页复制内容修改(解决复制文本多空格问题,带标注信息(如版权信息))

热门文章

  1. 第二章 第四节:替换和切割
  2. 身份证、银行卡、车牌、图片文字识别、黄图识别、驾驶证识别库实现功能
  3. 奥斯汀页眉怎么设置_怎样将页面顶端插入“奥斯丁”样式的页眉
  4. 债权人死亡后债权人家属追债是否需要还
  5. 装饰器/使用类和对象封装一个工具类
  6. Android 获取已安装音乐播放器列表
  7. 计算机操作系统重点知识点记录【持续更新】
  8. 主机启动键盘鼠标显示器都不亮
  9. 奥普泰卡口车辆追踪系统
  10. 问卷 | 国家认同与社会心态调查诚邀您参与!