如何像微信一样扫码自由?

news/2025/2/22 5:21:08/

https://github.com/devilsen/CZXing

我在使用zxing的总是想扫码的时候怎么才能够快速校准,多个二维码扫描的时候怎么才能指定二维码呢。于是我在Github上找到了CZxing这个控件。在使用的时候发现了有些小问题。

扫码结果没有回调。
回调没有反应;是因为 ScanLayout 没有实现 ScanListener.onScanSuccess 这个方法。

   Scanner.with(this).setMaskColor(resources.getColor(R.color.mask_color)).setBorderColor(resources.getColor(R.color.box_line)).setBorderSize(BarCodeUtil.dp2px(this, 200))
//                .setBorderSize(BarCodeUtil.dp2px(this, 200), BarCodeUtil.dp2px(this, 100)).setCornerColor(resources.getColor(R.color.corner)).setScanLineColors(scanColors)
//                .setHorizontalScanLine()
//                .setBarcodeFormat(BarcodeFormat.EAN_13).setTitle("").showAlbum(true).enableOpenCVDetect(true).setScanNoticeText("扫描二维码").setFlashLightOnText("打开闪光灯").setFlashLightOffText("关闭闪光灯")
//                .setFlashLightInvisible().setFlashLightOnDrawable(R.drawable.ic_highlight_blue_open_24dp).setFlashLightOffDrawable(R.drawable.ic_highlight_white_close_24dp).continuousScan().detectorModel(detectorPrototxtPath, detectorCaffeModelPath).superResolutionModel(superResolutionPrototxtPath, superResolutionCaffeModelPath)
//                .enableOpenCVDetect(true).setOnClickAlbumDelegate(new ScanActivityDelegate.OnClickAlbumDelegate() {@Overridepublic void onClickAlbum(Activity activity) {Intent albumIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);activity.startActivityForResult(albumIntent, CODE_SELECT_IMAGE);}@Overridepublic void onSelectData(int requestCode, Intent data) {if (requestCode == CODE_SELECT_IMAGE) {decodeImage(data);}}}).setOnScanResultDelegate(new ScanActivityDelegate.OnScanDelegate() {@Overridepublic void onScanResult(@NonNull final Activity activity, @NonNull final String result, @NonNull BarcodeFormat format) {final String showContent = "format: " + format.name() + "  code: " + result;runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(MainActivity.this, showContent, Toast.LENGTH_SHORT).show();finish();}});}}).start();

ScanLayout.java

    @Overridepublic void onReadCodeResult(List<CodeResult> resultList) {for (CodeResult result : resultList) {BarCodeUtil.d("result : " + result.toString());}//大于2个二维码,则表两个记号if (resultList.size() > 1) {showResultPoint(resultList);} else {//result<=1的时候则返回结果if (mScanListener != null) {mScanListener.onScanSuccess(resultList);}}}//标记扫描点private void addPointView(final CodeResult result, int resultSize) {int[] points = result.getPoints();if (points == null || points.length < 4) return;int x = points[0];int y = points[1];int width = points[2];int height = points[3];final PointView view = new PointView(getContext());if (resultSize > 1) {view.drawArrow();view.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (mScanListener != null) {mScanListener.onClickResult(result);}}});}mResultViews.add(view);if (mResultColor > 0) {view.setColor(mResultColor);}int xOffset = (width - mPointSize) / 2;int yOffset = (height - mPointSize) / 2;xOffset = Math.max(xOffset, 0);yOffset = Math.max(yOffset, 0);final LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);params.leftMargin = x + xOffset;params.topMargin = y + yOffset;mHandler.post(new Runnable() {@Overridepublic void run() {addView(view, params);}});//关闭相机扫描closeCamera();//隐藏扫描线if (mScanBox != null) {runOnUiThread(new Runnable() {@Overridepublic void run() {mScanBox.setVisibility(View.GONE);}});}}
这样写会报错的mScanBox.setVisibility(View.GONE);

在这里插入图片描述


http://www.ppmy.cn/news/1116961.html

相关文章

Python基础语法规则和Java不同的地方

Java是现在最流行的语言&#xff0c;也是广大程序员最熟悉的语言。然而&#xff0c;随着人工智能领域的快速发展&#xff0c;Python作为新星崭露头角。通过对比Java语言来学习Python语言&#xff0c;可以事半功倍。 首先&#xff0c;我们来看Python和Java在注释上的区别。在Jav…

Fullcalendar(简单的日程管理)

官网&#xff1a;FullCalendar - JavaScript Event Calendar 小Tip:有几个是付费项目 初始化&#xff1a; document.addEventListener(DOMContentLoaded, function() {var calendarEl document.getElementById(calendar);var calendar new FullCalendar.Calendar(calendarE…

常用的正则表达式30个,整数、浮点数、中文、英文字母、手机号、邮箱、日期、IP等等( JavaScript、Java)

前言 正则表达式&#xff08;Regular Expression&#xff09;是一种强大的文本模式匹配工具&#xff0c;它使用特定的语法规则来对字符串进行模式匹配和文本搜索。下面&#xff0c;LZ整理了一些常见的正则表达式模式&#xff0c;帮助你更好地处理数据验证。话不多说&#xff0…

MATLAB APP纯小白入门 两数相加

万事开头难&#xff0c;最怕第一次。使用matlab APP 实现两数求和&#xff0c;如下图所示&#xff0c;c a b&#xff0c;输入数字后&#xff0c;按 “” 就计算。 步骤 拖拽三个 Edit Field(Numeric) 过来&#xff0c;并且双击名字分别改为 a,b,c。注意修改名字后右边会有点变…

SOCKS5 认证的方法

在进行网络浏览或爬虫等相关工作时&#xff0c;我们经常会遇到需要使用 SOCKS5 代理认证的情况。然而&#xff0c;某些浏览器可能不提供原生支持 SOCKS5 代理认证的选项&#xff0c;给我们带来了一些困扰。本文将为大家介绍几种解决浏览器不支持 SOCKS5 代理认证问题的方法。 …

基于微信小程序的在线小说阅读系统,附数据库、教程

1 功能简介 Java基于微信小程序的在线小说阅读系统 微信小程序的在线小说阅读系统&#xff0c;系统的整体功能需求分为两部分&#xff0c;第一部分主要是后台的功能&#xff0c;后台功能主要有小说信息管理、注册用户管理、系统系统等功能。微信小程序主要分为首页、分类和我的…

爬虫项目(四):抓取网页所有图片

文章目录 一、书籍推荐二、完整代码三、运行结果 一、书籍推荐 推荐本人书籍《Python网络爬虫入门到实战》 &#xff0c;详细介绍见&#x1f449;&#xff1a; 《Python网络爬虫入门到实战》 书籍介绍 二、完整代码 原理&#xff1a;抓取该链接中所有的图片格式。基于seleni…

济南ITSS认证流程,认证条件

ITSS认证流程,认证条件 一、ITSS的意义 ITSS认证——信息技术服务标准&#xff0c;是在工业和信息化部、国家标准化委的领导和支持下&#xff0c;由ITSS工作组研制 的一套IT服务领域的标准库和一套提供IT服务的方法论。 ITSS认证-信息技术服务标准是一套成体系和综合配套的信息…