Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >只需用CameraX切换闪存

只需用CameraX切换闪存
EN

Stack Overflow用户
提问于 2020-05-13 06:25:08
回答 1查看 3.2K关注 0票数 7

对不起,我的英语说得不好。

我有一个应用程序,通过闪烁闪光灯与arduino设备进行通信。我注意到Camera1和Camera2在所有安卓设备上都有问题,所以我构建了一个设置屏幕,用户可以测试这两种设置,并选择一个工作正常的。

我现在正试图与CameraX建立同样的通信,希望它能在更多的设备中正常工作,但我找不到仅仅切换闪存的例子。我是android开发部的新手,我发现的材料只是关于拍照之类的,但我甚至不想打开相机屏幕,只要打开或关闭闪光灯,就像灯笼一样。

有人能帮上忙吗,或者发送一份帮助你的文档?

edit1

我在onCreate中这样做,我看到日志进入logcat,但闪存不切换。也许我需要造个案子?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
lateinit var cameraControl: CameraControl
val cameraProcessFuture = ProcessCameraProvider.getInstance(this)
cameraProcessFuture.addListener(Runnable {
    val cameraProvider = cameraProcessFuture.get()

    val lifecycleOwner = this

    val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA

    val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector)

    cameraControl = camera.cameraControl


    val listenableFuture = cameraControl!!.enableTorch(true)

    // cameraControl.enableTorch(false)
    Log.d("MurilloTesteCamera", "listener")
    listenableFuture.addListener(Runnable {

        Log.d("MurilloTesteCamera", "listener 2")
    }, ContextCompat.getMainExecutor(this))

}, ContextCompat.getMainExecutor(this))
Log.d("MurilloTesteCamera", "oncreate")

edit2

这段代码我试图创建一个案例,但没有解决我的问题,闪存也没有打开(我的活动实现了CameraXConfig.Provider:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val context = this

Log.d("MurilloTesteCamera", "before initialize")
CameraX.initialize(context, cameraXConfig).addListener(Runnable {

    Log.d("MurilloTesteCamera", "inside initialize")


    CameraX.unbindAll()

    val preview = Preview.Builder()
        .apply {
            setTargetResolution(Size(640, 480))
        }
        .build()


    lateinit var cameraControl: CameraControl

    val cameraProcessFuture = ProcessCameraProvider.getInstance(context)
    cameraProcessFuture.addListener(Runnable {
        val cameraProvider = cameraProcessFuture.get()

        val lifecycleOwner = context

        val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA

        val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector)

        cameraControl = camera.cameraControl

        camera.cameraInfo.hasFlashUnit()

        Log.d("MurilloTesteCamera", "info before -> " + camera.cameraInfo.torchState)
        Log.d("MurilloTesteCamera", "has flash -> " + camera.cameraInfo.hasFlashUnit())



        val listenableFuture = cameraControl.enableTorch(true)

        Log.d("MurilloTesteCamera", "listener")
        listenableFuture.addListener(Runnable {
            Log.d("MurilloTesteCamera", "info after -> " + camera.cameraInfo.torchState)

            Log.d("MurilloTesteCamera", "listener 2")
        }, ContextCompat.getMainExecutor(context))

        CameraX.bindToLifecycle(context, cameraSelector, preview)

    }, ContextCompat.getMainExecutor(context))



}, ContextCompat.getMainExecutor(context))

Log.d("MurilloTesteCamera", "after initialize")
while (!CameraX.isInitialized()){}
Log.d("MurilloTesteCamera", "after while")
EN

回答 1

Stack Overflow用户

发布于 2020-05-13 08:02:31

在CameraX中,打开/关闭相机火炬的API是CameraControl.enableTorch(boolean)。要获得一个CameraControl实例,您可以遵循以下文档:

应用程序可以通过Camera.getCameraControl()检索CameraControl实例。CameraControl已准备好在获取摄像机并将UseCases绑定到该摄像机后立即开始操作。

这意味着您首先需要将一个用例(或多个用例)绑定到一个生命周期。您提到了不想使用open a camera screen,所以我假设您不想绑定任何用例,在这种情况下,您可以使用零用例调用bindToLifecycle()。这可能适用于CameraX的最新版本,也可能不适用。

