Android 使用Zxing实现二维码的生成,扫描

Android开发--Zxing库实现二维码/条形码扫描识别 阅读详情


在项目中要使用到二维码的相关内容,百度之后得知一半都是使用Google的开源库 Zxing,但是网上多半的使用教程都是比较早的,这里给出我总结的一些基础代码和使用规则:

首先要一定要先去官网看看:

github-Zxing官方库的地址 
github-zxing-android-embedded 一个非常好用的android工具

1. 如何导入

如果是使用Android studio, 那么在gradle文件里添加以下:

compile 'com.google.zxing:core:3.2.1'

或者

compile group: 'com.google.zxing', name: 'core', version: '3.2.1'
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

给大家一个网址 在这个里面可以搜索到可以用的Maven库

导入 ZXing Android Embedded

repositories {
    jcenter()
}

dependencies {
    compile 'com.journeyapps:zxing-android-embedded:3.3.0'
    compile 'com.android.support:appcompat-v7:23.1.0'   // Version 23+ is required || 要求版本23以上
}

android {
    buildToolsVersion '23.0.2' // Older versions may give compile errors || 更早的版本可能会报错
}
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

如何生成一个二维码?

以下这个方法,传入一个字符串,生成一个二维码的Bitmap,可以用于显示

Bitmap encodeAsBitmap(String str){
        Bitmap bitmap = null;
        BitMatrix result = null;
        MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
        try {
            result = multiFormatWriter.encode(str, BarcodeFormat.QR_CODE, 200, 200);
            // 使用 ZXing Android Embedded 要写的代码
            BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
            bitmap = barcodeEncoder.createBitmap(result);
        } catch (WriterException e){
            e.printStackTrace();
        } catch (IllegalArgumentException iae){ // ?
            return null;
        }

        // 如果不使用 ZXing Android Embedded 的话,要写的代码

//        int w = result.getWidth();
//        int h = result.getHeight();
//        int[] pixels = new int[w * h];
//        for (int y = 0; y < h; y++) {
//            int offset = y * w;
//            for (int x = 0; x < w; x++) {
//                pixels[offset + x] = result.get(x, y) ? BLACK : WHITE;
//            }
//        }
//        bitmap = Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888);
//        bitmap.setPixels(pixels,0,100,0,0,w,h);

        return bitmap;
    }
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

是不是使用ZXing Android Embedded的好处就很明显了?之后的扫描和生成功能,就不分开讨论了


如何扫描?

使用扫描的时候,是用到系统的服务的,是从当前的 MainActivity 跳转到 CustomScanActivity 

扫描的样式是完全 可以 自定义的

以下是相关代码:

MainActivity中:

// 你也可以使用简单的扫描功能,但是一般扫描的样式和行为都是可以自定义的,这里就写关于自定义的代码了
// 你可以把这个方法作为一个点击事件
public void customScan(){
        new IntentIntegrator(this)
        .setOrientationLocked(false)
        .setCaptureActivity(CustomScanActivity.class) // 设置自定义的activity是CustomActivity
        .initiateScan(); // 初始化扫描
    }
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
@Override
// 通过 onActivityResult的方法获取 扫描回来的 值
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode,resultCode,data);
        if(intentResult != null) {
            if(intentResult.getContents() == null) {
                Toast.makeText(this,"内容为空",Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(this,"扫描成功",Toast.LENGTH_LONG).show();
                // ScanResult 为 获取到的字符串
                String ScanResult = intentResult.getContents();
            }
        } else {
            super.onActivityResult(requestCode,resultCode,data);
        }
    }
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

CustomScanActivity 添加了 打开闪光灯button,和两个做样子的button

对应的 layout 文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.zhaojun.zxingtest.CustomScanActivity">


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="SwitchLight"
        android:id="@+id/btn_switch"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hint_1"
        android:id="@+id/btn_hint1"
        android:layout_alignTop="@+id/btn_switch"
        android:layout_centerHorizontal="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hint_2"
        android:id="@+id/btn_hint2"
        android:layout_alignTop="@+id/btn_hint1"
        android:layout_alignParentEnd="true" />

<!-- 我这里只是在大局下修改了一些样式,不过其实 扫描框中的 各种激光条,边框都可以改变,有兴趣的同学可以自己去搜一下 -->
<!-- 这个控件就是扫描的窗口了 -->
    <com.journeyapps.barcodescanner.DecoratedBarcodeView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/dbv_custom"
        app:zxing_framing_rect_width="200dp"
        app:zxing_framing_rect_height="50dp"

        app:zxing_preview_scaling_strategy="fitXY"
        app:zxing_use_texture_view="true"
        android:layout_above="@+id/btn_switch"
        android:layout_alignEnd="@+id/btn_hint2">
    </com.journeyapps.barcodescanner.DecoratedBarcodeView>

