Skip to content
This repository has been archived by the owner. It is now read-only.
基于ZXing Android实现的QRCode扫描支持库。包括`生成二维码图片`和`相机扫描二维码图片即时解码`两部分功能。
Branch: master
Clone or download
Latest commit b2667f1 Oct 8, 2016
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app
gradle/wrapper Optimized capture delay Sep 28, 2016
qrcode Update README Oct 8, 2016
.gitignore 完成基本功能 Mar 3, 2015
README.md Update README Oct 8, 2016
build.gradle Optimized capture delay Sep 28, 2016
gradle.properties 完成基本功能 Mar 3, 2015
gradlew 完成基本功能 Mar 3, 2015
gradlew.bat 完成基本功能 Mar 3, 2015
settings.gradle Update show QRCode Sep 27, 2016

README.md

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();
            }
        });
    }

}
You can’t perform that action at this time.