如何使用Android相机扫描二维码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Android相机扫描二维码相关的知识,希望对你有一定的参考价值。

参考技术A 用 qq或者微信自带的扫一扫啊!浏览器在输入地址的地方有个扫描标志点下就可以扫 参考技术B 下载一个扫码软件。

基于 Google ML Kit 快速集成二维码扫描,速度比 zxing 快,可配置相册,闪光灯,相机可以调整焦距放大缩小,自定义扫描线颜色,自定义背景颜色,自定义遮罩层,支持同时扫多个二维码和条形码

MNMLKitScanner

项目地址:maning0303/MNMLKitScanner 

简介: 基于 Google ML Kit 快速集成二维码扫描,速度比 zxing 快,可配置相册,闪光灯,相机可以调整焦距放大缩小,自定义扫描线颜色,自定义背景颜色,自定义遮罩层,支持同时扫多个二维码和条形码

更多:作者   提 Bug   

标签:

基于 Google MLKit 快速集成二维码扫描,速度比 zxing 快,可配置相册,闪光灯,相机可以调整焦距放大缩小,自定义扫描线颜色,自定义背景颜色,自定义遮罩层,支持同时扫多个二维码和条形码

正在上传…重新上传取消

功能:

1:二维码扫描,手势缩放,无拉伸,样式自定义
2:相册中选取图片识别
3: 相机可以调整焦距放大缩小
4: 完全自定义遮罩层
5: 支持微信多个二维码/条形码同时扫描

截图:

    

如何添加

Gradle 添加:

1.在 Project 的 build.gradle 中添加仓库地址

    allprojects 
        repositories 
            ...
            maven  url "https://jitpack.io" 
        
    

2.在 Module 目录下的 build.gradle 中添加依赖

    dependencies 

            implementation 'com.github.maning0303:MNMLKitScanner:V1.0.1'
            //下面版本自己控制
            implementation 'com.google.mlkit:barcode-scanning:17.0.0'
            implementation "androidx.camera:camera-core:1.0.2"
            implementation "androidx.camera:camera-camera2:1.0.2"
            implementation "androidx.camera:camera-lifecycle:1.0.2"
            implementation "androidx.camera:camera-view:1.0.0-alpha25"

    

使用方法:

进入需要提前申请相机权限;进入需要提前申请相机权限;进入需要提前申请相机权限;

        1:开始扫描:
            //默认扫描
            MNScanManager.startScan(this, new MNScanCallback() 
                   @Override
                   public void onActivityResult(int resultCode, Intent data) 
                    switch (resultCode) 
                        case MNScanManager.RESULT_SUCCESS:
                            ArrayList<String> results = data.getStringArrayListExtra(MNScanManager.INTENT_KEY_RESULT_SUCCESS);
                            break;
                        case MNScanManager.RESULT_FAIL:
                            String resultError = data.getStringExtra(MNScanManager.INTENT_KEY_RESULT_ERROR);
                            break;
                        case MNScanManager.RESULT_CANCLE:
                            showToast("取消扫码");
                            break;
                    
                   
            );

            //自定义扫描
            MNScanConfig scanConfig = new MNScanConfig.Builder()
                    //设置完成震动
                    .isShowVibrate(true)
                    //扫描完成声音
                    .isShowBeep(true)
                    //显示相册功能
                    .isShowPhotoAlbum(true)
                    //显示闪光灯
                    .isShowLightController(true)
                    //打开扫描页面的动画
                    .setActivityOpenAnime(R.anim.activity_anmie_in)
                    //退出扫描页面动画
                    .setActivityExitAnime(R.anim.activity_anmie_out)
                    //自定义文案
                    .setScanHintText("xxxx")
                    .setScanHintTextColor("#FF0000")
                    .setScanHintTextSize(14)
                    //扫描线的颜色
                    .setScanColor("#FF0000")
                    //是否支持手势缩放
                    .setSupportZoom(true)
                    //扫描线样式
                    .setLaserStyle(MNScanConfig.LaserStyle.Grid/MNScanConfig.LaserStyle.Line)
                    //背景颜色
                    .setBgColor("")
                    //网格扫描线的列数
                    .setGridScanLineColumn(30)
                    //网格高度
                    .setGridScanLineHeight(300)
                    //是否全屏扫描,默认全屏
                    .setFullScreenScan(true)
                    //单位 dp
                    .setResultPointConfigs(36, 12, 3, colorResultPointStroke, colorResultPoint)
                    //状态栏设置
                    .setStatusBarConfigs(colorStatusBar, true)
                    //自定义遮罩
                    .setCustomShadeViewLayoutID(R.layout.layout_custom_view, new MNCustomViewBindCallback() 
                        @Override
                        public void onBindView(View customView) 
                            //TODO:通过 findviewById 获取 View
                        
                    )
                    .builder();
            MNScanManager.startScan(this, scanConfig, new MNScanCallback() 
                @Override
                public void onActivityResult(int resultCode, Intent data) 
                    switch (resultCode) 
                        case MNScanManager.RESULT_SUCCESS:
                            String resultSuccess = data.getStringExtra(MNScanManager.INTENT_KEY_RESULT_SUCCESS);
                            break;
                        case MNScanManager.RESULT_FAIL:
                            String resultError = data.getStringExtra(MNScanManager.INTENT_KEY_RESULT_ERROR);
                            break;
                        case MNScanManager.RESULT_CANCLE:
                            showToast("取消扫码");
                            break;
                    
                
            );

        2.提供扫描界面相关方法(自定义遮罩层会使用):
            /**
             * 关闭当前页面
             */
            MNScanManager.closeScanPage();

            /**
             * 打开相册扫描图片
             */
            MNScanManager.openAlbumPage();

            /**
             * 打开手电筒
             */
            MNScanManager.openScanLight();

            /**
             * 关闭手电筒
             */
            MNScanManager.closeScanLight();

            /**
             * 手电筒是否开启
             */
            MNScanManager.isLightOn();

感谢:

googlesamples/mlkit

jenly1314/MLKit

Ye-Miao/StatusBarUtil

感谢所有开源的人;

推荐:

NameDescribe
GankMM(Material Design & MVP & Retrofit + OKHttp & RecyclerView ...)Gank.io Android 客户端:每天一张美女图片,一个视频短片,若干 Android,iOS 等程序干货,周一到周五每天更新,数据全部由 干货集中营 提供,持续更新。
MNUpdateAPKAndroid APK 版本更新的下载和安装,适配 7.0,简单方便。
MNImageBrowser交互特效的图片浏览框架,微信向下滑动动态关闭
MNZXingCode快速集成二维码扫描和生成二维码
MNMLKitScanner基于 Google MLKit 快速集成二维码扫描,速度比 zxing 快
MNPasswordEditText类似微信支付宝的密码输入框。
MClearEditText带有删除功能的 EditText
MNCrashMonitorDebug 监听程序崩溃日志,展示崩溃日志列表,方便自己平时调试。
MNProgressHUDMNProgressHUD 是对常用的自定义弹框封装,加载 ProgressDialog,状态显示的 StatusDialog 和自定义 Toast,支持背景颜色,圆角,边框和文字的自定义。
SwitcherView垂直滚动的广告栏文字展示。
MNVideoPlayerSurfaceView + MediaPlayer 实现的视频播放器,支持横竖屏切换,手势快进快退、调节音量,亮度等。------代码简单,新手可以看一看。
MNChangeSkinAndroid 夜间模式,通过 Theme 实现
MNXUtilsDBxUtils3 数据库模块单独抽取出来,方便使用。
MNCalendar简单的日历控件练习,水平方向日历支持手势滑动切换,跳转月份;垂直方向日历选取区间范围。
MNSwipeToLoadDemo利用 SwipeToLoadLayout 实现的各种下拉刷新效果(饿了吗,京东,百度外卖,美团外卖,天猫下拉刷新等)。

 

以上是关于如何使用Android相机扫描二维码的主要内容,如果未能解决你的问题,请参考以下文章

使用ZXing代码实现二维码扫描

android开发 如何实现扫描本地二维码图片

通过相机扫描图像和从相机捕获图像之间有啥不同吗?

有关iOS系统中调用相机设备实现二维码扫描功能的注意点(3/3)

.net 手机扫描二维码功能

发票二维码扫描增强_02_算法概述