首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在android zxing中扫描嵌入权重的条形码

在Android中使用ZXing库进行扫描嵌入权重的条形码可以按以下步骤进行:

  1. 首先,确保你的Android项目中已经集成了ZXing库。你可以通过将以下代码添加到项目的build.gradle文件中来添加ZXing依赖项:
代码语言:txt
复制
implementation 'com.google.zxing:core:3.4.0'
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
  1. 创建一个用于扫描的Activity或Fragment,并在布局文件中添加一个用于扫描的视图。
  2. 在你的扫描Activity或Fragment的代码中,使用ZXing库提供的CaptureManager类来管理扫描过程。你可以在onCreate方法中初始化CaptureManager,并在onResume方法中启动扫描:
代码语言:txt
复制
private CaptureManager captureManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // 初始化CaptureManager
    captureManager = new CaptureManager(this, barcodeScannerView);

    // 设置自定义的条形码解码器,以处理嵌入权重的条形码
    captureManager.getBarcodeView().setDecoderFactory(new WeightedDecoderFactory());

    // 启动扫描
    captureManager.initializeFromIntent(getIntent(), savedInstanceState);
    captureManager.decode();
}

@Override
protected void onResume() {
    super.onResume();
    captureManager.onResume();
}

@Override
protected void onPause() {
    super.onPause();
    captureManager.onPause();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    captureManager.onDestroy();
}
  1. 创建一个自定义的条形码解码器,用于处理嵌入权重的条形码。你可以继承DefaultDecoderFactory类并实现自定义的解码器。在解码器中,你可以使用ZXing提供的WeightedQRCodeReader类来处理嵌入权重的条形码:
代码语言:txt
复制
import com.google.zxing.BarcodeFormat;
import com.google.zxing.DecodeHintType;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.ReaderException;
import com.google.zxing.Result;
import com.google.zxing.client.android.DecodeFormatManager;
import com.google.zxing.client.android.DecodeHintManager;
import com.google.zxing.client.android.camera.PlanarYUVLuminanceSource;
import com.google.zxing.client.android.camera.open.CameraFacing;
import com.google.zxing.client.android.camera.open.OpenCamera;
import com.google.zxing.client.android.result.ResultHandler;
import com.journeyapps.barcodescanner.BarcodeCallback;
import com.journeyapps.barcodescanner.BarcodeResult;
import com.journeyapps.barcodescanner.DecodeForcer;
import com.journeyapps.barcodescanner.Decoder;
import com.journeyapps.barcodescanner.DecoderFactory;
import com.journeyapps.barcodescanner.DecodingOptions;
import com.journeyapps.barcodescanner.SourceData;
import com.journeyapps.barcodescanner.camera.CameraManager;
import com.journeyapps.barcodescanner.camera.PlanarYUVLuminanceSource;
import com.journeyapps.barcodescanner.camera.Size;

import java.util.ArrayList;
import java.util.Collection;
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class WeightedDecoderFactory extends DefaultDecoderFactory {

    public WeightedDecoderFactory() {
        super();
    }

    @Override
    protected Decoder createDecoder(Map<DecodeHintType, ?> baseHints) {
        MultiFormatReader reader = new MultiFormatReader();
        List<BarcodeFormat> formats = new ArrayList<>();
        formats.addAll(DecodeFormatManager.ONE_D_FORMATS);
        formats.addAll(DecodeFormatManager.QR_CODE_FORMATS);
        formats.addAll(DecodeFormatManager.DATA_MATRIX_FORMATS);
        reader.setHints(getHints(formats, baseHints));
        return new WeightedDecoder(reader);
    }

    private Map<DecodeHintType, ?> getHints(Collection<BarcodeFormat> formats, Map<DecodeHintType, ?> baseHints) {
        Map<DecodeHintType, Object> hints = new EnumMap<>(DecodeHintType.class);
        hints.putAll(baseHints);
        hints.put(DecodeHintType.POSSIBLE_FORMATS, formats);
        return hints;
    }

    private static class WeightedDecoder extends Decoder {
        private MultiFormatReader reader;

        public WeightedDecoder(MultiFormatReader reader) {
            super(reader);
            this.reader = reader;
        }

        @Override
        public Result decode(SourceData source) {
            Result weightedResult = null;
            Result normalResult = null;
            try {
                PlanarYUVLuminanceSource luminanceSource = cameraManager.buildLuminanceSource(source);
                BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(luminanceSource));

                WeightedQRCodeReader weightedReader = new WeightedQRCodeReader(reader);

                try {
                    weightedResult = weightedReader.decode(bitmap, hintManager.buildDecodeHints());
                } catch (NotFoundException e) {
                    // Continue decoding using normal QRCodeReader
                    normalResult = reader.decodeWithState(bitmap);
                } finally {
                    reader.reset();
                }
            } catch (Throwable t) {
                Log.e(TAG, "Unexpected error during decoding", t);
            }

            if (weightedResult != null) {
                return weightedResult;
            } else {
                return normalResult;
            }
        }
    }

    private static class WeightedQRCodeReader extends QRCodeReader {
        private final double weightThreshold = 0.8; // 嵌入权重的阈值

        public WeightedQRCodeReader(Reader delegate) {
            super(delegate);
        }

        @Override
        public Result decode(BinaryBitmap image, Map<DecodeHintType, ?> hints) throws NotFoundException, ChecksumException, FormatException {
            Result result = super.decode(image, hints);
            if (result != null && result instanceof WeightedResult) {
                WeightedResult weightedResult = (WeightedResult) result;
                if (weightedResult.getWeight() >= weightThreshold) {
                    return result;
                }
            }
            throw NotFoundException.getNotFoundInstance();
        }
    }
}
  1. 在上面的代码中,weightThreshold表示嵌入权重的阈值,你可以根据需要进行调整。如果嵌入权重的条形码的权重大于等于阈值,才会被认为是有效的条形码。

这样,你就可以在Android中使用ZXing库扫描嵌入权重的条形码了。记得根据实际需求,适当调整代码并添加错误处理逻辑。

腾讯云相关产品和产品介绍链接地址:

请注意,以上提到的产品和链接仅供参考,具体选择适合自己项目需求的产品需要进行进一步的研究和评估。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android实现条形码与二维码扫描

有个二维码是目前移动端和webAPP 常用是一种和用户交互方式,常用在社交,支付,电商app,本文介绍实现条形码与二维码扫描。 ?...在本次教程,我们将使用ZXing库让我们app实现条形码和二维码扫描。...为什么选择ZXing 要实现条形码和二维码扫描功能,常用有下面几种方法: 使用Google Play Service和Mobile Vision APIs。 使用barcodescanner库。...访问 qr-code-generator.com生成你想要二维码,然后进行愉快测试吧。我们可以期待获得下面的结果: ? 结论 在这篇教程,我们使用ZXing库实现了条形码和二维码扫描。...在你自己app,你可能需要对扫描结果进行进一步处理,例如加载URL或者是从第三方数据源获取数据等等。 你可以在访问Espresso项目主页下载全部源代码。

4.7K10

Android利用zxing实现自己二维码扫描识别详解

前言 在上一篇文章已经简单介绍了zxing使用,快速集成到自己项目中,但是使用扫描我们没办法根据自己需求来做自己扫描界面,所以这篇我们来学习一下如何根据自己需求来实现二维码扫描。...将这个文件下载我们本地,下载好之后我们需要复制android文件下几个类, ?...根据这些类名称在android文件下找到这些类,拷贝到们项目中,拷贝之后会有报错,我们需要将android文件下res文件也拷贝到我们项目中。...完成之后我们还要依赖zxing核心类库, ? 当我们项目不报错时候,就可以先实现扫描二维码和生成二维码。 扫描逻辑代码是: ? 我们直接打开这个activity就可以了。 ?...可以看出扫描逻辑都在CaptureActivity,google已经帮我们实现了这个,我们直接调用就可以了。

2.5K51
  • 使用Zxing实现二维码扫描

    地址 CSDN 地址:http://blog.csdn.net/xiangyong_1521/article/details/50740697 这是16年时候,用ZXING包简单地实现了扫描扫描结果反馈一个...DEMO,出于对二维码扫描兴趣而做,只是一直未运用到实际工作,就当是玩泥巴了!...目录 扫描二维码逻辑 Zxing介绍 实现 主要代码 一....使用若干个与二进制相对应几何形体来表示文字数值信息,通过图像输入设备或光电扫描设备自动识读以实现信息自动处理; 二维码能够在横向和纵向两个方位同时表达信息,因此能在很小面积内表达大量信息; 二维码相对于条形码优势就是省空间...Zxing可以实现使用手机内置摄像头完成条形码和二维码扫描与解码。 目标是能够对QR编码、Data Matrix、UPC1D条形码进行解码。

    2.4K60

    最新版基于ZXingAndroid扫码库

    ZXingLite ZXingLite for AndroidZXing精简极速版,基于ZXing库优化扫码和生成二维码/条形码功能,扫码界面完全支持自定义,也可一行代码使用默认实现扫码功能。...关于 CameraConfig 主要是相机相关配置;:摄像头前置后置、相机预览相关、图像分析相关等配置。...扫描预览界面内部持有 CameraScan,并处理了 CameraScan 初始化(:相机权限、相机预览、生命周期等细节) 使用示例 CameraScan配置示例 CameraScan 里面包含部分支持链式调用方法...如果是通过继承 CaptureActivity 或者 CaptureFragment 或其子类实现相机扫描,可以在 initCameraScan() 方法获取 CameraScan ,然后根据需要修改相关配置.../> 或在你布局添加 代码示例 工具类CodeUtils使用示例(二维码/条形码

    5.4K30

    二维码扫描开源库ZXing定制化

    但是所有修改地方我都加上了“@ch”注释,以方便定位 官方源码: https://github.com/zxing/zxing 实现功能: 1、功能裁剪(只保留QRCode二维码扫描功能,去掉条形码等其他码扫描功能...2、代码优化 1、功能裁剪(只保留QRCode二维码扫描功能,去掉条形码等其他码扫描功能) 我目标是只保留二维码识别,不需要其他多余功能。这一部分步骤我不打算详细说明,因为我已经不记得了。。...com.google.zxing.pdf417.**  PDF417格式条形码 需要修改是: com.google.zxing.client.android.CaptureActivity:去掉其他功能相关代码...com.google.zxing.client.android.DecodeThread:构造器,同上。...(ZXingandroid外围模块代码默认使用是全屏,如果你想改为非全屏(比如加一个action bar),肯定会造成扫描框区域和实际解码区域不一致问题。

    3.6K20

    何在线生成二维码?

    二、代码实践 在 Java 生态体系里面,操作二维码开源项目很多, SwetakeQRCode、BarCode4j、Zxing 等等。...今天我们介绍下简单易用 google 公司 zxingzxing 不仅使用方便,而且可以还操作条形码或者二维码等,不仅有 java 版本,还有 Android 版。...> hints) * contents:条形码/二维码内容 * format:编码类型, 条形码,二维码 等...:枚举该程序包已知条形码格式,即创建何种码, 1 维条形码,2 维二维码 等 * BitMatrix:位(比特)矩阵或叫2D矩阵,也就是需要二维码...,即创建何种码, 1 维条形码,2 维二维码 等 * BitMatrix:位(比特)矩阵或叫2D矩阵,也就是需要二维码 */ MultiFormatWriter

    1.3K20

    Android开发常用框架汇总

    retrofit 又是square出品精品,该http请求库与dagger、rxjava为越来越多人使用三剑客 https://github.com/square/retrofit 图片加载 Android-Universal-Image-Loader...google跨平台音乐播放器,支持手机、平板、手表和TV,是学习多平台最好实例 https://github.com/googlesamples/android-UniversalMusicPlayer...PhotoView 图片手势操作放大缩小库 https://github.com/chrisbanes/PhotoView 设备相关 zxing Java实现条形码、二维码扫描开源库 https:/.../github.com/zxing/zxing zbar C实现条形码、二维码扫描库 https://github.com/ZBar/ZBar barcodescanner 封装了zxing和zbar.../android10/Android-CleanArchitecture android-architecture google推荐学习mvp架构模版 https://github.com/googlesamples

    1.6K31

    Android生成条形码和二维码功能

    背景: 随着移动互联网普及以及智能终端设备广泛应用,移动支付变得越来越便捷,通过扫描二维码代替传统刷卡行为。那么作为开发者而言生成二维码成为了一项必备技能。...; import android.graphics.Bitmap; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType...; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix...* usage: */ public class CodeUtils { /** * 生成条形码(不支持中文) * * @param content * @return...总结 以上所述是小编给大家介绍Android生成条形码和二维码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家。在此也非常感谢大家对ZaLou.Cn网站支持!

    1.5K20

    Android 二维码 生成和识别(附Demo源码)

    ZXing是一个开放源码,用Java实现多种格式1D/2D条码图像处理库,它包含了联系到其他语言端口。Zxing可以实现使用手机内置摄像头完成条形码扫描及解码。...该项目可实现条形码编码和解码。目前支持以下格式:UPC-A,UPC-E、EAN-8,EAN-13、39码、93码。...2、ZXing库主要类   下面给大家介绍一下,ZXing库里面主要类以及这些类作用: CaptureActivity。这个是启动Activity 也就是扫描器。...com.google.zxing.client.android.camera 包,摄像头控制包。 ViewfinderView 自定义View,就是我们看见拍摄时中间框框了。...4、扫描二维码获取信息   扫描获取二维码信息工作稍微复杂一些,主要是需要编写Camera使用,这个跟我们一般使用Camera一样,需要使用Surfaceview作为预览,这一部我这里就不说了,这个应该不是太复杂

    6.1K41

    Android开发笔记(一百八十三)利用HMS轻松扫描二维码

    开源Android系统实际上只提供基本系统服务,不提供常见扩展服务诸如地图、邮箱、搜索、推送、机器学习、应用内支付等,这些扩展服务被谷歌公司打包成GMS套件(全称Google Mobile Service...扫描二维码是HMS一项基础服务,虽然谷歌公司也提供了zxing扫码框架,但是zxing框架集成步骤不够简洁,而且它识别速度偏慢,识别准确率也不高,远不如HMS扫码服务来得好用。...下面介绍如何在App工程中集成HMS扫码服务。...-- 相机 --> 然后在Java代码增加用于扫码远程视图,并指定扫码结果回调事件...,看看到底能扫出什么东西,条形码例子如下图所示,这是某个商品条形码

    1.2K20

    Android开发实现模仿360二维码扫描功能实例详解

    本文实例讲述了Android开发实现模仿360二维码扫描功能方法。分享给大家供大家参考,具体如下: 一、效果图: ? ? 二、框架搭建 1、首先,下载最新zxing开源项目。...下载地址:http://code.google.com/p/zxing/ 2、分析项目结构,明确扫描框架需求。...在zxing,有很多其他功能,项目结构比较复杂;针对二维码QRCode扫描,我们需要几个包: (1)com.google.zxing.client.android.Camera 基于Camera调用以及参数配置...三、具体实现 1、创建MainActivity用于跳转到扫描页面 /** * 二维码扫描 * @Project App_ZXing * @Package com.android.scan...="true" layout="@layout/activity_scan_title" / </RelativeLayout 2、扫描页面 /** * 条形码扫描 * * @Project

    86810

    【教程】autojs使用zxing扫描条形码和二维码实现烟草价格扫码查询

    ​ 转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 这原本是这位大佬发(autojs调用zxing实现扫码功能_autojs扫码插件),略微修改了一下,方便自己代码直接调用...这里可以下载没有改动源码:Autojs调用zxing实现条形码与二维码 下面是略微修改源码:"ui";var utils = {};// runtime.loadDex("core.dex...scanBinder) { toast("初始化") return; } var data = android.os.Parcel.obtain(); var result = android.os.Parcel.obtain.../barcode.js");barcode.show(function (result) { if(result) { console.log("识别到条形码: "+result)...ui.barcodeInput.setText(result); // showFloatWindow(searchDatabase(result)); }else { console.log("没有识别到条形码

    47300

    java——记录一次条形码、二维码、订单自动生成制作

    条形码生成 解决方案 使用jbarcode-0.2.8.jar工具类,在代码对JBarcode执行类属性进行初始化 然后设置其中参数,使用文件流生成图片文件 /** * 参考设置样式...画笔对生成图片进行绘画条形码和相关字符串 生成相应条形码图片 生成结果如下 使用相应设备扫描后可以得到条形码信息,一般是相关编号 工具包下载 链接:https://pan.baidu.com...* 2.常量条形码高度和字体大小设置很重要,若是设置小了会看不到设置文件 */ public class JbarcodeUtil { //设置条形码高度 private static...解决方案 使用二维码和使用一维码一样,导入zxing-javase.jar工具类,使用文件流,GUI画笔绘画二维码图片,最后导出 生成结果如下 使用相应设备扫描后可以得到二维码信息,二维码中一般是一个字符串链接...,扫描以后会自动跳转 工具包下载 链接:https://pan.baidu.com/s/1jbehP0BXaHImqwAdMlwJ_w 提取码:wd6d 代码如下 导入zxing-javase.jar

    1.2K20

    基于zxing二维码扫描

    前言 现在应用中二维码扫描已经成为一个应用必不可少功能,现在大部分Android二维码扫描都是基于zxing和Zbar,这文章就来介绍一下基于zxing二维码扫描。先看下效果图 ?...Android Studio的话也可以在线搜索zxing jar,导入完成后别忘了ADD library。...是zxing扫描主界面,另外两个布局就是我们在开始图片中看到,一个头部,一个脚部布局 colors,dis,strings,styles,raw,xml 这些是zxing中一些类资源文件和我们自定义布局一些资源文件...有成功失败和其他一些情况处理,这里我们主要看成功时会返回resultCode=RESULT_OK,扫描结果放在inentkey=SCAN_RESULT,这样我们就可以根据intent携带key和...= null && TextUtils.isEmpty(code)) { //条形码数字 //这里注意:如果你扫描是商品条形码

    4.1K20

    Android终于要推出Google官方二维码扫描库了?

    这里我要问大家一个问题,你们都是如何在自己App中加入二维码扫描功能呢? 相信会有一大部分朋友说,使用ZXing或者ZBar这种开源库。...就在不久之前,我收到了一封Google发来邮件,内容如下: 当我看到邮件里提到了Google官方要推出一个二维码、条形码扫描库时,我立刻被吸引到了,并且跟Google表达了我想尝鲜意愿。...比起ZXing和ZBar学本成本要低很多。 其次,更加保护用户隐私性。...mkdir -p ~/.m2/repository cd ~/.m2/repository unzip 接下来在Android Studio创建一个新项目...完整版本集成文档我也讨来了,链接如下: https://developers.google.com/ml-kit/vision/barcode-scanning/android 上述文档还包含了如何从一张图片

    1.7K31

    Android 收集开源库记录

    其实在Android KITKAT上有一个新特性可以设置手机状态栏背景,让手机整个界面的风格保持一致,看起来非常清爽统一。...但是还是感觉乱,于是又走上了【百度云】 简单说一下使用(Android API>=19):很简单【Only two steps】 首先要在布局文件中加入下面两个属性: android:clipToPadding...逻辑处理可以使用SharedPreferences,它是Android中最容易理解数据存储技术,实际上SharedPreferences处理就是一个键值对。 ...---- 扫描条形码】和【二维码】----- ZXing 但是我觉得整一个库作为一个项目的扫描库那就没有这个必要,ZXing这一个库是非常庞大。...所以,我就简化并修改了它,减轻并成为轻量级扫描库【百度云盘】 ?

    57960

    ios zxing扫码问题

    在ios 扫瞄二维码,条形码基本有 2第三方库,一个是zbar 一个是zxingzxingandroid中表现比较出色,但是在ios 不是很好用,扫瞄效率低,我们一般都用zbar,但是有些...条形码就是很奇葩,用zbar无法识别,下面就是一种 ?  ...我用了好多ios app 都无法识别, 《我查查》,《快拍二维码》,《微信》,自己用zbar都不行,最后用android 手机轻松扫瞄ok,哪我知道为什么了,是zxing可以搞定这种条形码。...马上就换了zxing 来测试。 去github 找到了 zxing demo。但是悲剧时无法识别各种条形码。 而且工程还报错。  ...方法是:  1.修改 OverlayView.m文件61行左右 注释掉下面代码 // self.oneDMode = isOneDModeEnabled; 2.在ZXingWidgetController.m

    2.1K60

    备忘录:关于C#生成商品条码

    背景说明 在.net程序中生成69码条形码很容易 生成条形码使用手机扫码和扫码枪都是可以准确扫描 但是,这次我需要生成69码条形码 可是我发现,我生成69码对应条形码和超市商品打印不一样..., 一般商品上69码条形码两边和中间线条都会长出一段 之前程序生成条形码都是仓库和内部使用不需要在意这些细节, 而这次打印吊牌需要直接展示给用户,所以需要注意一些细节 一般搜索.net...创建条形码都是使用Zxing,但是达不到我所期望 最终发现使用字体实现效果极好,而且使用字体在报表展示时无需要使用图片,直接使用文字即可 测试了三种方法,将三种方法记录于此 1....使用ZXing.NET PM>Install-Package ZXing.Net -Version 0.16.8 using ZXing; using ZXing.Common; /// /// 使用ZXing创建条形码 /// /// 条码 /// 高度</param

    1.1K20
    领券