</RelativeLayout>

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

Java文件 其中有使用 ButterKnife

public class CustomScanActivity extends AppCompatActivity implements DecoratedBarcodeView.TorchListener{ // 实现相关接口
    // 添加一个按钮用来控制闪光灯,同时添加两个按钮表示其他功能,先用Toast表示

    @BindView(R.id.btn_switch) Button swichLight;
    @BindView(R.id.btn_hint1) Button hint1Show;
    @BindView(R.id.btn_hint2) Button hint2Show;
    @BindView(R.id.dbv_custom) DecoratedBarcodeView mDBV;

    private CaptureManager captureManager;
    private boolean isLightOn = false;

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

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

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

    @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        super.onSaveInstanceState(outState, outPersistentState);
        captureManager.onSaveInstanceState(outState);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        return mDBV.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_custom_scan);
        ButterKnife.bind(this);

        mDBV.setTorchListener(this);

        // 如果没有闪光灯功能,就去掉相关按钮
        if(!hasFlash()) {
            swichLight.setVisibility(View.GONE);
        }

        //重要代码,初始化捕获
        captureManager = new CaptureManager(this,mDBV);
        captureManager.initializeFromIntent(getIntent(),savedInstanceState);
        captureManager.decode();
    }

    // torch 手电筒
    @Override
    public void onTorchOn() {
        Toast.makeText(this,"torch on",Toast.LENGTH_LONG).show();
        isLightOn = true;
    }

    @Override
    public void onTorchOff() {
        Toast.makeText(this,"torch off",Toast.LENGTH_LONG).show();
        isLightOn = false;
    }

    // 判断是否有闪光灯功能
    private boolean hasFlash() {
        return getApplicationContext().getPackageManager()
                .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
    }

    // 点击切换闪光灯
    @OnClick(R.id.btn_switch)
    public void swichLight(){
        if(isLightOn){
            mDBV.setTorchOff();
        }else{
            mDBV.setTorchOn();
        }
    }
}

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89

核心代码其实很少,比较容易掌握

转自:http://blog.youkuaiyun.com/qq_28057541/article/details/52034988 


解锁未来:探秘Zxing二维码技术的神奇世界 Zxing是一项由Google开发和维护的开源二维码处理库,旨在为开发者提供强大而灵活的二维码识别、生成和解析功能。作为业界领先的二维码技术之一,Zxing在各个领域都有着广泛的应用。背景和起源:Zxing最初于2006年由Google工程师Sean Owen和其他贡献者创建,并于2007年开源发布。其名字来源于“zebra crossing”,意味着像斑马线一样将信息从纸质世界转移到数字世界。Zxing的初衷是为了简化二维码的处理和识别过程,使其更加普及和便捷。 阅读详情

相关推荐

Android 详解使用 Zxing实现前置摄像头扫描二维码、生成二维码

现在二维码使用越来越广泛了,几乎处处可见,并且 公司相关的项目中几乎全部都和二维码扫描有关,所以总结一下自己的使用心路历程,总觉得要做点什么来记录自己的成长,让自己的成长有迹可循,如果恰好能够帮助到你,我当然会很开心啦。 废话结束,正文开始 Android中常用的就是zxing,开源项目地址:https://github.com/zxing/zxing 一、 二、 三、 四、 ...

Happy的博客 8816

使用zxing来生成二维码

在使用zxing生成二维码时,我们需要先准备好相关的依赖和jar包,并使用QRCodeWriter类来生成普通的二维码。无论是生成普通的二维码还是带有Logo的二维码,zxing都是一个非常实用的工具。而在二维码的生成过程中,zxing是一款非常优秀的开源库,它提供了一系列的API,可以帮助我们快速、方便地生成二维码。在使用zxing生成二维码之前,我们需要先下载zxing的jar包,并将其导入到项目中。除了普通的二维码之外,我们还可以生成带有Logo的二维码。三、生成带有Logo的二维码。

qinshengfei的专栏 6078

android studio zxing 生成和扫描二维码

加依赖 implementation 'com.journeyapps:zxing-android-embedded:3.6.0' //生成 implementation 'com.google.zxing:javase:3.0.0' MainActivity package wlt.com.hyjj; import android.content.Intent; import a...

qq_38218307的博客 2212

zxing的使用及优化

