上一篇文件接收了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项目。就可以实现我们需要的功能
在github上也有大神把官方的项目精简成只有单单几个我们会使用的功能的Lib 而且添加了 core.jar
然后再setting.gradle中添加
include ':app', ':libzxing'
然后 Sync 一下工程
我们再打开project structure
这时项目配置已经完成。
调取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(); } }
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动起来。。想要改颜色的话,就需要改图片资源