继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

基于ZXing Android实现生成二维码图片和相机扫描二维码图片即时解码的功能

一只名叫tom的猫
关注TA
已关注
手记 526
粉丝 62
获赞 331

NextQRCode ZXing开源库的精简版

基于ZXing Android实现的二维码扫描支持库。 包括生成二维码图片、解析二维码图片和相机扫描即时解码三部分功能。

图片描述

与原ZXingMini项目对比

NextQRCode做了重大架构修改,原ZXingMini项目与当前NextQRCode不兼容

图片描述

dependencies {
    compile 'com.github.yoojia:next-qrcode:2.0-2'
    ...
}

生成二维码图案

图片描述

// 二维码中间图标final Bitmap centerImage = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);// 生成的二维码图案Bitmap qrCodeImage = new QRCodeEncoder.Builder()
        .width(size) // 二维码图案的宽度
        .height(size)
        .paddingPx(0) // 二维码的内边距
        .marginPt(3) // 二维码的外边距
        .centerImage(centerImage) // 二维码中间图标
        .build()
        .encode(content);

二维码解码

final QRCodeDecoder mDecoder = new QRCodeDecoder.Builder().build();// 传入二维码图案Bitmap对象然后解码成文本内容String content = mDecoder.decode(bitmap);

使用 LiveCameraView 自动扫描解码

public class QRCodeScanActivity extends AppCompatActivity {    public static final String TAG = QRCodeScanActivity.class.getSimpleName();    private LiveCameraView mLiveCameraView;    private ImageView mCaptureImage;    private TextView mContentView;    private final CaptureCallback mCaptureCallback = new CaptureCallback() {        @Override public void onCaptured(Bitmap bitmap) {
            Log.i(TAG, "-> Got bitmap, show to capture view");
            mCaptureImage.setImageBitmap(bitmap);
            Observable.just(bitmap)
                    .map(new Func1<Bitmap, String>() {                        private final QRCodeDecoder mDecoder = new QRCodeDecoder.Builder().build();                        @Override
                        public String call(Bitmap bitmap) {                            return mDecoder.decode(bitmap);
                        }
                    })
                    .subscribeOn(Schedulers.computation())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Action1<String>() {                        @Override public void call(String content) {
                            mContentView.setText(content);
                        }
                    });
        }
    };    @Override
    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);
        Window window = getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        setContentView(R.layout.activity_scan);
        mCaptureImage = (ImageView) findViewById(R.id.capture_image);
        mContentView = (TextView) findViewById(R.id.content);
        mLiveCameraView = (LiveCameraView) findViewById(R.id.capture_preview_view);
        mLiveCameraView.setPreviewReadyCallback(new CameraPreviewView.PreviewReadyCallback() {            @Override
            public void onStarted(Camera camera) {
                Log.i(TAG, "-> Camera started, start to auto capture");
                mLiveCameraView.startAutoCapture(1500, mCaptureCallback);
            }            @Override
            public void onStopped() {
                Log.i(TAG, "-> Camera stopped");
                mLiveCameraView.stopAutoCapture();
            }
        });
    }

}

**基于ZXing Android实现生成二维码图片和相机扫描二维码图片即时解码的功能

原文链接:http://www.apkbus.com/blog-919651-77371.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP