在项目中如何使用ZXing

上一篇文件接收了github的项目结构

其中

android文件夹就是一个完整的工程, 它所使用的lib也就是core,android文件夹里的那个工程创建了基本上所有zxing提供的功能

我们想要使用ZXing ,其实就是把android项目以lib的形式导入到我们的项目中,来使用就可以

而android中的项目的使用必须依赖 core 所有我们需要把 core文件夹编译成 core.jar

想要编译 core文件夹

首先可以在core下看到pom.XML

这代表core是使用Maven包管理软件的。

所有需要使用maven来编译该包(是因为core包也可能会依赖别的包。。。maven可以下载它所需,然后输出我们core.jar)


在ZXing github 帮助文档里面

提拱了一个地址我们可以在maven 上下载到最新为3.2.1的core.jar http://repo1.maven.org/maven2/com/google/zxing/core/


然后再倒入core.JAR。编译android项目。就可以实现我们需要的功能


在实际使用中,我们根本用不到android文件夹下官方项目的那么多功能。

在github上也有大神把官方的项目精简成只有单单几个我们会使用的功能的Lib 而且添加了 core.jar

https://github.com/xuyisheng/ZXingLib
然后将libzxing导入到自己的项目中
这时可以在AS 中project结构里面看到这个文件夹

然后再setting.gradle中添加

include ':app'':libzxing'

然后 Sync 一下工程



这时基本完成功能


我们再打开project structure 

给l项目添加libzxing的依赖

这时项目配置已经完成。



使用:


    调取libzxing中的CaptureActivity来生成一个扫条码的Activity

 

Intent openCameraIntent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(openCameraIntent, 0);

然后再你的主Activity中重写onActivityResult来获取CaptureActivity返回的数据

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            Bundle bundle = data.getExtras();
            String scanResult = bundle.getString("result");
            Snackbar.make(fab,scanResult,Snackbar.LENGTH_LONG).show();
        }
    }

至于何时跳转Activity 取决于项目需求



生成 二维码


String text = editText.getText().toString().trim();
if (!TextUtils.isEmpty(text)) {
    Bitmap qrCodeBitmap = EncodingUtils.createQRCode(text, 400, 400,
            checkBox.isChecked() ?
                    BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher) : null);
    imageView.setImageBitmap(qrCodeBitmap);
}

这个库是精简版,而且 去除了原官方的Viewfindview 这个自定义类(使用Ondraw画出扫描框效果的自定义类),取而代之为使用XML来实现扫描效

果,不方便的就是他是使用TranlateAnimation动画来让ImageView动起来。。想要改颜色的话,就需要改图片资源