Andro Studio 基于Zing一维码二维码扫描代码

现在一维码二维码在我们的日常生活中使用如此的广泛,所以拥有扫码功能的APP变得非常普遍,一个安卓APP需要扫码功能就要用到zxing了,zxing是谷歌开源的让开发者更方便使用摄像头的库,而我们常用的扫码功能就是其中之一。
但是因为zxing的功能太强大了,包含了很多我们用不上的功能,所以一般都会抽取其中的扫码功能单独使用,这个抽取的过程还是有点麻烦的,但是已经有开发者为我们省去了这个过程,直接使用zxing-android-embedded 文件库,来实现扫码功能。
以AndrioSdudio开发环境为例,实现扫码功能,具体操如下:

一、扫描一维码或二维码

  1. 新建工程文件
    Andro Studio 基于Zing一维码二维码扫描代码2. 选择Basic Activity模板,也可以选择其它类型模板页,完成新建工程项目。

3.在新建工程建里,打开MainActivity文件。

在MainActivity库里引入:
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;

如下图:
Andro Studio 基于Zing一维码二维码扫描代码
4.打开项目中 Build gradle文件

在dependencies 中加入以下代码:

implementation ‘com.journeyapps:zxing-android-embedded:[email protected]
implementation ‘com.google.zxing:core:3.2.1’
如下图所示:
Andro Studio 基于Zing一维码二维码扫描代码
在res\layout\content_main.xml文件中加入以下代码:

5.在MainActivity文件中,加入相应代码:
private Button buttonscan;
如下图所示:
Andro Studio 基于Zing一维码二维码扫描代码
同时,在onCreate中加入下面代码:
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, “Replace with your own action”, Snackbar.LENGTH_LONG)
.setAction(“Action”, null).show();
}
});

    //扫描BUTON事件
    buttonscan.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

             IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
            integrator = new IntentIntegrator(MainActivity.this);
            integrator.setPrompt(" "); //底部的提示文字,设为""可以置空
            integrator.setCameraId(0); //前置或者后置摄像头
            integrator.setBeepEnabled(false); //扫描成功的「哔哔」声,默认开启
           integrator.initiateScan();

        }
    });

现在可以RUN一下了。

注:如果出现代码中有红色错误提示,程序不能运行。可以通过多编译几下程序,问题如仍未解决,可关闭工程后,重新打开。

如果代码中没有别的错误信息提示,便可出现以下:
Andro Studio 基于Zing一维码二维码扫描代码
点击扫码按钮后,出现横屏扫码界面,如下:
Andro Studio 基于Zing一维码二维码扫描代码
此时可以扫描二维码,但目前还没有得到扫描的结果。

为此,我们加入以下代码,通过 onActivityResult的方法获取 扫描回来的值。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode,resultCode,data);
if(intentResult != null) {
if(intentResult.getContents() == null) {
Toast.makeText(this,“内容为空”,Toast.LENGTH_LONG).show();
} else {
// ScanResult 为 获取到的字符串
String ScanResult = intentResult.getContents();
Toast.makeText(this, ScanResult,Toast.LENGTH_LONG).show();
edittext.setText(ScanResult);
}
} else {
super.onActivityResult(requestCode,resultCode,data);
}
}

再次运行程序,通过扫描后,可得到扫码结果,如下图:
Andro Studio 基于Zing一维码二维码扫描代码
以上是扫码全部内容。

如果想有微信竖屏和相关界面,还需要对库中代码做相应改动,请继续看第二部分。