在 zxing 二维码扫描界面添加闪光灯开关

2024-05-04 06:08

本文主要是介绍在 zxing 二维码扫描界面添加闪光灯开关,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在上一篇博客中笔者提到,当初为了能够在仓库中偷懒才引出了那么多的问题,现在仓库管理程序写好了,笔者兴冲冲地到仓库里统计物料,但是又发现了一个新的问题,那就是因为公司实在是太节(kōu)约(mén)了,仓库里面就几盏灯,其他地方都是一片漆黑,这为扫描二维码带来了很大的难度。最好的解决方法莫过于在扫描界面添加闪光灯开关,于是下班后笔者回到寝室对代码进行了修改。

但是在添加好闪光灯开关后,打开闪光灯时程序华丽的崩溃了,这让笔者百思不得其解。我们都知道,在安卓中只能够获取到一个 Camera 对象,通过在网上查找资料,笔者终于得知,原来在 zxing 项目中的 camera 包下的 CameraManager.java 代码中已经获取了 Camera 对象,所以我们只需要在这个类中添加一个静态方法获取这个对象即可,于是我在 CameraManager 添加了这么几句代码:



public static Camera getCamera()
{return camera;
}
接下来要做的事情就是在扫描界面的布局文件中添加按钮标签,如果看了笔者上一篇博客的朋友应该还记得,我们在启动扫描界面的时候是启动的一个名叫 CaptureActivity 的活动,通过下图中红色框框住的代码可知,该活动的布局文件是 capture.xml,我们到项目中的 res->layout 文件夹下打开它。

笔者在最后面添加了一个相对布局,并且将它放在了屏幕最底端,然后通过调整布局的高度将布局中的图片按钮放在了合适的位置。

接下来的步骤大家应该就非常熟悉了,在 CaptureActivity 活动中用 findViewById() 方法获取图片按钮的实例,并且在该按钮的监听器里面实现闪光灯的快关。Mars 老师曾经在安卓教学视频中说过,作为一个程序员,如果能够动手写代码就尽量别 BB,虽然笔者还不是一个合格的程序员,但一直都是以优秀的程序员的标准来要求自己的(这话怎么这么熟悉呢?)。所以,上代码:

public final class CaptureActivity extends Activity implements SurfaceHolder.Callback 
{private ImageButton imageButton_flashlight;private boolean isOpen = false;...	@Overridepublic void onCreate(Bundle icicle) {...imageButton_flashlight = (ImageButton) findViewById(R.id.capture_imageview_flashlight);imageButton_flashlight.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(!isOpen){openLight();}else{closeLight();}}});}private void openLight() //开闪光灯{camera = CameraManager.getCamera(); //我们先前在CameraManager类中添加的静态方法params = camera.getParameters();params.setFlashMode(Parameters.FLASH_MODE_TORCH);camera.setParameters(params);camera.startPreview(); isOpen = true;}private void closeLight() //关闪光灯{params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);camera.setParameters(params); isOpen = false;}

好了,整个过程就是这样的,最后上一下效果图:

开闪光灯

关闭闪光灯:

精简包和项目源代码:

链接:https://pan.baidu.com/s/1qPtcwlbs17pJhguZPp88fg 

密码:kad6


这篇关于在 zxing 二维码扫描界面添加闪光灯开关的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/958484

相关文章

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬

独立按键单击检测(延时消抖+定时器扫描)

目录 独立按键简介 按键抖动 模块接线 延时消抖 Key.h Key.c 定时器扫描按键代码 Key.h Key.c main.c 思考  MultiButton按键驱动 独立按键简介 ​ 轻触按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通与断开。  ​ 按键抖动 由于按键内部使用的是机

centOS7.0设置默认进入字符界面

刚装的,带有x window桌面,每次都是进的桌面,想改成自动进命令行的。记得以前是修改 /etc/inittab 但是这个版本inittab里的内容不一样了没有id:x:initdefault这一行而且我手动加上也不管用,这个centos 7下 /etc/inittab 的内容 Targets systemd uses targets which serve a simil

Appium--界面元素选择

在操作界面元素前,我们需要进行手机与电脑的连接,这里介绍一个adb无线连接的方法: Adb无线连接功能 无线连接步骤(确保手机和电脑处于同一局域网) 1先以USB有线连接方式连接到计算机 2激活手机adb的无线服务: 命令行输入adb tcpip 5555(5555是端口号) 3计算机以无线方式连接到手机: 命令行输入adb connect 配置信息 desired_caps:这些键值对告诉ap

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题 GitHub Pages是一个直接从GitHub存储库托管的静态站点服务,‌它允许用户通过简单的配置,‌将个人的代码项目转化为一个可以在线访问的网站。‌这里使用flutter build web来构建web发布到GitHub Pages。 最近通过flutter build web,通过发布到GitHu

【YOLO 系列】基于YOLOV8的智能花卉分类检测系统【python源码+Pyqt5界面+数据集+训练代码】

前言: 花朵作为自然界中的重要组成部分,不仅在生态学上具有重要意义,也在园艺、农业以及艺术领域中占有一席之地。随着图像识别技术的发展,自动化的花朵分类对于植物研究、生物多样性保护以及园艺爱好者来说变得越发重要。为了提高花朵分类的效率和准确性,我们启动了基于YOLO V8的花朵分类智能识别系统项目。该项目利用深度学习技术,通过分析花朵图像,自动识别并分类不同种类的花朵,为用户提供一个高效的花朵识别

三维激光扫描点云配准外业棋盘的布设与棋盘坐标测量

文章目录 一、棋盘标定板准备二、棋盘标定板布设三、棋盘标定板坐标测量 一、棋盘标定板准备 三维激光扫描棋盘是用来校准和校正激光扫描仪的重要工具,主要用于提高扫描精度。棋盘标定板通常具有以下特点: 高对比度图案:通常是黑白相间的棋盘格,便于识别。已知尺寸:每个格子的尺寸是已知的,可以用于计算比例和调整。平面标定:帮助校准相机和激光扫描仪之间的位置关系。 使用方法 扫描棋盘:

【虚拟机/服务器】非图形化界面下修改Shell中颜色的设置

1、首先 cd ~ && ll 可以看到如下图所示 2、输入 sudo vim .bashrc 进入 .bashrc 并通过 /PS1 迅速从上往下定位第一个PS1 3、输入 i 进入插入模式后修改 else 下面的配置如下 说明:\e[1;32;40m] 其中1表示高亮显示,32表示字体颜色是绿色,40表示背景色为黑色 4、输入 esc 退出编辑模式到命令模式,再输入

【视频教程】手把手AppWizard轻松制作一个emWin滑动主界面控制框架,任意跳转控制(2024-09-06)

现在的新版AppWizard已经比较好用,用户可以轻松的创建各种项目常规界面。 比如早期创建一个支持滑动的主界面框架,并且可以跳转各种子界面,仅仅界面布局和各种图片格式转换都要花不少时间,而现在使用AppWizard,可以说轻轻松松,毫不费力。 用户唯一要做的就是根据自己的芯片性能做一定的速度优化。 视频: https://www.bilibili.com/video/BV17Rp3eLE