android 集成Zxing教程

来源:互联网 发布:linux驱动书籍 编辑:程序博客网 时间:2024/06/01 09:32

关于Zxing集成教程,网上有很多很多,我想说你妹的很多都是“copy,copy,copy”,问题是尼玛到最后还出不来。。。前几天看了android Bus网站,看到了一个集成Zxing集成,挺新颖的,就自己进一步完善了以下功能,供大家使用。

主要功能:

  • 扫描二维码
  • 相册选取照片,扫描二维码
  • 夜间,开灯关灯
  • 生成不带Logo和带Logo二维码

重点是集成,关于集成所需要的代码包,我会在文章末尾附上!

1:首先在AndroidManifest.xml中添加权限以及声明扫面Activity如下代码:

    <uses-permission android:name="android.permission.CAMERA" />    <uses-permission android:name="android.permission.FLASHLIGHT" />    <uses-feature android:name="android.hardware.camera" />    <uses-feature android:name="android.hardware.camera.autofocus" />    <uses-permission android:name="android.permission.VIBRATE" />    <uses-permission android:name="android.permission.WAKE_LOCK" />    <uses-permission android:name="android.permission.RESTART_PACKAGES" />    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    >    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />    <uses-permission android:name="android.permission.INTERNET" />
        <activity            android:name=".zxing.activity.CaptureActivity"            android:screenOrientation="portrait"            android:theme="@android:style/Theme.Black.NoTitleBar"></activity>

2:在app的build.gradle中添加如下代码:

    compile 'com.journeyapps:zxing-android-embedded:3.3.0'    compile 'com.google.zxing:core:3.2.1'

3:将drawble包下的qr_code_bg.9.png,scan_line.png,shadow.png 文件复制到工程相应目录下。(文章末尾点击地址1)
4:将raw包复制到res目录下
5:在你的color.xml文件中粘贴如下代码:

    <!--scan code -->    <color name="viewfinder_frame">#ff000000</color>    <color name="viewfinder_laser">#ffff0000</color>    <color name="viewfinder_mask">#60000000</color>    <color name="result_view">#b0000000</color>    <color name="possible_result_points">#00000000</color>    <!-- zxing -->    <item type="id" name="auto_focus"/>    <item type="id" name="decode"/>    <item type="id" name="decode_failed"/>    <item type="id" name="decode_succeeded"/>    <item type="id" name="encode_failed"/>    <item type="id" name="encode_succeeded"/>    <item type="id" name="launch_product_query"/>    <item type="id" name="quit"/>    <item type="id" name="restart_preview"/>    <item type="id" name="return_scan_result"/>    <item type="id" name="search_book_contents_failed"/>    <item type="id" name="search_book_contents_succeeded"/>

6:在strings.xml文件中粘贴如下代码:

    <!--qrcode-->    <string name="str_scan_title">扫一扫</string>    <string name="str_open_light">开启闪光灯</string>    <string name="str_close_light">关闭闪光灯</string>    <string name="str_scan_hint">取景框对准二维码, 即可自动扫描</string>

7:将zxing包copy到你的代码目录下,如下图所示:
然后将里面的导入包改一下,切记导入Zxing包下的类!

这里写图片描述

至此集成就完毕了。看下Activity中是怎么使用的:

8:将layout包下的xml文件复制到工程项目中

如果点击扫描二维码:

//点击扫描二维码Intent intent = new Intent(this, CaptureActivity.class);startActivityForResult(intent,1);

如果是点击生成二维码:

//点击生成带Logo二维码Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);imageview.setImageBitmap(QRCodeUtil.addCreateLogoQR(getApplicationContext(), "你好",                                                                                                                  bitmap,getWindowManager()));//如果是生成不带Logo的二维码,可以将addCreateLogoQR方法改为:addCreateQR

扫面返回的结果都在onActivityResult 方法中返回,

    @RequiresApi(api = Build.VERSION_CODES.KITKAT)    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if(resultCode == RESULT_OK ){            switch (requestCode){                case 1:{//   二维码扫描结果                    Bundle bundle = data.getExtras();;                    String resultStr = bundle.getString("result");                    textView.setText(resultStr);                    break;                }            }        }        if (resultCode == 999) {//相册解析二维码返回的信息            /**             * 拿到解析完成的字符串             */            String result = data.getStringExtra(CaptureActivity.scannerResultString);            textView.setText(result);        }    }

附上效果图:


上述文章所需的zxing包地址1:http://download.csdn.net/detail/lmq121210/9916640

然后附上一整个源码demo地址2:http://download.csdn.net/detail/lmq121210/9916564