# AndroidZxingLibraryX **Repository Path**: cjf_90/AndroidZxingLibraryX ## Basic Information - **Project Name**: AndroidZxingLibraryX - **Description**: 二维码扫描支持AndroidX - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-04 - **Last Updated**: 2024-03-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README AndroidZxingLibraryX **使用说明** - 可打开默认二维码扫描页面 - 支持对图片Bitmap的扫描功能 - 支持对UI的定制化操作 - 支持对条形码的扫描功能 - 支持生成二维码操作 - 支持控制闪光灯开关 **使用方式:** - **集成默认的二维码扫描页面** 在具体介绍该扫描库之前我们先看一下其具体的使用方式,看看是不是几行代码就可以集成二维码扫描的功能。 - 在module的build.gradle中执行compile操作 ``` api 'com.gitee.cjf_90:AndroidZxingLibraryX:0.0.1' ``` - 在demo Application中执行初始化操作 ``` @Override public void onCreate() { super.onCreate(); ZXingLibrary.initDisplayOpinion(this); } ``` - 在代码中执行打开扫描二维码界面操作 ``` /** * 打开默认二维码扫描界面 */ button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, CaptureActivity.class); startActivityForResult(intent, REQUEST_CODE); } }); ``` 这里的REQUEST_CODE是我们定义的int型常量。 - 在Activity的onActivityResult方法中接收扫描结果 ``` /** * 处理二维码扫描结果 */ if (requestCode == REQUEST_CODE) { //处理扫描结果(在界面上显示) if (null != data) { Bundle bundle = data.getExtras(); if (bundle == null) { return; } if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) { String result = bundle.getString(CodeUtils.RESULT_STRING); Toast.makeText(this, "解析结果:" + result, Toast.LENGTH_LONG).show(); } else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) { Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show(); } } } ``` 怎么样是不是很简单?下面我们可以来看一下具体的执行效果: - **集成对二维码图片的解析功能** - 调用系统API打开图库 ``` Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); startActivityForResult(intent, REQUEST_IMAGE); ``` - 在Activity的onActivityResult方法中获取用户选中的图片并调用二维码图片解析API ``` if (requestCode == REQUEST_IMAGE) { if (data != null) { Uri uri = data.getData(); ContentResolver cr = getContentResolver(); try { Bitmap mBitmap = MediaStore.Images.Media.getBitmap(cr, uri);//显得到bitmap图片 CodeUtils.analyzeBitmap(mBitmap, new CodeUtils.AnalyzeCallback() { @Override public void onAnalyzeSuccess(Bitmap mBitmap, String result) { Toast.makeText(MainActivity.this, "解析结果:" + result, Toast.LENGTH_LONG).show(); } @Override public void onAnalyzeFailed() { Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show(); } }); if (mBitmap != null) { mBitmap.recycle(); } } catch (Exception e) { e.printStackTrace(); } } ``` - **定制化显示扫描UI** 由于我们的扫描组件是通过Fragment实现的,所以能够很轻松的实现扫描UI的定制化。 - 在新的Activity中定义Layout布局文件 ```