Android 二維碼(基於 zxing)快速開發

目前項目須要這方面的快速開發,可是不少都是講原理的,我記錄一下本身的開發過程,和一些須要定製的東西,以便後期須要,若是你須要快速繼承,那隻須要看前兩章就能夠啦~java

基於 zxing 的 GitHub 庫

固然,zxing 是 Google 寫的一個很 NB 的庫,可是其實封裝比不太好,對於咱們快速繼承很是不友好,這邊我推薦一個 zxing-android-embedded 目前大部分二維碼都是用這個爲基礎來修改,怎麼使用呢~android

App gradle 引入

在 build.gradle 文件中:git

repositories {
    jcenter()
}

dependencies {
    compile 'com.journeyapps:zxing-android-embedded:3.6.0'
    compile 'com.android.support:appcompat-v7:25.3.1'   // Minimum 23+ is required
}
複製代碼

快速接入

打開默認的掃描界面:github

new IntentIntegrator(this).initiateScan(); // `this` 是你打開 Scan 頁面的 Activity


// Get the results:
@Override
protected void onActivityResult(int requestCode, int resultCode, 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);
    }
}
複製代碼

在你須要的Activity 進行打開便可bash

如果使用 Fragment 請使用下面代碼

IntentIntegrator.forFragment(this).initiateScan(); // `this` 是你當前的 Fragment

// 若是你沒有使用 Google support library, 使用IntentIntegrator.forSupportFragment(this) 代替。
複製代碼

一些能夠自定義的選項

IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setDesiredBarcodeFormats(IntentIntegrator.ONE_D_CODE_TYPES);//有幾個選項,ONE_D_CODE_TYPES 僅支持條形碼、PRODUCT_CODE_TYPES僅支持二維碼、ALL_CODE_TYPES 默認所有支持
integrator.setPrompt("Scan a barcode");//自定義文字
integrator.setCameraId(0);  // 使用自定義的攝像頭 0是前置,1是後置
integrator.setBeepEnabled(false);//是否有掃描成功的滴滴聲
integrator.setBarcodeImageEnabled(true);//是否保存二維碼
integrator.initiateScan();//初始化掃描界面
複製代碼

生成條碼

雖然這不是此庫的主要目的,但它確實包含生成一些條形碼類型的基本支持:app

try {
    BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
    Bitmap bitmap = barcodeEncoder.encodeBitmap("content", 
    BarcodeFormat.QR_CODE, 400, 400);
    ImageView imageViewQrCode = (ImageView) findViewById(R.id.qrCode);
    imageViewQrCode.setImageBitmap(bitmap);
} catch(Exception e) {

}
複製代碼

固然你能夠用這個作 wifi 二維碼掃描器,也很是好用。ide

改變方向(Scan 頁面默認是橫屏)

要更改方向,請在 AndroidManifest.xml 中指定方向,並讓 ManifestMerger更新 Activitygradle

<activity android:name="com.journeyapps.barcodescanner.CaptureActivity" android:screenOrientation="fullSensor" tools:replace="screenOrientation" />
複製代碼
IntentIntegrator integrator = new IntentIntegrator(this);
    integrator.setOrientationLocked(false);//是否鎖定方向
    integrator.initiateScan();
複製代碼

固然還能夠自定義掃描頁面

這個下個版會進行詳細解釋~ui

相關文章
相關標籤/搜索