87497718 2018-01-02
1.简介:使用Google的开源库 Zxing,但是网上多半的使用教程都是比较早的,这里给出我总结的一些基础代码和使用规则:
首先要一定要先去官网看看:
github-Zxing官方库的地址
github-zxing-android-embedded 一个非常好用的android工具
2.导入
如果是使用android studio, 那么在gradle文件里添加以下:
compile 'com.google.zxing:core:3.2.1' 或者 compile group: 'com.google.zxing', name: 'core', version: '3.2.1'
再导入 ZXing Android Embedded
compile 'com.journeyapps:zxing-android-embedded:3.3.0'
3.扫描:
使用扫描的时候,是用到系统的服务的,是从当前的 MainActivity 跳转到 CustomScanActivity
扫描样式可以自定义
MainActivity中:
// 你也可以使用简单的扫描功能,但是一般扫描的样式和行为都是可以自定义的,这里就写关于自定义的代码了 // 你可以把这个方法作为一个点击事件 public void customScan(){ new IntentIntegrator(this) .setOrientationLocked(false) .setCaptureActivity(CustomScanActivity.class) // 设置自定义的activity是CustomActivity .initiateScan(); // 初始化扫描 }
这样就跳转到CustomActivity扫描,如果不跳转,则不需要.setCaptureActivity(CustomScanActivity.class),直接在当前页面扫描
以下方法获取结果:
@Override // 通过 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 { Toast.makeText(this,"扫描成功",Toast.LENGTH_LONG).show(); // ScanResult 为 获取到的字符串 String ScanResult = intentResult.getContents(); } } else { super.onActivityResult(requestCode,resultCode,data); } }
下面是xml样式:
<!-- 我这里只是在大局下修改了一些样式,不过其实 扫描框中的 各种激光条,边框都可以改变,有兴趣的同学可以自己去搜一下 --> <!-- 这个控件就是扫描的窗口了 --> <com.journeyapps.barcodescanner.DecoratedBarcodeView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/dbv_custom" app:zxing_framing_rect_width="200dp" app:zxing_framing_rect_height="50dp" app:zxing_preview_scaling_strategy="fitXY" app:zxing_use_texture_view="true" > </com.journeyapps.barcodescanner.DecoratedBarcodeView>
参考:
1.http://blog.csdn.net/qq_28057541/article/details/52034988
2.http://blog.csdn.net/u013718120/article/details/51683125