【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]