安卓 二維碼

來源:互聯網
上載者:User

標籤:failed   androi   cte   匯入   bin   dimen   git   ide   產生   

◆android-zxingLibrary

 

架構特性介紹

整合方便

可開啟預設二維碼掃描頁面

支援對圖片Bitmap的掃描功能

支援對UI的定製化操作

支援對條碼的掃描功能

支援產生二維碼操作

支援控制閃光燈開關

代碼部分

整合到項目:

S1.添加依賴 compile ‘cn.yipianfengye.android:zxing-library:2.2‘或匯入library源碼庫;

S2.初始化ZXingLibrary.initDisplayOpinion(this);

S3.調用logger;

 

API

使用預設

開啟預設二維碼掃描介面:

        Intent intent = new Intent(getApplication(), CaptureActivity.class);

        startActivityForResult(intent, REQUEST_CODE);

接受結果

    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        /**

         * 處理二維碼掃描結果

         */

        if (requestCode == REQUEST_CODE) {

            //處理掃描結果(在介面上顯示)

            if (null != data) {

                Bundle bundle = data.getExtras();

                if (bundle == null) {

                    return;

                }

                if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) {

                    String result = bundle.getString(CodeUtils.RESULT_STRING);

                    tvScanMsg.setText(result);

                    Toast.makeText(this, "解析結果:" + result, Toast.LENGTH_LONG).show();

                } else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) {

                    Toast.makeText(mContext, "解析二維碼失敗", Toast.LENGTH_LONG).show();

                }

            }

        }

}

自訂方式

添加CaptureFragment替換掃描布局地區

        captureFragment = new CaptureFragment();

        // 為二維碼掃描介面設定定製化介面

        CodeUtils.setFragmentArgs(captureFragment, R.layout.scan_area_layout);

        captureFragment.setAnalyzeCallback(analyzeCallback);

        getSupportFragmentManager().beginTransaction().replace(R.id.fl_scan_area, captureFragment).commit();

自訂掃描布局

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent" >

 

    <SurfaceView

        android:id="@+id/preview_view"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        />

 

    <com.uuzuche.lib_zxing.view.ViewfinderView

        android:id="@+id/viewfinder_view"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        app:inner_width="200dp"

        app:inner_height="200dp"

        app:inner_margintop="25dp"

        app:inner_corner_color="@color/red"

        app:inner_corner_length="30dp"

        app:inner_corner_width="5dp"

        app:inner_scan_bitmap="@drawable/scan_image"

        app:inner_scan_speed="10"

        app:inner_scan_iscircle="false"

        />

</FrameLayout>

掃描結果回調的處理

    /**

     * 二維碼解析回呼函數

     */

    CodeUtils.AnalyzeCallback analyzeCallback = new CodeUtils.AnalyzeCallback() {

        @Override

        public void onAnalyzeSuccess(Bitmap mBitmap, String result) {

            FwLog.d(result);

            onScanFinish(result);

        }

 

        @Override

        public void onAnalyzeFailed() {

            FwLog.d("failed...");

            onScanFinish("");

        }

    };

 

    private void onScanFinish(String result){

        Intent resultIntent = new Intent();

        Bundle bundle = new Bundle();

        bundle.putInt(CodeUtils.RESULT_TYPE, CodeUtils.RESULT_SUCCESS);

        bundle.putString(CodeUtils.RESULT_STRING, result);

        resultIntent.putExtras(bundle);

        setResult(RESULT_OK, resultIntent);

        finish();

    }

 

支援自訂掃描屬性

<declare-styleable name="innerrect">

        <attr name="inner_width" format="dimension"/><!-- 控制掃描框的寬度 -->

        <attr name="inner_height" format="dimension"/><!-- 控制掃描框的高度 -->

        <attr name="inner_margintop" format="dimension" /><!-- 控制掃描框距離頂部的距離 -->

        <attr name="inner_corner_color" format="color" /><!-- 控制掃描框四角的顏色 -->

        <attr name="inner_corner_length" format="dimension" /><!-- 控制掃描框四角的長度 -->

        <attr name="inner_corner_width" format="dimension" /><!-- 控制掃描框四角的寬度 -->

        <attr name="inner_scan_bitmap" format="reference" /><!-- 控制掃描圖 -->

        <attr name="inner_scan_speed" format="integer" /><!-- 控制掃描速度 -->

        <attr name="inner_scan_iscircle" format="boolean" /><!-- 控制小圓點是否展示 -->

    </declare-styleable>

 

參考:

    https://github.com/yipianfengye/android-zxingLibrary

 

◆BGAQRCode-Android

 

架構特性介紹

功能比較完善強大,未整合

ZXing 掃描二維碼

ZXing 識別圖庫中的二維碼圖片

可以設定用自拍掃描

可以控制閃光燈,方便夜間使用

可以定製各式各樣的掃描框

可定製全屏掃描或只識別掃描框地區內的二維碼

ZBar 掃描二維碼

代碼部分

整合到項目:

S1.添加依賴 compile ‘cn.yipianfengye.android:zxing-library:2.2‘或匯入library源碼庫;

S2.初始化ZXingLibrary.initDisplayOpinion(this);

S3.調用logger;

 

API

使用預設

開啟預設二維碼掃描介面:

 

 

支援自訂掃描屬性

<declare-styleable name="innerrect">

 

 

參考:

    https://github.com/bingoogolapple/BGAQRCode-Android  

 

◆ZxingGenerator

 

效果

架構特性介紹

花式二維碼產生,提供了6種樣式。已封裝成工具類,使用方便。

代碼部分

整合到項目:

S1.添加依賴 zxing jar包;

 

API

工具類

QRCodeUtils

QRCodeUtils.createQRCode("http://www.tmtpost.com/2536837.html")

 

參考:

    vivian8725118/ZxingGenerator 6種樣式

 

 

 

 

其他項目

    Google官方項目

    https://github.com/zxing/zxing

    另一個使用較多的,提供了幾種掃描方式,封裝不完善,需要做一些定製修改

    https://github.com/journeyapps/zxing-android-embedded

安卓 二維碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.