【Android学习】Android二维码工具开辟

打印 上一主题 下一主题

主题 527|帖子 527|积分 1581

公 众 号:码代
本文作者: @MuMu
编写日期:2024年03月24日
本笔墨数:1244个字符
关注可相识更多的教程。问题或建议,请公众号留言;
  

择要:
   本文主要介绍使用Android和Android studio完成开辟一个二维码生成和辨认小工具。本文小工具的二维码生成模块可以把文本内容生成二维码,二维码辨认(扫描)模块可以辨认标准的二维码并把辨认结果表现出来。
  本文小工具(安卓二维码辨认和生成工具)提供源码下载方式,源码获取方式见文章未处。
  
/ 开始 /

结果演示

首页生成二维码
扫描扫描结果
开辟

创建项目

打开Android studio 选择一个空模板创建一个Android项目


  • 选择项目模板



  • 设置填写项目初始化信息

修改项目

生成二维码和扫码需要使用zxing库,以是在app的build.gradle文件里添加zxing库的设置。
  1. implementation 'com.google.zxing:core:3.4.0'
  2. implementation 'com.journeyapps:zxing-android-embedded:4.2.0'
复制代码

页面创建

创建项目时Android studio自动默认为我们创建了MianActivity,我们可以把MianActivity作为项目标首页。我们再创建一个ScanActivity作为扫码二维码的页面。



首页功能

首页设计包含一个二维码内容的输入框组件(EditText),表现二维码图片组件(IamgeView),生成二维码按钮组件(Button),扫码二维码按钮(Button)组件。

首页逻辑



  • 生成二维码
在输入框输入二维码内容后点击生成二维码按钮,生成二维码并使用ImageView表现生成的二维码图片。
  1. private void createQRCOde(){
  2.     // 获取输入框内容
  3.     textToEncode = etQRCodeText.getText().toString();
  4.     if (textToEncode.length()==0) {
  5.         showToast("请输入内容"); return;
  6.     }
  7.     try {
  8.         // 使用 MultiFormatWriter 生成 BitMatrix
  9.         BitMatrix bitMatrix = new MultiFormatWriter().encode(textToEncode, BarcodeFormat.QR_CODE, 500, 500);
  10.         // 使用 BarcodeEncoder 将 BitMatrix 转换为 Bitmap
  11.         BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
  12.         Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
  13.         // 在 ImageView 中显示生成的二维码
  14.         qrcode_image.setImageBitmap(bitmap);
  15.     } catch (Exception e) {
  16.         e.printStackTrace();
  17.     }
  18. }
复制代码


  • 扫码二维码
点击扫码按钮跳转扫码页面
  1. private void toScan(){
  2.     startActivity(new Intent(context, ScanActivity.class));
  3. }
复制代码
扫码页面功能

扫码页面包含一个com.journeyapps.barcodescanner.CompoundBarcodeView组件,用来扫二维码。

扫码页面逻辑

扫码页面我们CompoundBarcodeView组件来处理扫描二维码,应用获取摄像头权限后
申请摄像头权限
  1. // 检查摄像头权限
  2. if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)
  3.         != PackageManager.PERMISSION_GRANTED) {
  4.     // 如果应用没有摄像头权限,请求权限
  5.     Toast.makeText(this, "请设置摄像头权限", Toast.LENGTH_SHORT).show();
  6.     ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA},
  7.             200);
  8. } else {
  9.     scan();  // 有权限执行扫码函数
  10. }
复制代码
  1. // 扫码函数
  2. private void scan(){
  3.         barcodeView.resume();
  4.         barcodeView.decodeContinuous(new BarcodeCallback() {
  5.             @Override
  6.             public void barcodeResult(BarcodeResult result) {
  7.                 if (result.getText() != null) {
  8.                     barcodeView.pause();
  9.                     showScanResultDialog(context, result.getText());
  10.                 }
  11.             }
  12.             @Override
  13.             public void possibleResultPoints(List<ResultPoint> resultPoints) {
  14.             }
  15.         });
  16.     }
复制代码


  • 表现扫码结果
  1. // 二维码扫码结果显示函数
  2. private   void showScanResultDialog(Context context, String scanResult) {
  3.     AlertDialog.Builder builder = new AlertDialog.Builder(context);
  4.     builder.setTitle("扫码结果");
  5.     builder.setCancelable(false);
  6.     LayoutInflater inflater = LayoutInflater.from(context);
  7.     View dialogView = inflater.inflate(R.layout.dialog_scan_result, null);
  8.     builder.setView(dialogView);
  9.     TextView textView = dialogView.findViewById(R.id.text_scan_result);
  10.     textView.setText(scanResult);
  11.     builder.setPositiveButton("复制", new DialogInterface.OnClickListener() {
  12.         @Override
  13.         public void onClick(DialogInterface dialogInterface, int i) {
  14.             copyToClipboard(scanResult);
  15.             scan();
  16.         }
  17.     });
  18.     builder.setNegativeButton("关闭", new DialogInterface.OnClickListener() {
  19.         @Override
  20.         public void onClick(DialogInterface dialogInterface, int i) {
  21.             scan();
  22.         }
  23.     });
  24.     AlertDialog dialog = builder.create();
  25.     dialog.show();
  26. }
复制代码
获取源码

关注公众号回复关键词 安卓二维码 获取源码以及其资料。

https://mp.weixin.qq.com/s/uV_kP-IvVusmqWPMxU4KDg

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

老婆出轨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表