老婆出轨 发表于 2024-9-3 00:52:53

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

公 众 号:码代
本文作者: @MuMu
编写日期:2024年03月24日
本笔墨数:1244个字符
关注可相识更多的教程。问题或建议,请公众号留言;
https://i-blog.csdnimg.cn/blog_migrate/a2f0a016604b719d984429036ea65a63.png
择要:
   本文主要介绍使用Android和Android studio完成开辟一个二维码生成和辨认小工具。本文小工具的二维码生成模块可以把文本内容生成二维码,二维码辨认(扫描)模块可以辨认标准的二维码并把辨认结果表现出来。
本文小工具(安卓二维码辨认和生成工具)提供源码下载方式,源码获取方式见文章未处。
/ 开始 /
结果演示

首页生成二维码https://i-blog.csdnimg.cn/blog_migrate/786c4d99594066fbb994b32c715ca230.pnghttps://i-blog.csdnimg.cn/blog_migrate/83955dfe0504b9148af561a1f60e5d0d.png扫描扫描结果https://i-blog.csdnimg.cn/blog_migrate/693a4563cd01f44d5bb1ada9e491f6aa.pnghttps://i-blog.csdnimg.cn/blog_migrate/930574d2d23c4b6cd14cb2ffa857bdc5.png 开辟

创建项目

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


[*]选择项目模板
https://i-blog.csdnimg.cn/blog_migrate/0c3a1bac6e65051ca464996f34b909c6.png


[*]设置填写项目初始化信息
https://i-blog.csdnimg.cn/blog_migrate/bd6aae7ccfbfad9eccc8ac391689865d.png
修改项目

生成二维码和扫码需要使用zxing库,以是在app的build.gradle文件里添加zxing库的设置。
implementation 'com.google.zxing:core:3.4.0'
implementation 'com.journeyapps:zxing-android-embedded:4.2.0'
https://i-blog.csdnimg.cn/blog_migrate/f9bbf776111aa811d8ca18239406ad6c.png
页面创建

创建项目时Android studio自动默认为我们创建了MianActivity,我们可以把MianActivity作为项目标首页。我们再创建一个ScanActivity作为扫码二维码的页面。
https://i-blog.csdnimg.cn/blog_migrate/a2a8f73e54d2cf7a30e9dd8905a515c4.png
https://i-blog.csdnimg.cn/blog_migrate/d1d8f86d57b45d8bfc47bb11facc9eee.png
https://i-blog.csdnimg.cn/blog_migrate/45d6e47fa57a0ff7061553732d6d3153.png
首页功能

首页设计包含一个二维码内容的输入框组件(EditText),表现二维码图片组件(IamgeView),生成二维码按钮组件(Button),扫码二维码按钮(Button)组件。
https://i-blog.csdnimg.cn/blog_migrate/76d3c278bb633a41dcb44ac3d326ddfd.png
首页逻辑



[*]生成二维码
在输入框输入二维码内容后点击生成二维码按钮,生成二维码并使用ImageView表现生成的二维码图片。
private void createQRCOde(){
    // 获取输入框内容
    textToEncode = etQRCodeText.getText().toString();
    if (textToEncode.length()==0) {
      showToast("请输入内容"); return;
    }

    try {
      // 使用 MultiFormatWriter 生成 BitMatrix
      BitMatrix bitMatrix = new MultiFormatWriter().encode(textToEncode, BarcodeFormat.QR_CODE, 500, 500);

      // 使用 BarcodeEncoder 将 BitMatrix 转换为 Bitmap
      BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
      Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);

      // 在 ImageView 中显示生成的二维码
      qrcode_image.setImageBitmap(bitmap);

    } catch (Exception e) {
      e.printStackTrace();
    }
}


[*]扫码二维码
点击扫码按钮跳转扫码页面
private void toScan(){
    startActivity(new Intent(context, ScanActivity.class));
}
扫码页面功能

扫码页面包含一个com.journeyapps.barcodescanner.CompoundBarcodeView组件,用来扫二维码。
https://i-blog.csdnimg.cn/blog_migrate/c875e9a3d49e817dd9e1004a289a9f44.png
扫码页面逻辑

扫码页面我们CompoundBarcodeView组件来处理扫描二维码,应用获取摄像头权限后
申请摄像头权限
// 检查摄像头权限
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)
      != PackageManager.PERMISSION_GRANTED) {
    // 如果应用没有摄像头权限,请求权限
    Toast.makeText(this, "请设置摄像头权限", Toast.LENGTH_SHORT).show();
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA},
            200);
} else {
    scan();// 有权限执行扫码函数
}
// 扫码函数
private void scan(){
      barcodeView.resume();
      barcodeView.decodeContinuous(new BarcodeCallback() {
            @Override
            public void barcodeResult(BarcodeResult result) {
                if (result.getText() != null) {
                  barcodeView.pause();
                  showScanResultDialog(context, result.getText());
                }
            }

            @Override
            public void possibleResultPoints(List<ResultPoint> resultPoints) {

            }
      });
    }


[*]表现扫码结果
// 二维码扫码结果显示函数
private   void showScanResultDialog(Context context, String scanResult) {
    AlertDialog.Builder builder = new AlertDialog.Builder(context);

    builder.setTitle("扫码结果");
    builder.setCancelable(false);

    LayoutInflater inflater = LayoutInflater.from(context);
    View dialogView = inflater.inflate(R.layout.dialog_scan_result, null);
    builder.setView(dialogView);
    TextView textView = dialogView.findViewById(R.id.text_scan_result);
    textView.setText(scanResult);

    builder.setPositiveButton("复制", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialogInterface, int i) {
            copyToClipboard(scanResult);
            scan();
      }
    });

    builder.setNegativeButton("关闭", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialogInterface, int i) {
            scan();
      }
    });


    AlertDialog dialog = builder.create();
    dialog.show();
}
获取源码

关注公众号回复关键词 安卓二维码 获取源码以及其资料。
https://i-blog.csdnimg.cn/blog_migrate/a2e450a169ad17c2feaa8a48fa41c58c.png
https://mp.weixin.qq.com/s/uV_kP-IvVusmqWPMxU4KDg

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【Android学习】Android二维码工具开辟