公 众 号:码代
本文作者: @MuMu
编写日期:2024年03月24日
本笔墨数:1244个字符
关注可相识更多的教程。问题或建议,请公众号留言;
择要:
本文主要介绍使用Android和Android studio完成开辟一个二维码生成和辨认小工具。本文小工具的二维码生成模块可以把文本内容生成二维码,二维码辨认(扫描)模块可以辨认标准的二维码并把辨认结果表现出来。
本文小工具(安卓二维码辨认和生成工具)提供源码下载方式,源码获取方式见文章未处。
/ 开始 /
结果演示
首页生成二维码扫描扫描结果 开辟
创建项目
打开Android studio 选择一个空模板创建一个Android项目
修改项目
生成二维码和扫码需要使用zxing库,以是在app的build.gradle文件里添加zxing库的设置。
- implementation 'com.google.zxing:core:3.4.0'
- implementation 'com.journeyapps:zxing-android-embedded:4.2.0'
复制代码
页面创建
创建项目时Android studio自动默认为我们创建了MianActivity,我们可以把MianActivity作为项目标首页。我们再创建一个ScanActivity作为扫码二维码的页面。
首页功能
首页设计包含一个二维码内容的输入框组件(EditText),表现二维码图片组件(IamgeView),生成二维码按钮组件(Button),扫码二维码按钮(Button)组件。
首页逻辑
在输入框输入二维码内容后点击生成二维码按钮,生成二维码并使用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组件,用来扫二维码。
扫码页面逻辑
扫码页面我们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://mp.weixin.qq.com/s/uV_kP-IvVusmqWPMxU4KDg
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |