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

如何在android中扫描不同的二维码并列出它们

在Android中扫描不同的二维码并列出它们,可以通过以下步骤实现:

  1. 添加权限:在AndroidManifest.xml文件中添加相机权限,以便应用程序可以访问设备的相机功能。
代码语言:txt
复制
<uses-permission android:name="android.permission.CAMERA" />
  1. 导入相关库:在项目的build.gradle文件中添加ZXing库的依赖。
代码语言:txt
复制
implementation 'com.google.zxing:core:3.4.0'
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
  1. 创建扫描界面:在布局文件中添加一个SurfaceView用于显示相机预览,并添加一个TextView用于显示扫描结果。
代码语言:txt
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <SurfaceView
        android:id="@+id/camera_preview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <TextView
        android:id="@+id/scan_result"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textSize="20sp" />

</RelativeLayout>
  1. 创建扫描逻辑:在Activity中实现扫描逻辑,包括初始化相机、处理扫描结果等。
代码语言:txt
复制
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.Result;
import com.journeyapps.barcodescanner.BarcodeCallback;
import com.journeyapps.barcodescanner.BarcodeResult;
import com.journeyapps.barcodescanner.CompoundBarcodeView;

import java.util.Arrays;
import java.util.Collection;
import java.util.List;

public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback {

    private static final int CAMERA_PERMISSION_REQUEST_CODE = 100;

    private CompoundBarcodeView barcodeView;
    private TextView scanResultTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        barcodeView = findViewById(R.id.barcode_view);
        scanResultTextView = findViewById(R.id.scan_result);

        SurfaceView surfaceView = findViewById(R.id.camera_preview);
        surfaceView.getHolder().addCallback(this);

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, CAMERA_PERMISSION_REQUEST_CODE);
        } else {
            startCamera();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == CAMERA_PERMISSION_REQUEST_CODE) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                startCamera();
            } else {
                // 权限被拒绝
            }
        }
    }

    private void startCamera() {
        barcodeView.decodeContinuous(new BarcodeCallback() {
            @Override
            public void barcodeResult(BarcodeResult result) {
                if (result.getText() != null) {
                    scanResultTextView.setText(result.getText());
                }
            }

            @Override
            public void possibleResultPoints(List<ResultPoint> resultPoints) {
            }
        });
    }

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

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

    @Override
    public void surfaceCreated(@NonNull SurfaceHolder holder) {
        barcodeView.getBarcodeView().getCameraSettings().setAutoFocusEnabled(true);
    }

    @Override
    public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {
    }

    @Override
    public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
    }
}

以上代码使用了ZXing库来实现二维码扫描功能。在onCreate方法中,首先检查相机权限是否已授权,如果未授权则请求相机权限。然后通过SurfaceHolder.Callback监听SurfaceView的创建事件,在surfaceCreated方法中启动相机。在startCamera方法中,调用barcodeView的decodeContinuous方法开始连续扫描,并通过BarcodeCallback获取扫描结果。

注意:以上代码仅包含了基本的二维码扫描功能,如需处理不同类型的二维码,可以在BarcodeCallback的barcodeResult方法中根据BarcodeResult的BarcodeFormat属性进行判断和处理。