二维码介绍 zxing项目是谷歌推出的用来识别多种格式条形码的开源项目,项目地址为https://github.com/zxing/zxing,zxing有多个人在维护,覆盖主流编程语言,也是目前还在维护的较受欢迎的二维码扫描开源项目之一。 zxing的项目很庞大,主要的核心代码在core文件夹里面,也可以单独下载由这个文件夹打包而成的jar包,具体地址在http://mvnreposit

lambert 7万+

Android集成Zxing实现二维码的扫描与生成(含动态权限)

不诗意的女程序猿不是好厨师~ 【转载请注明出处:From李诗雨】 目前在做一个和机顶盒相关的app,项目中需要使用二维码扫描来绑定机顶盒。 由于工期的原因,也没时间细细研究,只是粗略集成了一下。 在此,又重新写了一个demo,以示记录。 源码demo:点击下载。 Demo说明: ①实现二维码的扫描 ②实现二维码的生成 ③使用RxPermissions做了动态

cjm2484836553的博客 1万+

【深度解析】Zxing:开源条形码图像处理库的领航者

Zxing作为一款成熟且功能全面的开源条形码图像处理库,凭借其优秀的性能、广泛的格式支持和易用性,已成为众多企业和个人开发者在条形码识别和生成领域的首选工具。无论是初学者还是经验丰富的开发者,Zxing都能提供所需的一切,帮助你构建高效、可靠的条形码处理系统。未来,随着技术的不断进步,Zxing也将持续演进,为用户提供更多创新功能,推动条形码技术的发展。如果你正寻找一款强大而灵活的条形码处理库,Zxing无疑是最佳选择之一。

u013558123的博客 3294

Android中二维码的扫描与生成(zxing库)

2.集成java源码,将demo工程QrScan中app/src/main/java/目录下包中的zxing和util复制到此工程对应的app/src/main/java的包下。layout复制activity_capture.xml,activity_scanner.xml,toolbar_scanner.xml。values复制/替换其中的attrs.xml,ids.xml,colors.xml。1.将获取的jar包复制到工程的app/libs目录下,刷新,然后去添加依赖。...

Ai1114的博客 3万+

Android中使用ZXing实现二维码生成与扫描实战

ZXing(发音为“zebra crossing”)是一个开源的、跨平台的二维码图像处理库,广泛应用于二维码的生成与扫描识别。它支持多种格式的一维码和二维码,如QR Code、EAN、UPC、Code 39、Code 93等。ZXing最初由Google开发并开源,经过多年发展,已成为Android平台上最主流的二维码处理解决方案之一。选择ZXing的原因在于其强大的功能、良好的社区支持以及跨平台适应能力。它不仅支持多种图像格式解析,还提供了灵活的API接口,便于开发者进行功能扩展和界面定制。

weixin_29867767的博客 1282

Android 使用Zxing 扫描二维码 和生成二维码

6.1 二维码的使用场景及原理 概念:二维码又称 QR Code , QR 全称 Quick Response ,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型。 原理:二维条码 / 二维码( 2-dimensional bar code )是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图 形记

MissGentlemen的博客 558

Android应用中的二维码名片生成与扫描使用ZXing库

二维码名片,顾名思义,就是使用二维码技术生成的一种新型电子名片。与传统纸质名片相比,它具有存储容量大、携带方便、无需打印等优点。二维码名片通常包含了个人或企业的基本信息,如姓名、职位、联系方式等,甚至可以嵌入头像、社交网络链接等多媒体信息。通过扫描二维码名片,接收者可以快速地在他们的设备上存储这些信息,而不需要手动输入。二维码名片的核心优势之一是能够直接链接到电子邮箱、社交媒体或企业网站等,从而快速启动进一步的沟通与互动。

weixin_42430341的博客 980

Android Studio集成Zxing实现二维码生成与扫描完整教程

Zxing(Zebra Crossing)是一个开源的、多格式条形码和二维码处理库,广泛应用于各类移动平台。在Android开发中,Zxing因其高效性、稳定性以及良好的可扩展性,成为实现二维码生成与扫描功能的首选工具。// 示例:使用Zxing快速生成二维码核心代码片段该库支持QR Code、EAN、UPC、Code 128等多种格式,底层采用模块化设计,core模块负责编码解码逻辑,而则封装了Android平台的UI与相机交互组件。

weixin_42514750的博客 1633

Android Studio基于zxing的第三方库zxing-android-embedded实现生成二维码与扫描二维码