总之,你必须写这样的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val cameraProcessFuture = ProcessCameraProvider.getInstance(context)
cameraProcessFuture.addListener(Runnable {
    val cameraProvider = cameraProcessFuture.get()

    // Choose the lifecycle to which the camera will be attached to
    val lifecycleOwner = /* Can be an Activity, Fragment, or a custom lifecycleOwner */

    // Choose a valid camera the device has
    val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA

    // You might need to create a use case to start capture requests 
    // with the camera
    val imageAnalysis = ImageAnalysis.Builder()
          .build()
          .apply {
              val executor = /* Define an executor */
              setAnalyzer(executor, ImageAnalysis.Analyzer {
                  it.close()
              })
           }

    // Get a camera instance
    val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector)

    // Get a cameraControl instance
    val cameraControl = camera.cameraControl

    // Call enableTorch(), you can listen to the result to check whether it was successful
    cameraControl.enableTorch(true) // enable torch
    cameraControl.enableTorch(false) // disbale torch
}, ContextCompat.getMainExecutor(context))
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61777177

复制
相关文章
Protobuf在Cmake中的正确使用
Protobuf是google开发的一个序列化和反序列化的协议库,我们可以自己设计传递数据的格式,通过.proto文件定义我们的要传递的数据格式。例如,在深度学习中常用的ONNX交换模型就是使用.proto编写的。我们可以通过多种前端(MNN、NCNN、TVM的前端)去读取这个.onnx这个模型,但是首先你要安装protobuf。
老潘
2023/10/19
1.7K0
Protobuf在Cmake中的正确使用
DateTime在ExtJs中无法正确序列化的问题
这几天在学习ExtJs + Wcf的过程中,发现一个问题,如果Class中有成员的类型为DateTime,即使我们正常标识了[DataMember],序列化成JSON时,会生成一种特有的格式: ..."AddTime":"\/Date(1213718400000+0800)\/"}... 这种格式ExtJs并不识别,导致最终的组件,比如Grid上无法正常显示,解决办法有二个: 1.将Class的成员,手动改成String类型,不过个人不推荐这种方式,毕竟将数据类型都改了,相应的服务端很多地方都可能会做相
菩提树下的杨过
2018/01/22
2.7K0
javascript表单提交的内容显示在表格中
实现三个文本域的内容提交之后显示在表格中,代码直接用文本文件运行,记得后缀改为.html 运行结果
别团等shy哥发育
2023/02/27
7.5K0
javascript表单提交的内容显示在表格中
JSON 在JavaScript 中的使用。
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。
愷龍
2022/10/06
10K0
Unicode中的空格字符一览(翻译)
本文列出了 Unicode 中的各种空格字符。有关说明, 还请参阅 Unicode 标准中的 第6章 书写系统和标点符号 还有Unicode标准中的 一般标点符号的区段描述 。本文还列出了3个宽度为0的字符, 故可称其为零宽度空格。
Kitov
2022/09/28
10.5K0
Unicode中的空格字符一览(翻译)
在PHP中strpos函数的正确使用方式
首先简单介绍下 strpos 函数,strpos 函数是查找某个字符在字符串中的位置,这里需要明确这个函数的作用,这个函数得到的是位置。 如果存在,返回数字,否则返回的是 false。 而很多时候我们拿这个函数用来判断字符串中是否存在某个字符,一些同学使用的姿势是这样的 // 判断‘沈唁志博客’中是否存在‘博客’这个词 if (strpos('沈唁志博客', '博客')) { // 如果存在执行此处代码 echo '存在'; }else{ // 如果不存在执行此处代码 e
沈唁
2018/05/24
5.2K0
在 JavaScript 正确处理变量
变量无处不在。即便我们写一个小函数或一个小工具,也要声明、赋值和读取变量。增强对变量的重视,可以提高代码的可读性和可维护性。
疯狂的技术宅
2020/12/31
6110
Android 9.0使用WebView加载Url时,显示页面无法加载
最近使用WebView加载Url显示页面,因为之前已经使用过很多次这种方式了,打包后在6.0的测试机上测试没什么问题,然后安心的将包给测试,测试大佬的手机系统是Android 9.0的,所以就出现了页面无法加载的情况,还以为是自己代码哪里写错了,检查了很多遍都没发现什么问题,然后在5.0,7.0,8.0的测试机上测试都没问题,那就想到是9.0系统问题了,先看页面报错图:
SoullessCoder
2019/08/07
7.3K0
Android 9.0使用WebView加载Url时,显示页面无法加载
[python3 OpenCV3填坑之旅]解决图像数学运算后无法正确显示的问题
最近用的OpenCV python3 开发场景识别的应用,遇到了在图像进行数学逻辑运算后无法真确显示的问题,问题代码如下:
小宋是呢
2019/06/27
1.3K0
unicode中的‘\xa0’字符在转换成gbk编码时会出现问题,gbk无法转换'\xa0'字符。
unicode中的‘\xa0’字符在转换成gbk编码时会出现问题,gbk无法转换’\xa0’字符。 所以,在转换的时候必需进行一些前置动作:
学到老
2019/02/14
2.2K0
在Google搜索结果中显示你网站的作者信息
前几天在卢松松那里看到关于在Google搜索结果中显示作者信息的介绍,站长也亲自试了一下,目前已经成功。也和大家分享一下吧。
星哥玩云
2022/08/13
2.4K0
在Google搜索结果中显示你网站的作者信息
zblogasp安装时出错,左侧显示无法使用Access数据库
今天突然想起之前的一个网站博客,感觉还不错,但它是zblogasp的,所以想移植到zblogphp版本,但是把网站数据恢复之后登陆后台显示,数据库连接出错,因为asp+access类型,目录位置都对,所以可能是access数据库连接失败。
李洋博客
2021/06/15
4.6K0
js --- 中字符串与unicode编码
2、charCodeAt ():在第一个的基础上,返回的是字符的unicode编码
小蔚
2019/09/11
4.9K0
Unicode 字符串
引号前小写的"u"表示这里创建的是一个 Unicode 字符串。如果你想加入一个特殊字符,可以使用 Python 的 Unicode-Escape 编码。如下例所示:
用户8442333
2021/05/27
1K0
Unicode与JavaScript详解
上个月,我做了一次分享,详细介绍了Unicode字符集,以及JavaScript语言对它的支持。下面就是这次分享的讲稿。 一、Unicode是什么? Unicode源于一个很简单的想法:将全世界所有的
ruanyf
2018/04/12
7440
Unicode与JavaScript详解
Unicode与JavaScript详解
上个月,我做了一次分享,详细介绍了Unicode字符集,以及JavaScript语言对它的支持。下面就是这次分享的讲稿。 ![](/blogimg/asset/2014/bg2014121102.jpg) ## 一、Unicode是什么? Unicode源于一个很简单的想法:将全世界所有的字符包含在一个集合里,计算机只要支持这一个字符集,就能显示所有的字符,再也不会有乱码了。 ![](/blogimg/asset/2014/bg2014121103.jpg) **它从0开始,为每个符号指定一个编号,这叫做"
ruanyf
2018/04/12
7560
可以直接用于HTML中的特殊字符表 unicode字符集
目录 箭头类 基本形状类 货币类 数学类 音乐符号类 对错号 全都是星星 星座类 国际象棋类 扑克牌类 希腊字母 十字 法律符号 标点和符号 ⇠ 箭头类 符号UNICODE符号UNICODEHTMLJSCSSHTMLJSCSS⇠&#8672u21E021E0⇢&#8674u21E221E2⇡&#8673u21E121E1⇣&#8675u21E321E3↞&#8606u219E219E↠&#8608u21A021A0↟&#8607u219F219F↡&
拿我格子衫来
2022/01/24
2.7K0
Unicode不可见字符
不可见字符”\u200b”为 Unicode Character ‘ZERO WIDTH SPACE’ (U+200B),可用于内容标识,不占位数。
周小董
2019/03/25
5.6K0
Unicode不可见字符
xShell连接Ubuntu时不显示[root@localhost]等字符,只显示“$”字符解决方法
当xShell连接Ubuntu虚拟机后不出现root@localhost等用户名,只显示"$"符号,回退键会变为"^H",tab键直接空格时,请看下面解决办法
用户8704998
2021/06/07
1.7K0
点击加载更多

相似问题

无法正确显示unicode字符- Javascript和HTML

36

打开条目时无法正确显示Unicode字符

10

无法正确显示特殊字符/ unicode

22

Appfuse无法正确显示unicode字符

10

使用JavaScript时Unicode显示不正确

337
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文