欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 超簡易Zxing框架 生成二維碼+掃碼功能

 更新時(shí)間:2020年09月11日 11:38:56   作者:一條屈依  
這篇文章主要介紹了Android 超簡易Zxing框架 生成二維碼+掃碼功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

zxing是一個(gè)二維碼的框架。

配置

1、

在這里插入圖片描述

implementation 'com.journeyapps:zxing-android-embedded:4.1.0'
如果報(bào)錯(cuò)在這個(gè)文件的android下加上如下配置,讓其支持Java1.8,不然只有1.7、1.6
(可在'app'右鍵---->open module settings------>Module看到)

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }

2、

在這里插入圖片描述

<uses-sdk tools:overrideLibrary="com.google.zxing.client.android" /> 
<uses-permission android:name="android.permission.CAMERA"/>

記得點(diǎn)擊Sync Now

生成二維碼

步驟:
1、自定義一個(gè)負(fù)責(zé)生成二維碼的類,方便調(diào)用,返回一個(gè)Bitmap

要點(diǎn):利用Zxing中的 BarcodeEncoderencodeBitmap方法

public Bitmap encodeBitmap(String contents, BarcodeFormat format, int width, int height, Map<EncodeHintType, ?> hints) throws WriterException

encodeBitmap方法

參數(shù) 內(nèi)容
contents 碼的內(nèi)容
format 碼的類型(二維碼、條形碼…)
width 碼的寬度
height 碼的高度
hints 碼的額外參數(shù)

Map<EncodeHintType, ?> hints碼的額外參數(shù)
這里列舉了一些常用的
這些都是Zxing中定義好的

參數(shù) 內(nèi)容
EncodeHintType.ERROR_CORRECTION 設(shè)置容錯(cuò)率 L>M>Q>H 等級(jí)越高掃描時(shí)間越長,準(zhǔn)確率越高
EncodeHintType.CHARACTER_SET 設(shè)置字符集
EncodeHintType.MARGIN 設(shè)置邊距

QRcode類

package com.example.xianyu;
import android.graphics.Bitmap;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import com.journeyapps.barcodescanner.BarcodeEncoder;
import java.util.HashMap;
import java.util.Map;

public class QRcode{
  public Bitmap qrcode(String content){
  int width = 400;
  int height = 400;
    //HashMap設(shè)置二維碼參數(shù)
    Map map = new HashMap();
    //  設(shè)置容錯(cuò)率 L>M>Q>H 等級(jí)越高掃描時(shí)間越長,準(zhǔn)確率越高
    map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
    //設(shè)置字符集
    map.put(EncodeHintType.CHARACTER_SET,"utf-8");
    //設(shè)置外邊距
    map.put(EncodeHintType.MARGIN,1);
    //利用編碼器,生成二維碼
    BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
    Bitmap bitmap = null;
    try {
      bitmap = barcodeEncoder.encodeBitmap(content, BarcodeFormat.QR_CODE, width, height,map);
    } catch (WriterException e) {
      e.printStackTrace();
    }
    return bitmap;
  }
}

2、在要生成二維碼的Activity,調(diào)用上述類,輸入二維碼內(nèi)容生成二維碼,之后顯示在ImageView組件上

MainActivity

public class MainActivity extends AppCompatActivity {
 ImageView Code;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Code = findViewById(R.id.iv_code);
    QRcode qrcode = new QRcode();
    Bitmap bitmap= qrcode.qrcode("CSDN");
    Code.setImageBitmap(bitmap);
    }

成功獲得二維碼內(nèi)容

在這里插入圖片描述

掃碼

步驟:
1、給點(diǎn)擊掃碼的組件添加點(diǎn)擊監(jiān)聽事件

2、在監(jiān)聽事件中,利用IntentstartActivityForResult跳到Zxing定義好的默認(rèn)的掃碼界面CaptureActivity中(也可以自定義掃碼界面)

3、重寫onActivityResult方法處理二維碼返回的內(nèi)容

要點(diǎn):
其中的REQUEST_CODEZxing是定義好的,一定要使用這個(gè)CODE
不然在onActivityResult方法中解析二維碼將會(huì)不起作用

IntentIntegrator.parseActivityResult(requestCode, resultCode, data);

這段源碼可知REQUEST_CODE要相等才會(huì)進(jìn)行二維碼解析,否則將會(huì)返回 null

public static IntentResult parseActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == REQUEST_CODE) {
      return parseActivityResult(resultCode, intent);
    }
    return null;
  }

設(shè)置監(jiān)聽:

Code.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
       Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
       startActivityForResult(intent,REQUEST_CODE);
     }
   });

重寫Activity中的onActivityResult得到二維碼內(nèi)容,我這里只是將獲得的內(nèi)容進(jìn)行簡單的輸出

@Override
  protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
      IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    if(result != null) {
      if(result.getContents() == null) {
        Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
      } else {
        Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
      }
    } else {
      super.onActivityResult(requestCode, resultCode, data);
    }
    }

總結(jié)

更多內(nèi)容請(qǐng)到github查看:https://github.com/zxing/zxing

到此這篇關(guān)于Android 超簡易Zxing框架 生成二維碼+掃碼功能的文章就介紹到這了,更多相關(guān)Android Zxing框架生成二維碼+掃碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論