推荐的腾讯云相关产品:腾讯云移动扫码支付服务(https://cloud.tencent.com/product/qrcodepay)

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

相关·内容

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

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

2.5K51

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

这里我要问大家一个问题,你们都是如何在自己App中加入二维码扫描功能呢? 相信会有一大部分朋友说,使用是ZXing或者ZBar这种开源库。...但是不知道大家有没有思考过,二维码功能这么常见,为什么Google却没有提供一个官方二维码扫描库呢? 反正我是没思考过。有需求,找开源,这可能已经成了很多Android开发者常态化思维。...优缺点就介绍到这里吧,如果你对这个库感兴趣,也想跟我一样尝鲜的话,那么本篇文章接下来内容就是教你如何集成使用这个库来进行二维码扫描。...然后调用startScan()即可开始扫描二维码,调用addOnSuccessListener()方法注册一个回调监听。当获取到二维码扫描结果时候,我们将扫描结果显示在TextView上面。...、或者一个Bitmap对象解析二维码功能,具体详情请参考文档即可,这里就不再展开讲解了。

1.7K31
  • 关于 Android 13,目前我们所知道一切

    虽然我想列出每一款可能获得 Android 13 更新手机,但我不想在猜测世界里走得太远。有些品牌没有像他们应该做那样对更新时间表做出承诺。...现在,一些你最常用 App,谷歌地图,已经提供了自定义语言设置。但是,没人会愿意翻阅每个 App 设置来修改其默认语言。...其他特性:锁屏时钟、二维码扫描等 图片来源:Google 除了通知、语言和省电等特性外,Android 13 可能会对锁屏和导航栏进行小幅改动。它还可能包括一个简化二维码扫描工具。...(在不同制造商之间,这可能有所不同,在 Android OS 上,他们通常有自己特色)。 当你按住底部导航栏 “主页 “按钮时可以弹出谷歌助理,Android 13 会允许你禁用这个快捷方式。...Android Police 发现,Android 13 系统快速设置菜单可能有一个二维码快捷方式,而 9to5Mac 发现了一个锁屏设置,让你在不解锁手机情况下就可以使用二维码扫描

    2K20

    AirServer2023MAC电脑专用投屏软件功能介绍

    第一步:选择网络上你喜欢一个设备连接到电脑上,然后开始自动搜索连接上电脑上每个视频设备。第二步:搜索出来你想要发送给多个视频媒体,并将它们进行连接后直接播放。...AirServer电脑投屏工具是一款可以将移动设备画面投屏到电脑上软件工具,通过简单地扫描二维码,可以建立起同个局域网下移动设备与电脑连接通道,并进行实时投屏。...图片 还可以改变投屏画面参数,亮度、饱和度、锐度等等,这点有利于我们在不同环境下,获得更好观感。...图片 这款也是支持将移动设备投屏到Mac或Windows系统,画面简洁,可通过给定二维码或者投屏进行连接,操作简便。...AirServer在您环境运行,您可以使用任何设备,iPhone,iPad,Mac,Android,Nexus,Pixel,Chromebook或Windows 10 PC,将其显示屏无线屏幕镜像到大屏幕

    1.5K00

    官方问答精选《一》提交审核时提供测试账密码

    本系列是我觉得,应该整理一下,因为官方很多回答里其实是在补充官方文档,十分值得收集整理出来;我会不定期整理,大概是2-3天左右,一周至少整理2次; 比如本次整理,就有大家都关心二维码问题,那么问题来了...,假如二维码扫描出现了,你小程序是否需要变化一下呢?...回答:这个返回目前没有接口可以控制 问题三: 二维码扫描小程序没有提供相关API进行扫码吗?...回答:接下去会增加 api 来支持二维码扫描 问题四: 如何在提交审核时提供测试账密问题 由于是做第三方登录系统,但提交审核时未能找到能提交测试账号和密码入口 回答:非常抱歉,目前还不能在系统上提供...所以我们想去做现在已经支持。 回答: ? 问题八: 小程序对微信版本、IOS版本、Android版本要求是什么样子? 小程序对微信版本、IOS版本、Android版本要求是什么样子

    60780

    在画图软件,可以画出不同大小或颜色圆形、矩形等几何图形。几何图形之间有许多共同特征,它们可以是用某种颜色画出来,可以是填充或者不填充

    (boolean类型:true表示填充,false表示不填充), 有方法获取图形面积、获取图形周长等; ②使用构造方法为其属性赋初值; ③在每个子类中都重写toString()方法,返回所有属性信息...; ④根据文字描述合理设计子类其他属性和方法。...(2)设计实现画板类,要求: ①画一个红色、无填充、长和宽分别为10.0与5.0长方形; ②画一个绿色、有填充、半径为3.0圆形; ③画一个黄色、无填充、边长为4.0正方形; ④分别求三个对象面积和周长...,并将每个对象所有属性信息打印到控制台。...:" +getColour() +"\t"+"有无填充:" +isFill()+ "半径为:"+getR()+"圆形面积为:"+area()+"周长为:"+perimeter() ; } }

    1.8K30

    Linux下快速构建Android编译环境

    背景: 在移动互联网时代,大多数企业内部都有移动客户端,而移动客户端又因为OS不同产生了两个派系,即安卓(Android)和苹果(IOS),而对于互联网技术从业者来说,这两者最直接区别就是开源和闭源...,因而也导致了在构建移动客户端时,为了整体稳定性和可靠性考虑(甚至有成本考虑),需要进行分别编译,本篇文章记录下如何在Linux环境下构建Android编译环境...接下来主要讲解下如何在Linux环境下构建安卓编译环境。.../dav/ 接下来,开发者用户即可以使用http://dl.bgbiao.top/dav/test-android.png二维码地址进行扫描安装,对该版本app功能进行测试验证了。...,因此以上环境再接入Jenkins-salve之前需要安装git客户端名 2.通常客户端在测试包时会通过二维码扫描来下载包,因此环境上需要安装qrencode软件,用于生成二维码 3.需要注意gradle

    4.5K20

    iOS 14被爆重要功能:“剪辑”可实现无需下载使用第三方应用

    ,最新消息显示,苹果公司正在构建一个以前未有过API,用户将能够通过扫描二维码方式,使用第三方应用特定功能。...例如,不用在Safari打开链接,YouTube 二维码可能会弹出一个动态应用程序窗格,该窗格显示视频鼓励用户下载完整应用程序。...“剪辑” API与我们有权访问内部版本二维码阅读器直接相关,因此用户可以扫描链接到应用程序代码,然后直接从显示在屏幕上的卡上与其进行交互。...假设您收到二维码带有指向YouTube视频链接,但您iPhone上未安装官方应用程序,使用iOS 14和Clips API,您将能够扫描该代码,并且视频将在显示本机用户界面而不是网页浮动卡上复制...看来,iOS 14功能可能会有所不同,它充当用户尝试某些应用程序功能而不需要实际安装任何东西方式,或者充当第三方开发人员提供某些功能而不提示用户下载方式。

    1.8K30

    二维码骗局卷土重来,如何避免?

    有些服务获得需预付费用,例如,要租用共享自行车,您需要支付少量费用才能打开车锁,用于识别自行车开始付款程序二维码印在自行车上。但是,这些二维码很可能被那些致力于小额诈骗犯罪分子所更换。...如何避免二维码诈骗 有一些常见方法可以避免二维码欺诈:         不要信任来自未知发件人电子邮件。 请勿扫描电子邮件嵌入二维码,请把它们当作一般链接看待。...检查在原来二维码上是否粘贴了新二维码标签,如果有,请务必不要扫描它,甚至是尝试删掉它。 进入链接之前使用二维码扫描器检查或显示它URL。...替代Android设备上二维码一种方法是正处于开发近距离无线通讯技术(NFC)。NFC Tag就像二维码一样,利用现有设备一些应用程序即可读取。...型号较老智能手机可能需要安装一个app才能读取它们,而大多新款iPhone和Android手机都可以读取第三方NFC Tag,无需额外软件。

    64500

    Android二维码功能实现,在程序内嵌入ZXing项目

    而内嵌二维码扫描功能软件也越来越多,QQ、微信、UC浏览器等等应用都可以对着二维码扫一扫,感觉我们自己应用里不加上二维码扫描功能,都跟不上时代潮流了。...所以今天我就将带着大家一起,在我们自己程序里加入二维码扫描功能。 不过,二维码功能如果真要做起来还是非常复杂,从零开始实现不太现实,比较好做法就是借助现有的开源项目。...目前在二维码这一领域名气最大开源项目就是ZXing了(Zebra Crossing),它提供了多个平台二维码扫描解决方案,开源项目地址是 https://code.google.com/p/zxing...打开CaptureActivity,这个类就是用于扫描二维码最主要一个类,其中有一个handleDecode()方法,当二维码扫描完成之后会把结果回调到这个方法,我们现在不想使用默认处理方式,于是修改...,扫描结果将回调到onActivityResult()方法,然后在这个方法取出扫描结果,展示在TextView上。

    99160

    安装Termux手机上运行Python

    使用ADB是一个曲线救国方法,打开USB调试后开发者可以在桌面系统终端触发Android系统自带指令,使用方法大概如下: adb shell env # 查看Android环境变量 这种方法需要一台电脑配合...Termux Termux终端有很多优秀特性,这里要说两点: Termux有针对手机输入优化键盘显示,长按KEYBOARD选项可打开该功能 Termux维护着适合Android库,自带包管理器apt...apt install apt-transport-https 这时再次修改源服务器传输协议为https更新即可。...nyancat 什么鬼~完全Get不到国外人趣味点~ 终端二维码 Linux 命令行下二维码,主要核心是这个网址:http://qrenco.de/ echo "http://www.sqlsec.com..." |curl -F-=\<- qrenco.de 如果你不嫌无聊的话还可以扫描这个二维码,然后就打开我博客了.

    4.9K10

    产品经理常忽略小程序场景

    2、小程序登录和用户体系 3、小程序/公众号二维码 4、模版消息 01 小程序和H5有什么区别? 1、运行环境 小程序运行在微信内置解析器(基于浏览器重构),而h5运行在各式各样浏览器。...对于h5,要面对safari、chrome、IE不同浏览器,以及 iOS、Android内置浏览器(webview),可能会遇到更多浏览器兼容问题;但是对于小程序,只面对 iOS、Android微信客户端...03 小程序/公众号二维码 当想要针对不同小程序页面,生成单独二维码去推广时,从微信换取小程序二维码是最佳方法。...需要注意是,在扫描二维码后,如果想获取二维码链接上面的参数,它获取方式跟A码和C码不同,因为微信会把它参数转化成 scene=参数 格式。...用户扫描二维码后,会推送扫描事件给开发者,就可以获取到公众号场景值。 公众号二维码也分为2种类型: 1)临时性二维码,最长有效期30天,也可以自定义有效期时间,生成个数没有限制。

    81920

    ❤️【python入门项目】使用 Python 生成二维码❤️

    二维码可能看起来很简单,但它们能够存储大量数据。无论扫描二维码时包含多少数据,用户都可以立即访问信息。这就是为什么它们被称为快速响应码。 近些年来在许多场景中使用他们。...它们还被用于通过简单地扫描二维码来进行数字交易。 通过存储加密详细信息(例如 SSID、密码和加密类型)来访问 Wi-Fi。 等等等等,应用非常广泛 我们刚刚看到了二维码一些优势。...现在我们将在这里学习如何在 Python 中生成二维码。 对于使用 python 生成 QR 码,我们将使用一个名为QRcode python 模块。...,我们生成一个二维码扫描它。...但是,如果反过来,我们想读取这个二维码,即现在我们想知道二维码编码了什么,而无需扫描它呢?为此,我们将使用 OpenCV。OpenCV 是一个专注于实时计算机视觉任务编程函数库。

    95530

    Android性能优化—实战解析》

    但是,到了各大厂商手里,改源码、自定义系统,使得Android原生系统变得鱼龙混杂,然后到了不同层次开发工程师手里,因为技术水平参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。...App构建优化解析:Android包大小极致压缩 深入理解Flutter多线程 携程技术—从智行Android项目看组件化架构实践 Flutter您需要知道知识点 二维码扫描优化 原本Lark直接集成了...Android篇│爱奇艺App启动优化实践分享 二维码扫描优化及爱奇艺App实践 动态下发so库在Android APK安装包瘦身方面的应用 史上最全Android渲染机制讲解(长文源码深度剖析) 花椒...看看"麦任树模式"优化 谷歌—协程取消和异常│异常处理详解 QQ音乐—彻底弄懂浏览器缓存策略 闲鱼如何在2个月内实现Android启动速度翻倍?...包大小分析方法和实践 网易新闻构建优化:如何让你构建速度"势闪电"?

    1.3K40

    有哪些软件可以把苹果手机连接电脑上面?

    AirServer电脑投屏工具是一款可以将移动设备画面投屏到电脑上软件工具,通过简单地扫描二维码,可以建立起同个局域网下移动设备与电脑连接通道,并进行实时投屏。...还可以改变投屏画面参数,亮度、饱和度、锐度等等,这点有利于我们在不同环境下,获得更好观感。...这款也是支持将移动设备投屏到Mac或Windows系统,画面简洁,可通过给定二维码或者投屏进行连接,操作简便。...AirServer在您环境运行,您可以使用任何设备,iPhone,iPad,Mac,Android,Nexus,Pixel,Chromebook或Windows 10 PC,将其显示屏无线屏幕镜像到大屏幕...6、Android兼容适用于所有使用Miracast和Google CastAndroid设备,无需在设备上安装任何内容。

    4.2K00

    使用开源同步工具 Syncthing 控制你数据

    在这篇文章,我将解释如何在 Linux 电脑和安卓手机之间安装和同步文件。 Linux Syncting 在大多数流行发行版都能下载。Fedora 28 包含其最新版本。...Syncthing 允许你用不同设备分享独立文件夹。设备是通过交换设备 ID 来添加。设备 ID 是在 Syncting 首次启动时创建一个唯一密码安全标识符。...连接设备 现在让我们连接你 Linux 机器和你 Android 客户端。...在您 Linux 计算机,打开 Syncting,单击“Settings”图标,然后单击“Show ID”,就会显示一个二维码。 在你安卓手机上,打开 Syncthing。...在第一个区域内点击二维码符号来启动二维码扫描。 将你手机摄像头对准电脑上二维码。设备 ID 字段将由您桌面客户端设备 ID 填充。起一个适合名字保存。

    2.3K40

    我又开发了一个非常好用开源库,调试Android数据库有救了

    然后我就想到,我是不是也可以开发一个开源库,当任何项目集成了这个开源库后,就自动扫描当前项目的内置和外置存储空间,把所有的数据库文件都扫描出来,然后同样提供一个可视化界面以方便开发者随时查看数据库数据...虽然听上去和Database Inspector功能有点重叠,但其实它们目标场景是完全不同。...在这里,Glance会自动开始扫描当前应用程序内置和外置存储空间,将所有的数据库文档全部搜索到,一一列出。...点击demo1.db,即可打开这个数据库文件,并将该数据库所有表罗列出来,如下图所示。 ?...当然这里列出表并不全部都是由我们自己创建,比如android_metadata、sqlite_sequence这些表就是自动生成。但Glance并不会对此进行区分,而是会把它们全部罗列出来。

    61841

    扫码登录背后思考

    扫码登录流程 server端产生一个代表二维码唯一标识uid 及手机跳转登录网站二维码,返回给PC 端在前端页面显示,唯一uid 将存放在redis或mysql中代表着一次登录信息,此时Android...手机扫码后,将用户身份信息token、其他信息extinfo 及uid 发送给server端,server端将 uid 与 token + extinfo 绑定,修改存放在redisuid 状态改为已扫描...PC客户端、 服务server 、 安卓用户之间信息交互 这个过程 PC前端页面呈现 二维码呈现 4种状态 ,未扫描、已扫描、已确认、过期。...未扫描:pc端等待 Android用户去扫码二维码,pc端通过 轮询方式 去请求服务端 查询此二维码状态,通过 uid 查询 存放在redis 或者数据库uid 对应状态。...,因此也要设置二维码有效期限,uid 一般也存放在redis ,也具有时效性,因此二维码进行过期,重新刷新网页将重新生成uid 二维码

    2.6K10

    【译】让图片更有意义——图形检测API

    然而包括 Android、iOS和 macOS在内操作系统,以及设备相机模块硬件芯片,都已经有表现不俗特征探测器, Android上的人脸探测器或iOS通用功能检测器。...图形检测API使用场景 图形检测API目前支持人脸,条形码和文本检测。以下列出了这三个功能使用场景: 人脸检测 社交网络或是图片社交网站通常给用户提供图片中对人物进行编辑标记功能。...多媒体信息网站喜欢给用户提供在人脸上增加有趣东西功能,太阳镜或胡子。 条形码检测 通过读取二维码,web应用可以解锁许多有趣功能,如在线支付、 web导航, 或利用条形码建立社交关系。...购物app可以允许用户自行扫描商店货品EAN或UPC条形码,用于在线对比商品价格。 机场可以推出在线信息服务,乘客通过扫描登机牌上条形码,来获取与他们乘坐航班相关信息。...如果你是Web Workers崇拜者,好消息是探测器也暴露在web worker里。探测结果可以被序列化通过postMessage方法传会主线程。这里有个演示demo。

    85420

    最新版基于ZXingAndroid扫码库

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

    5.4K30
    领券