您的位置:首页 > 移动开发 > Android开发

使用 ZXing Android Embedded 实现二维码扫码

2016-03-07 23:10 1371 查看
晚上折腾了一个Android上的二维码扫码功能。基于封装之后的 ZXing Android Embedded 库,原型是 Google 做的一个开源项目,叫做 ZXing(zebra crossing),Logo 是下面这匹二维马。



ZXing 本身是提供直接通过 Intent 调用 的方式来实现扫码功能的,所以 ZXing Android Embedded 库也可以直接以调用 Intent 的形式进行,显得格外简洁。同时它既提供了现成的界面,也可以充分自定义,各取所需,极为方便。

导入

使用最新版的 Android Studio ,新建一个 Project ,包含一个 Blank Activity 即可,要求 sdkVersion 在23以上。

打开 module 的
build.gradle
文件,在最外层添加下述代码:

repositories {
jcenter()
}


dependencies
中添加下述项:

compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
compile 'com.google.zxing:core:3.2.1'


点击上方自动出现的
Try again
或者手动 Sync 一下 Gradle 就可以了。

上述代码以 官方文档 最新的版本为准。

使用

在 MainActivity 的 onCreate 方法中写入下述代码。运行时如果可以出现扫码窗口,则为导入成功:

new IntentIntegrator(this).initiateScan();


可以调整参数如下:

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


竖屏

默认是横屏的,如果要调整成竖屏,新建一个 Empty Activity(我命名为 ScanActivity),内容如下:

import com.journeyapps.barcodescanner.CaptureActivity;
public class ScanActivity extends CaptureActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}


打开
AndroidManifest.xml
文件,编辑 ScanActivity 属性如下:

<activity
android:name=".ScanActivity"
android:screenOrientation="portrait"
android:stateNotNeeded="true"
android:theme="@style/zxing_CaptureTheme"
android:windowSoftInputMode="stateAlwaysHidden"
/>


在前述调整参数的代码段中添加一句:

intentIntegrator.setCaptureActivity(ScanActivity.class);


返回

onActivityResult
接收返回的结果:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if(result != null) {
if(result.getContents() == null) {
Log.d(TAG, "Cancelled");
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Log.d(TAG, "Scanned: " + result.getContents());
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
}
}
}


下面放一个简单的二维码,需要测试的可以一用:



若本文对你有帮助,请扫描左边的二维码;若本文对你没有帮助,请扫描右边的二维码。谢谢客官。

目前已有 7 人因为本文获得帮助并表达谢意,已有 2 人表示虽然没有帮助但是仍然表示感谢。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二维码 android