Android开发生成二维码功能的效果展现
来源:爱站网时间:2020-06-23编辑:网友分享
因为微信的普及,二维码,现在在许多应用程序中都会使用,接下来爱站技术频道为大家介绍Android 点击生成二维码功能实现代码,可以参考下文的介绍。
因为微信的普及,二维码,现在在许多应用程序中都会使用,接下来爱站技术频道为大家介绍Android开发生成二维码功能的效果展现,可以参考下文的介绍。
先看效果:
输入内容,点击生成二维码:
点击logo图案:
代码:
QRCodeUtil:
package com.example.administrator.zxing; import android.graphics.Bitmap; import android.graphics.Canvas; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class QRCodeUtil { public static boolean createQRImage(String content, int widthPix, int heightPix, Bitmap logoBm, String filePath) { try { if (content == null || "".equals(content)) { return false; } //配置参数 Maphints = new HashMap(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); //容错级别 hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); //设置空白边距的宽度 // hints.put(EncodeHintType.MARGIN, 2); //default is 4 // 图像数据转换,使用了矩阵转换 BitMatrix bitMatrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, widthPix, heightPix, hints); int[] pixels = new int[widthPix * heightPix]; // 下面这里按照二维码的算法,逐个生成二维码的图片, // 两个for循环是图片横列扫描的结果 for (int y = 0; y
MainActivity:
package com.example.administrator.zxing; import android.content.Context; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; import java.io.File; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //内容 final EditText contentET = (EditText) findViewById(R.id.create_qr_content); //显示二维码图片 final ImageView imageView = (ImageView) findViewById(R.id.create_qr_iv); //是否添加Logo final CheckBox addLogoCB = (CheckBox) findViewById(R.id.create_qr_addLogo); Button createQrBtn = (Button) findViewById(R.id.create_qr_btn); createQrBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final String filePath = getFileRoot(MainActivity.this) + File.separator + "qr_" + System.currentTimeMillis() + ".jpg"; //二维码图片较大时,生成图片、保存文件的时间可能较长,因此放在新线程中 new Thread(new Runnable() { @Override public void run() { boolean success = QRCodeUtil.createQRImage(contentET.getText().toString().trim(), 800, 800, addLogoCB.isChecked() ? BitmapFactory.decodeResource(getResources(), R.mipmap.qr_logo) : null, filePath); if (success) { runOnUiThread(new Runnable() { @Override public void run() { imageView.setImageBitmap(BitmapFactory.decodeFile(filePath)); } }); } } }).start(); } }); } //文件存储根目录 private String getFileRoot(Context context) { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File external = context.getExternalFilesDir(null); if (external != null) { return external.getAbsolutePath(); } } return context.getFilesDir().getAbsolutePath(); } }
布局:
activity_main:
通过爱站技术频道小编为大家带来的介绍,相信大家对Android开发生成二维码功能的效果展现都有了一定的了解,而项目开发的好,这对公司的好处,大家可想而知。