初学安卓之二维码的简单实现,flutter中文文档

本文介绍了在Android中如何实现二维码的生成和扫描。首先,通过ZXing库生成不同颜色和带有logo的二维码,接着讲解如何开启真机调试,集成ZXing库,并创建Scanner活动以实现扫描功能。在AndroidManifest.xml中添加权限,最后展示扫描二维码后的结果显示。
摘要由CSDN通过智能技术生成

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:layout_alignParentEnd=“true”

android:text="@string/firstTest"

app:layout_constraintEnd_toEndOf=“parent”

app:layout_constraintStart_toStartOf=“parent”

app:layout_constraintTop_toTopOf=“parent” />

<Button

android:id="@+id/btn"

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:text="@string/generate_btn"

app:layout_constraintTop_toBottomOf="@+id/editText"

app:layout_constraintEnd_toEndOf=“parent”

app:layout_constraintStart_toStartOf=“parent”/>

<ImageView

android:id="@+id/imageView"

android:layout_width=“256dp”

android:layout_height=“256dp”

android:layout_centerInParent=“true”

app:layout_constraintBottom_toBottomOf=“parent”

app:layout_constraintEnd_toEndOf=“parent”

app:layout_constraintStart_toStartOf=“parent”

app:layout_constraintTop_toTopOf=“parent” />

</androidx.constraintlayout.widget.ConstraintLayout>

https://www.baidu.com

生成二维码

  1. AndroidManifest.xml中注册(Android Studio会自动生成)

<application

  1. 要实现二维码的生成,主要是靠zxing提供的接口和方法,在GenerateQRcode文件中新建一个generateSimpleBitmap方法用于生成二维码,参数为二维码内容、宽和高,并将参数传入到QRCodeWriterencode方法生成BitMatrix对象,创建一个大小为二维码宽*高的数组,根据BitMatrix对象,往其中放置黑白色块,最后使用createBitmap返回一个Bitmap对象

private Bitmap generateSimpleBitmap(String content, int width, int height) {

// 字符串内容判空

if (TextUtils.isEmpty(content)) {

Toast.makeText(getApplicationContext(),“输入为空!”,Toast.LENGTH_LONG).show();

return null;

}

QRCodeWriter qrCodeWriter = new QRCodeWriter();

Map<EncodeHintType, String> hints = new HashMap<>();

hints.put(EncodeHintType.CHARACTER_SET, “utf-8”);

try {

BitMatrix encode = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, width, height, hints);

int[] pixels = new int[width * height];

for (int y = 0; y < height; y++) {

for (int x = 0; x < width; x++) {

if (encode.get(x, y)) {

pixels[y * width + x] = 0x00000000;

} else {

pixels[y * width + x] = 0xFFFFFFFF;

}

}

}

return Bitmap.createBitmap(pixels, 0, width, width, height, Bitmap.Config.RGB_565);

} catch (WriterException e) {

e.printStackTrace();

}

return null;

}

  1. GenerateQRcode文件中的onCreate引用,将结果注入布局的ImageView组件中

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.generate_qrcode);

btn = (Button)findViewById(R.id.btn);

editText = (EditText)findViewById(R.id.editText);

imageView = (ImageView)findViewById(R.id.imageView);

btn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

String content = editText.getText().toString();

Bitmap qrBitmap = generateSimpleBitmap(content,256, 256);

imageView.setImageBitmap(qrBitmap);

}

});

}

  1. 实现结果

SimpleBitmap

修改二维码颜色


  1. 在以上基础上,在GenerateQRcode文件中新建一个generateQRCodeBitmap方法,相比generateSimpleBitmap,参数多了两个颜色,一个为原二维码黑点的颜色,另一个为原来白色的背景颜色

public Bitmap generateQRCodeBitmap(String content, int width, int height,

int color_point, int color_back) {

//字符串内容判空

if (TextUtils.isEmpty(content)) {

Toast.makeText(getApplicationContext(),“输入为空!”,Toast.LENGTH_LONG).show();

return null;

}

Map<EncodeHintType, String> hints = new HashMap<>();

//格式utf-8

hints.put(EncodeHintType.CHARACTER_SET, “utf-8”);

//空白边距设置

hints.put(EncodeHintType.MARGIN, “1”);

try {

//生成BitMatrix对象encode

BitMatrix encode = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);

//生成宽*高的像素数组

int[] pixels = new int[width * height];

for (int y = 0; y < height; y++) {

for (int x = 0; x < width; x++) {

i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值