精华内容
下载资源
问答
  • 二维码扫描框架

    2019-12-10 16:41:10
    二维码扫描框架 框架一: BGAQRCode-git地址 该框架分别基于ZXing和ZBar进行了封装,于2019/12/10经过个人扫描测试,在该框架封装好的前提下,基于ZBar的扫描能够更快一些,基本达到了秒扫,基于ZXing封装的要...

    二维码扫描框架

    框架一:

    BGAQRCode-git地址

    该框架分别基于ZXing和ZBar进行了封装,于2019/12/10经过个人扫描测试,在该框架封装好的前提下,基于ZBar的扫描能够更快一些,基本达到了秒扫,基于ZXing封装的要逊色一些,ZBar底层是用C开发的,ZXing底层是C++开发的,但用该库ZBar不可以生成二维码,而ZXing可以生成

    引入依赖:

    implementation 'cn.bingoogolapple:bga-qrcode-zbar:1.3.7'

    引入权限:

     <!-- 相机权限 -->
        <uses-permission android:name="android.permission.CAMERA" /> 
    <!-- 震动权限 -->
        <uses-permission android:name="android.permission.VIBRATE" />

     

    展开全文
  • 二维码扫描框架zxing的使用

    千次阅读 2018-01-29 11:20:00
    目前二维码扫描功能在app上已经非常成熟了,google的zxing项目也是目前可以说是最流行的二维码扫描框架。但是它本身功能太多,这里我提取出一些基本的扫码功能,重新封装成库。 github:...

    目前二维码扫描功能在app上已经非常成熟了,google的zxing项目也是目前可以说是最流行的二维码扫描框架。但是它本身功能太多,这里我提取出一些基本的扫码功能,重新封装成库。
    github:https://github.com/Sun-Shuai/zxing-demo

    使用方法:

        compile 'com.sunshuai:android-zxing:1.0.0'
    

    新建一个ZxingActivity继承CaptureActivity,自定义扫码界面。handleDecode方法是扫描后的回调方法,重写它来自定义扫描后的操作,比如像下面我这么写的,是扫描后返回二维码文本内容

    public class ZxingActivity extends CaptureActivity {
    
        @Override
        public void handleDecode(Result rawResult, Bitmap barcode, float scaleFactor) {
            Intent intent = new Intent();
            intent.putExtra(IntentConstant.EXTRANAME_QR_CODE_TEXT, rawResult.getText());
            this.setResult(IntentConstant.REQUESTCODE_SCAN_QR_CODE, intent);
            finish();
        }
    }
    

    在需要扫码的地方添加如下代码:

         Intent intent = new Intent(this, ZxingActivity.class);
         startActivityForResult(intent,IntentConstant.REQUESTCODE_SCAN_QR_CODE);
    
    
    -----------------------------------------------------------
    
       @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            switch (requestCode) {
                case IntentConstant.REQUESTCODE_SCAN_QR_CODE:
                    ToastUtils.showShort(this, data.getStringExtra(IntentConstant.EXTRANAME_QR_CODE_TEXT));
                    break;
            }
        }
    

    如果需要其他的功能,请参考https://github.com/zxing/zxing

    展开全文
  • 一、条形码、二维码扫描框架介绍二、条形码、二维码的区别和组成结构介绍三、条形码、二维码扫描框架应用场景四、BGAQRCode-Android框架实战五、项目源码下载六、参考文章 一、条形码、二维码扫描框架介绍 ...
      1. 文章大纲

        一、条形码、二维码扫描框架介绍
        二、条形码、二维码的区别和组成结构介绍
        三、条形码、二维码扫描框架应用场景
        四、BGAQRCode-Android框架实战
        五、项目源码下载
        六、参考文章

        一、条形码、二维码扫描框架介绍

        Android二维码扫描是一种常见的功能开发,但是技术选型不当会造成初期开发难度大、后期维护成本高。常见的Android二维码扫码解决方案很多,比如ZXing,barcodescanner和BGAQRCode-Android等等。以下给出这三种典型二维码解决方案的异同和开发场景。
        (1)ZXing是诸多二维码扫码解决方案的核心引用库,见附录文章2。很多第三方的二维码解决方案都是基于ZXing二次定制开发。但是集成和直接基于ZXing二次定制开发比较繁琐和麻烦,除非非常必要,我个人不建议开发者直接使用ZXing集成开发。
        (2)由于ZXing的以上原因,很多第三方二维码扫码解决方案应运而生。其中barcodescanner就是这样,barcodescanner在github上的项目主页:https://github.com/dm77/barcodescanner , barcodescanner最大的特点是集成简单,扫描速度较快,比较稳定,很便于开发者迅速集成开发。但是barcodescanner的不太灵活UI调整,如果设计要求二维码扫描界面比较复杂的UI要求,那么就需要把barcodescanner的整体代码都拖下来,自己再次改造定制。
        (3)BGAQRCode-Android也是一种二维码扫描解决方案,其在github上的项目主页:https://github.com/bingoogolapple/BGAQRCode-Android , BGAQRCode-Android也和barcodescanner一样简单易用,然而更加便于定制开发。我个人喜欢使用BGAQRCode-Android。

        二、条形码、二维码的区别和组成结构介绍

        1. 演示图

        二维码
        二维码

        2. 组成结构

        2.1 一维码

        条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案。
        其对应字符由一组阿拉伯数字组成,供人们直接识读或通过键盘 向计算机输入数据使用。这一组条空和相应的字符所表示的信息是相同的。
        通用商品条形码一共有13位,一般由前缀部分、制造厂商代码、商品代码和校验码4个部分组成。

        前缀部分
        由第1到第3位构成,是用来标识国家或地区的代码,赋码权在国际物品编码协会,如 00-09代表美国、加拿大。45、49代表 日本。69代表中国大陆,471 代表中国台湾地区,489 代表香港特区。

        制造厂商代码
        由第4到第7位构成,是用来标识不同生产厂家的代码,赋码权在各个国家或地区的物品编码组织,中国由国家物品编码中心赋予制造厂商代码。

        商品代码
        由第8到第12位构成,是各个厂商用来标识自己商品的代码,赋码权由产品生产企业自己行使,可以组成10000个不同的商品代码。

        校验码
        由第13位构成,用来校验商品条形码中左起第1-12数字代码的正确性。这一位的数字是由前12位数字按照一定规则计算出来的,若读取出的前12位按照该规则计算出的数字跟第13位不符合,则表示读取失败,是条形码的一种验错措施。

        2.2 二维码

        二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,二维码是一种比一维码更高级的条码格式。一维码只能在一个方向(一般是水平方向)上表达信息,而二维码在水平和垂直方向都可以存储信息。一维码只能由数字和字母组成,而二维码能存储汉字、数字和图片等信息,因此二维码的应用领域要广得多。
        以使用广泛的QR(Quick-Response) CODE为例,主要由定位图形、格式信息、版本信息、数据和纠错信息5部分构成。

        定位图形
        用于对二维码的定位,一共有个数为3,即3个定位图形可标识一个矩形,同时可以用于确认二维码的大小和方向;

        格式信息
        存在于所有的尺寸中,用于存放一些格式化数据。表示改二维码的纠错级别,分为L、M、Q、H;

        版本信息
        即二维码的规格,在 >= Version 7以上,需要预留两块3 x 6的区域存放一些版本信息。

        数据信息和纠错信息
        实际保存的二维码信息(Data Code 数据码)和纠错信息(Error Correction Code 纠错码)(用于修正二维码损坏带来的错误)。

        三、条形码、二维码扫描框架应用场景

        (1)信息获取(名片、地图、WIFI密码、资料)
        (2)网站跳转(跳转到微博、手机网站、网站)
        (3)广告推送(用户扫码,直接浏览商家推送的视频、音频广告)
        (4)手机电商(用户扫码、手机直接购物下单)
        (5)防伪溯源(用户扫码、即可查看生产地;同时可以获取最终消费地)
        (6)优惠促销(用户扫码,下载电子优惠券,抽奖)
        (7)会员管理(用户手机上获取电子会员信息、VIP服务)
        (8)手机支付(扫描商品二维码,通过银行或第三方支付提供的手机端通道完成支付
        (9)登陆管理(不需输入账户,密码,扫码登陆)

        四、BGAQRCode-Android框架实战

        1. build.gradle添加引用

            compile 'com.google.zxing:core:3.2.1'
            compile 'cn.bingoogolapple:bga-qrcodecore:1.1.7@aar'
            compile 'cn.bingoogolapple:bga-zxing:1.1.7@aar'
        

        2. 新建xml布局

        <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <cn.bingoogolapple.qrcode.zxing.ZXingView android:id="@+id/zxingview" android:layout_width="match_parent" android:layout_height="match_parent" app:qrcv_animTime="1000" app:qrcv_borderColor="@android:color/white" app:qrcv_borderSize="1px" app:qrcv_cornerColor="@android:color/holo_green_light" app:qrcv_cornerLength="20dp" app:qrcv_cornerSize="5dp" app:qrcv_isShowDefaultScanLineDrawable="true" app:qrcv_isShowTipTextAsSingleLine="true" app:qrcv_isTipTextBelowRect="true" app:qrcv_maskColor="#64000000" app:qrcv_qrCodeTipText="将二维码放入框内,自动扫描" app:qrcv_rectWidth="200dp" app:qrcv_scanLineColor="@android:color/holo_green_light" app:qrcv_scanLineSize="2dp" app:qrcv_tipTextColor="@android:color/white" app:qrcv_tipTextMargin="15dp" app:qrcv_tipTextSize="18dp" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="50dp" android:orientation="horizontal"> <Button android:id="@+id/start_spot" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="开始扫码" /> <Button android:id="@+id/stop_spot" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="暂停扫码" /> <Button android:id="@+id/open_flashlight" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="开灯" /> <Button android:id="@+id/close_flashlight" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="关灯" /> </LinearLayout> </RelativeLayout> 

        3. Java代码

        import android.app.Activity;
        import android.os.Bundle;
        import android.os.Handler;
        import android.os.Vibrator;
        import android.util.Log; import android.view.View; import android.widget.Toast; import cn.bingoogolapple.qrcode.core.QRCodeView; import cn.bingoogolapple.qrcode.zxing.ZXingView; public class MainActivity extends Activity { private QRCodeView mQRCodeView; private Activity activity; @Override public void onCreate(Bundle state) { super.onCreate(state); activity = this; setContentView(R.layout.activity_main); mQRCodeView = (ZXingView) findViewById(R.id.zxingview); mQRCodeView.changeToScanQRCodeStyle(); //扫二维码 mQRCodeView.setDelegate(new QRCodeView.Delegate() { @Override public void onScanQRCodeSuccess(String result) { Log.d("二维码扫描结果", "result:" + result); Toast.makeText(activity, result, Toast.LENGTH_LONG).show(); //扫描得到结果震动一下表示 vibrate(); //获取结果后三秒后,重新开始扫描 new Handler().postDelayed(new Runnable() { @Override public void run() { mQRCodeView.startSpot(); } }, 3000); } @Override public void onScanQRCodeOpenCameraError() { Toast.makeText(activity, "打开相机错误!", Toast.LENGTH_SHORT).show(); } }); findViewById(R.id.start_spot).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mQRCodeView.startSpot(); Toast.makeText(activity, "startSpot", Toast.LENGTH_SHORT).show(); } }); findViewById(R.id.stop_spot).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mQRCodeView.stopSpot(); Toast.makeText(activity, "stopSpot", Toast.LENGTH_SHORT).show(); } }); findViewById(R.id.open_flashlight).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mQRCodeView.openFlashlight(); Toast.makeText(activity, "openFlashlight", Toast.LENGTH_SHORT).show(); } }); findViewById(R.id.close_flashlight).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mQRCodeView.closeFlashlight(); Toast.makeText(activity, "closeFlashlight", Toast.LENGTH_SHORT).show(); } }); // findViewById(R.id.scan_qrcode).setOnClickListener(new View.OnClickListener(){ // @Override // public void onClick(View view) { // mQRCodeView.changeToScanQRCodeStyle(); // Toast.makeText(activity,"changeToScanQRCodeStyle",Toast.LENGTH_SHORT).show(); // } // }); } @Override protected void onStart() { super.onStart(); mQRCodeView.startCamera(); //强制手机摄像头镜头朝向前边 //mQRCodeView.startCamera(Camera.CameraInfo.CAMERA_FACING_FRONT); mQRCodeView.showScanRect(); //显示扫描方框 } @Override protected void onStop() { mQRCodeView.stopCamera(); super.onStop(); } @Override protected void onDestroy() { mQRCodeView.onDestroy(); super.onDestroy(); } //震动 private void vibrate() { Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); vibrator.vibrate(200); } } 

        4. 添加相机、闪光灯、震动权限

          <uses-permission android:name="android.permission.CAMERA" />
            <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> 

        5. 运行项目并访问

        五、项目源码下载

        链接:https://pan.baidu.com/s/1rQOyYKJIVcpzlUCvsgPBXQ
        提取码:0bw8

        六、参考文章

        1. https://blog.csdn.net/csdn_aiyang/article/details/78983090
        2. https://blog.csdn.net/zhangphil/article/details/69625321
        3. https://blog.csdn.net/dcrmg/article/details/52106805

    转载于:https://www.cnblogs.com/WUXIAOCHANG/p/10937220.html

    展开全文
  • qr码是二维码码In this post, I will guide you through the creation of a QR-code ... 在本文中,我将指导您使用SwiftUI创建iOS的QR扫描仪。 We are also going to see how to create a preview of the camer...

    qr码是二维码码

    In this post, I will guide you through the creation of a QR-code scanner for iOS, using SwiftUI.

    在本文中,我将指导您使用SwiftUI创建iOS的QR码扫描仪。

    We are also going to see how to create a preview of the camera feed and use it as a SwiftUI View. The end result will be compatible with the simulator, Xcode’s Live Preview as well as UI tests!

    我们还将看到如何创建相机提要的预览并将其用作SwiftUI视图。 最终结果将与模拟器,Xcode的Live Preview以及UI测试兼容!

    什么是QR码? (What is QR-code?)

    QR-code stands for Quick Response Code. They contain small amounts of information presented in such a way that computers and mobile devices can interpret it. QR-codes are a kind of 2D barcodes called Matrix codes. Some variations exist, like Aztec Codes or Data Matrix codes. QR-codes usually look like this:

    QR码代表快速响应代码。 它们包含少量信息,这些信息以计算机和移动设备可以解释的方式呈现。 QR码是一种二维码,称为矩阵码。 存在一些变体,例如Aztec代码或Data Matrix代码。 QR码通常如下所示:

    入门 (Getting started)

    Let’s begin by creating a new iOS app project in Xcode. You will want to choose the Single View App template and make sure the User Interface technology is set to SwiftUI.

    让我们从Xcode创建一个新的iOS应用项目开始。 您将要选择Single View App模板,并确保将User Interface技术设置为SwiftUI

    Image for post
    Create a new Xcode Single View App in Xcode
    在Xcode中创建新的Xcode Single View App
    Image for post
    Run the project to make sure everything is setup
    运行项目以确保一切都已设置

    准备布局 (Prepare the Layout)

    The layout of the scanner screen probably depends on your specific app use case, so we are going to create a very simple view which allows us to see the camera preview, the value of any detected QR-codes as well as a button to toggle the torch light on and off.

    扫描仪屏幕的布局可能取决于您特定的应用程序用例,因此我们将创建一个非常简单的视图,使我们可以查看相机预览,任何检测到的QR码的值以及用于切换开启和关闭手电筒。

    Image for post

    Create the ScannerViewModel, which will hold the state the View

    创建ScannerViewModel,它将保留View的状态

    The scan interval is a variable which allows us to control how often we are going to retry scanning for a QR-code. This is useful if we want to provide a continuous scan function.

    扫描间隔是一个变量,它使我们可以控制重新尝试扫描QR码的频率。 如果我们要提供连续扫描功能,这将很有用。

    The torchIsOn field holds the current state of the device torch light. This tutorial assumes that a torch is always available.

    torchIsOn字段保存设备手电筒灯的当前状态。 本教程假定割炬始终可用。

    The lastQrCode field will hold the string value of the last detected QR-code value. When the user is scanning, this field will update to the last QR-code scanned.

    lastQrCode字段将保存最后检测到的QR码值的字符串值。 用户扫描时,此字段将更新为最后扫描的QR码。

    Finally a function onFoundQrCode which our QrCodeScanner is going to call whenever a new QR-code has been detected.

    最后一个功能onFoundQrCode ,我们的QrCodeScanner是怎么回事时已检测到新的QR码来调用。

    Now let’s create the ScannerView layout

    现在让我们创建ScannerView布局

    We are going to use a ZStack to create a layout where the Scanner showing the camera view will be seen at the back, taking the entire screen and on top of it, we are going to layout some interface elements like the balloon with the recently scanned QR-code or the torch button.

    我们将使用ZStack来创建一个布局,在该布局中,可以在背面看到显示摄像机视图的Scanner,并占据整个屏幕,并在其顶部,我们将使用最近扫描的内容来布局一些界面元素,例如气球QR码或手电筒按钮。

    关于相机视图 (About the Camera View)

    We are going to create a View which shows the feed from the device camera. Ideally, we also want to be able to position the Camera View using SwiftUI.

    我们将创建一个视图,该视图显示来自设备相机的提要。 理想情况下,我们还希望能够使用SwiftUI定位Camera View。

    Most of the functionality we are going to use comes from the AVFoundation framework. For presently it doesn’t offer any ready made SwiftUI views, we are going to create a traditional UIView and embed it as a UIViewRepresentable in our SwiftUI app.

    我们将要使用的大多数功能来自AVFoundation框架。 目前,它不提供任何现成的SwiftUI视图,我们将创建一个传统的UIView并将其作为UIViewRepresentable嵌入到我们的SwiftUI应用中。

    We are going to setup a AVCaptureSession which will use the device back camera as an input and a AVCaptureMetadataOutput as an output, allowing us to receive a stream of metadata objects recognised from the camera input. Those metadata objects are the actual QR-code values we are aiming to gather.

    我们将设置一个AVCaptureSession ,它将使用设备后置摄像头作为输入,将AVCaptureMetadataOutput用作输出,从而使我们能够接收从摄像头输入中识别出的元数据对象流。 这些元数据对象是我们旨在收集的实际QR码值。

    Since we are going to use the camera view in SwiftUI layouts, it will be ideal if the implementation plays nice with the simulator (so the SwiftUI preview function will work). Since the simulator lacks a physical camera device, we are going to embed a fallback in the camera view.

    由于我们将在SwiftUI布局中使用摄影机视图,因此如果实现与模拟器完美配合将是理想的选择(因此SwiftUI预览功能将起作用)。 由于模拟器缺少物理相机设备,因此我们将在相机视图中嵌入一个备用。

    代表 (The Delegate)

    The delegate will be responsible for handling the metadata output, checking if a QR-code was found and informing the parent View of that QR-code value.

    委托人将负责处理元数据输出,检查是否找到QR码,并将该QR码值通知父视图。

    Most notably, our delegate object will adopt the AVCaptureMetadataOutputObjectsDelegate protocol in order to listen for new metadata objects which were detected in the camera feed.

    最值得注意的是,我们的委托对象将采用AVCaptureMetadataOutputObjectsDelegate协议,以侦听在相机供稿中检测到的AVCaptureMetadataOutputObjectsDelegate数据对象。

    The delegate will also take advantage of the scanning interval we prepared for in our View Model. As long as the capture session is active and a QR-code image is in view of the camera feed, new metadata objects will be constantly detected. For this, we are going to skip frames and only notify the parent view once per scanning interval.

    委托还将利用我们在视图模型中准备的扫描间隔。 只要捕获会话处于活动状态并且QR码图像在摄像机馈送的视角下,就会不断检测到新的元数据对象。 为此,我们将跳过帧,并且每个扫描间隔仅通知一次父视图。

    相机预览 (The CameraPreview)

    The camera preview is the UIView we are going to use to show a live feed from the camera (or a simulated value for the simulator). This is a UIKit view which will eventually be presented using a UIViewRepresentable in our SwiftUI layout.

    相机预览是UIView我们将使用它来显示相机的实时供稿(或模拟器的模拟值)。 这是一个UIKit视图,最终将在我们的SwiftUI布局中使用UIViewRepresentable进行呈现。

    The view is created for a given AVCaptureSession and includes a AVCaptureVideoPreviewLayer which is based on CoreAnimation and enables us to preview the visual output from the camera session. This is what the user will eventually see as a “camera preview”. When the camera is not available, we are going to substitute the vide preview with a simple UILabel showing the mock data content we’ve provided.

    该视图是为给定的AVCaptureSession创建的,并包括一个基于CoreAnimation的AVCaptureVideoPreviewLayer ,使我们能够预览摄像头会话的视觉输出。 这就是用户最终将看到的“相机预览”。 当摄像机不可用时,我们将用一个简单的UILabel代替视频预览,该UILabel显示我们提供的模拟数据内容。

    This means a QR-code scan can be “simulated” during preview or live view in Xcode, the simulator or a UI test.

    这意味着可以在Xcode,模拟器或UI测试的预览或实时取景期间“模拟” QR码扫描。

    几乎在那里,创建UIViewRepresentable (Almost there, creating the UIViewRepresentable)

    The last piece we need is a way to show the CameraPreview view in SwiftUI. This can be achieved by implementing the framework-provided UIViewRepresentable protocol.

    我们需要的最后一块是在SwiftUI中显示CameraPreview视图的方法。 这可以通过实现框架提供的UIViewRepresentable协议来实现。

    The purpose of this protocol is for us to sort of translate the SwiftUI state and lifecycle events to UIKit. For example, in SwiftUI views are often destroyed and recreated when their state changes while in UIKit a UIView is usually kept around and updated.

    该协议的目的是让我们将SwiftUI状态和生命周期事件转换为UIKit。 例如,在SwiftUI中,视图的状态更改时通常会销毁并重新创建视图,而在UIKit中,通常会保留并更新UIView。

    The bare minimum we are going to need is:

    我们需要的最低要求是:

    • Create a CameraView and associate it with a AVCaptureSession.

      创建一个CameraView并将其与AVCaptureSession关联。

    • Check if we are running on a real device and if it is the case, request permission to access the camera.

      检查我们是否在真实设备上运行,如果是,请请求访问摄像机的权限。

    💡 Remember to add the NSCameraUsageDescription key to the Info.plist file otherwise using the camera will result in a crash.

    💡请记住将 NSCameraUsageDescription 添加 Info.plist 文件,否则使用相机会导致崩溃。

    • When the SwiftUI view is updated, we need to make sure the CameraView will also update its layout.

      更新SwiftUI视图时,我们需要确保CameraView也将更新其布局。
    • We need to correctly dispose of the capture session when SwiftUI is preparing to remove and destroy the QrCodeScannerView.

      当SwiftUI准备删除和销毁QrCodeScannerView时,我们需要正确处理捕获会话。

    Let’s tweak the QrCodeScannerView with the following additions:

    让我们对QrCodeScannerView进行以下调整:

    • The ability to request permission to use the camera

      要求许可使用相机的能力
    • The ability to setup the scanning interval from the SwiftUI view as a modifier.

      从SwiftUI视图设置扫描间隔作为修改器的功能。
    • The ability to set the mock data for use during simulation or UI Testing.

      设置模拟数据以在仿真或UI测试期间使用的能力。
    • The ability to control the torch light of the device.

      控制设备的手电筒的能力。

    Here is the complete implementation of the scanner view:

    这是扫描器视图的完整实现:

    结束 (The End)

    Now we can use the QrCodeScannerView in the SwiftUI layout. Replace the Text view with the following:

    现在我们可以在SwiftUI布局中使用QrCodeScannerView了。 将文本视图替换为以下内容:

    QrCodeScannerView()
    .found(r: self.viewModel.onFoundQrCode)
    .torchLight(isOn: self.viewModel.torchIsOn)
    .interval(delay: self.viewModel.scanInterval)

    Tadaa 🎉

    多田a

    Image for post
    Kodos app for macOS! Kodos应用程序打个招呼!
    Image for post

    翻译自: https://medium.com/dev-genius/camera-preview-and-a-qr-code-scanner-in-swiftui-48b111155c66

    qr码是二维码码

    展开全文
  • ZBar库将与OpenCV一起用于扫描和解码条形码和QR码。 一旦正确配置了ZBar和OpenCV,我将演示如何在单个图像中扫描条形码和QR码。 从单个图像开始将为我们提供准备下一步所需的练习:使用OpenCV和ZBar实时读取条形码和...
  • Android 二维码扫描框架 基于Zxing3.3的封装 Step 1. Add the JitPack repository to your build file Step 2. Add the dependency Step 3. Examples Step 4. Required permissions Step 4. Demo地址 Step 1. Add ...
  • 扫描仪scanner接口QR Code scanner or Barcode scanner for android features are present in many apps to read some useful data. In this tutorial, we’ll be discussing and implementing the Barcode API ...
  • QR (Quick Response) codes are found in many places, such as advertisements, billboards, business windows, and on products. But you don’t necessarily need a separate app to scan them—if you use ...
  • 根据路相册径扫描图片扫出参数type得出的二维码类型是QR_CODE,而官方给出的二维码类型是plus.barcode.QR; 这里所以每次导致扫码类型的匹配不成功,需要手动对QR_CODE进行判断重新传入type = 0. 同时对于扫描相册...
  • 由于公司需要实现一个扫描PDF417码的二维码扫描功能,于是我从网上找了好多的帖子和demo,但是都没有很合心意的。于是决定基于WeX5的原插件对其里面代码进行修改。(修改它的插件源码也是迫不得已,因为它本身自带的...
  • #import "ScanViewController.h" #import <...//这是使用系统框架进行的二维码扫描 //其他框架包括第三方ZBar和ZXing @interface ScanViewController ()<AVCaptureMetadataOutputObjectsDe...
  • BitMatrix matrix = writer.encode(content, BarcodeFormat.QR_CODE, 500, 500); return bitMatrix2Bitmap(matrix); } catch (WriterException e) { e.printStackTrace(); } return null; } 辅助方法: ...
  • 基于MUI框架的使用HTML5+实现的二维码扫描功能

    万次阅读 多人点赞 2017-02-09 09:24:17
    Barcode的一个实现案例 ... Barcode模块管理条码扫描,提供常见的条码(二维码及一维码)的扫描识别功能,可调用设备的摄像头对条码图片扫描进行数据输入。通过plus.barcode可获取条码码管理对象。博客有更新,修...
  • CodeScanner是一个简单的SwiftUI包装器框架,可轻松扫描QR码和条形码之类的代码。 它提供了一个CodeScannerView结构,该结构可以显示在工作表内部,以便所有扫描都在一个位置进行。 用法 您应该使用三个参数创建...
  •  Barcode模块管理条码扫描,提供常见的条码(二维码及一维码)的扫描识别功能,可调用设备的摄像头对条码图片扫描进行数据输入。通过plus.barcode可获取条码码管理对象。 二、实现的效果 ...
  • 该应用程序旨在为瑞士联邦铁路公司扫描和管理可重复使用的饮料杯上的QR码。 NativeScript代码共享 该应用程序是使用 SPA框架构建的NativeScript共享代码项目,可使用相同的应用程序逻辑为移动和Web应用程序提供服务...
  • int size = mContent.get().getResources().getDimensionPixelOffset(R.dimen.qr_code_size); //返回生成的二维码图片 return QRCodeEncoder.syncEncodeQRCode(str,size); } @Override protected void ...
  • 扫描二维码和条形码,用的是AVFoundation,判断如果是URL就打开web页面。 预览 思路 AVFoundation框架很强大,调摄像头各种硬件判断URL用正则表达式 主要代码 // // CaptureViewController.m...
  • 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说要加上二维码扫描功能,...
  • ZBarSdk 框架

    2015-08-05 13:52:10
    ZBarSdk是一个二维码扫描的sdk。利用次工具可以简单的实现二维码的扫描
  • 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。 二维条码/二维码(2-dimensional bar code)是用...
  • Android实现二维码扫描登录网页

    千次阅读 2015-08-17 16:32:52
    之前写过一个二维码扫描demo,用的Zxing的框架,点击下载,后续扫描二维码中出现一些问题,比如解决压缩图片,调整扫描窗口大小等等。后续单位要求做扫描登录实现,发现难点就是怎么知道你扫描的是这台电脑,后台...
  • 之前写过一个二维码扫描demo,用的Zxing的框架,点击下载,后续扫描二维码中出现一些问题,比如解决压缩图片,调整扫描窗口大小等等。后续单位要求做扫描登录实现,发现难点就是怎么知道你扫描的是这台电脑,后台...
  • 我们的项目使用Vue框架搭建的,经过调研最后选择用 vue-qr 这款插件来生成二维码,这里记录一下开发流程。 特殊提示:Not support IE 不支持IE浏览器 (需要支持IE的请绕道走) npm:...
  • 这是我整合了github上几个二维码扫描组件,并且改了下其中的一些小bug后的二维码扫描器,原来的框架是基于yannickl的二维码扫描器以及ZBarSDK,还特意找到了所需sdk的64位编译包,因此可以完美在64位上运行,可以...
  • 阿里Weex框架快速体验与环境搭建

    万次阅读 2016-09-30 16:36:00
    目录阿里Weex框架快速体验与环境搭建weex sdk集成到Android工程weex服务项目搭建Weex优雅的“降级”到 HTML51. 前言Weex能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,并支持...
  • iOS二维码扫描

    2016-06-28 11:37:18
    今天要介绍的是iOS7.0后AVFoundation框架提供的原生二维码扫描。 首先需要添加AVFoundation.framework框架到你工程中build phase的"Link Binary With Libraries"之下,然后就可以开始了。 一、做好准备工作,...
  • 利用AVFoundation框架实现扫码需求。 使用方式直接导入文件 JMQRCodeView.h 和.m文件 JMQRCodeView *qrView = [JMQRCodeView new]; qrView.JMQRCodeViewcaptureOutputBlock = ^(NSString *stringValue) { NSLog...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,309
精华内容 923
关键字:

qr扫描框架