为了在APP中添加扫码功能,需要用到相关的开源库,最常见的是zxing库和zbar库,zbar很多年前就已经不再维护了,xing还在维护,但是使用起来比较复杂。为了使用起来更方便,于是选择基于zxing集成的第三方库zxing-android-embedded。主要参考了第三方ZXing库zxing-android-embedded使用及自定义与安卓Zxing的简单使用-(生成二维码与扫一扫)这两...

weixin_44520881的博客 5159

简化版Zxing:Android条形码与二维码扫描生成实现

htmltable {th, td {th {pre {简介:在Android应用开发中,Zxing是一个广泛使用的开源库,用于条码和二维码的读写。本指南介绍了如何对Zxing进行简化,以便仅包含扫描和生成条形码和二维码的基础功能,从而减小应用体积并提升性能。简化后的Zxing关注于核心的扫描引擎、图像预处理、实时扫描、权限管理、编码引擎、参数设置、图像渲染以及分享功能。

weixin_35750953的博客 980

Android使用zxing-android-embedded(由zxing开发)实现二维码生成和扫描

前言:目前二维码(条形码)的使用非常广泛,所以啊,就想去实现以下嘛,最简单的方法就是选择开源库了。在网上一查开源库还是很多的,介绍使用最多的就是zxing,所以这里也就是用zxing了。但是由于zxing开源库太大了,有很多不是Android要用的,所以网上很多都是介绍将zxing库中Android用到内容重新封装使用。但是对于新手来说还是不太好操作的,我看了下,大部分都是拷贝原工程的一部分代码,然

yueding 6778

Livox MID-360与FAST-LIO2实战:从驱动部署到参数调优的完整指南

激光雷达惯性里程计(LIO)是机器人定位与建图(SLAM)领域的核心技术,它通过紧耦合融合激光雷达点云与惯性测量单元(IMU)数据,实现高精度、低漂移的位姿估计。其核心原理在于利用IMU的高频数据预测运动,并用激光雷达的精确测距信息进行校正与优化,从而在快速运动或特征缺失场景下保持鲁棒性。这项技术的工程价值在于为自动驾驶、移动机器人及三维重建提供了可靠的前端里程计解决方案。针对Livox MID-360固态雷达与FAST-LIO2这一热门组合,其应用场景广泛覆盖了室内外导航与地图构建。本文聚焦于**驱动部署

weixin_29997523的博客 445

霍尔安装歪了也能用?揭秘无感FOC中的‘霍尔自学习’黑科技,实现信号线自适应

本文揭秘了无感FOC中的‘霍尔自学习’黑科技,即使霍尔安装歪了或信号线接错,电机仍能平稳运转。该技术通过算法创新解决了传统霍尔方案的安装公差、接线容错和校准成本问题,显著提升了电机控制的可靠性和效率。文章详细解析了自学习算法的实现架构、关键技术及工程实践中的优化方案,展示了其在工业应用中的卓越性能。

weixin_28309571的博客 463

Android二维码的扫描和生成(ZXing)

最近在做项目的时候,遇到了一个绑定设备的问题,讨论之后,遂采用二维码技术。听起来是否很高大,感觉实现起来没有头绪,不用担心,早有牛人写好,我们直接用他写的开源代码包即可,原始的开源代码包非常大,装载和编译起来不容易,所以我们把开源代码包简化了,只保留生成二维码和扫描二维码的代码内容,下载地址在内容后,这样就方便多了,废话不多说,以下为实现的图和代码:

Danielntz的博客 1213

NXP S32K3 Safety软件生态全解析:RTD、SPD、SAF、SCST到底怎么选?

本文深入解析NXP S32K3系列MCU的安全软件生态,详细对比RTD、SPD、SAF和SCST四大组件的功能定位与选型策略。针对不同ASIL等级需求,提供从架构设计到工程实践的完整解决方案,帮助开发者高效实现功能安全认证,优化汽车电子系统的安全性与可靠性。

weixin_42524226的博客 323

使用Zxing实现二维码的扫描和生成(内附安卓6.0动态权限获取)

第一步:GitHub搜索Zxing第三方库 第二步:导入依赖 //ZXing implementation 'cn.yipianfengye.android:zxing-library:2.2' 第三步:初始化–创建一个app.java–记得在清单文件中注册 public class App extends Application { @Override public ...

qq_25560357的博客 620

学习记录-Simpack生成车轮不圆的几种示例

单阶、多阶和实测车轮多边形的添加教程

weixin_51965897的博客 3706

NIDS——suricata(一)

NIDS——suricata环境安装和规则编写

weixin_58666006的博客 1273
上一篇: 热敏打印机打印二维码图片
下一篇: Android Zxing 扫描的简单的demo
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值