安卓 二维码

◆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

posted @ 2018-04-14 23:48  zhen-Android  阅读(493)  评论(0编辑  收藏  举报