安卓开发中使用ZXing生成解析二维码
编码示例
package com.wolf_pan.qrcodesample; import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout; 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 java.util.HashMap; public class EncodingSampleActivity extends AppCompatActivity {
private LinearLayout encodingSampleLinearLayout;
private EditText textToEncodeEditText;
private ImageView encodedImageView;
private final String tag = "EncodingSampleActivity"; @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_encoding_sample);
encodingSampleLinearLayout = findViewById(R.id.encodingSampleLinearLayout);
textToEncodeEditText = findViewById(R.id.textToEncodeEditText);
encodedImageView = findViewById(R.id.encodedImageView);
findViewById(R.id.encodeButton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String contents = textToEncodeEditText.getText().toString();
if (contents.isEmpty())
contents = "在此输入要编码的文本";
try {
int width = encodingSampleLinearLayout.getWidth() - 50, height = width;
HashMap<EncodeHintType, String> hints = new HashMap<>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
BitMatrix bitMatrix = new QRCodeWriter().encode(contents, BarcodeFormat.QR_CODE, width, height, hints);
int[] colors = new int[width * height];
for (int y = 0; y < height; ++y) {
for (int x = 0; x < width; ++x)
colors[width * y + x] = bitMatrix.get(x, y) ? Color.RED : Color.WHITE;
}
Bitmap qrcodeBitmap = Bitmap.createBitmap(colors, width, height, Bitmap.Config.RGB_565);
encodedImageView.setImageBitmap(qrcodeBitmap);
} catch (WriterException ex) {
Log.e(tag, "ex: " + ex);
}
}
});
}
}
解码示例
package com.wolf_pan.qrcodesample; import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView; import com.google.zxing.BinaryBitmap;
import com.google.zxing.RGBLuminanceSource;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.QRCodeReader; import java.io.IOException; public class DecodingSampleActivity extends AppCompatActivity {
private ImageView qrcodeToDecodeImageView;
private TextView decodedTextView;
private Bitmap bitmap;
private final String tag = "DecodingSampleActivity"; @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_decoding_sample);
qrcodeToDecodeImageView = findViewById(R.id.qrcodeToDecodeImageView);
decodedTextView = findViewById(R.id.decodedTextView);
findViewById(R.id.decodeButton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
int width = bitmap.getWidth(), height = bitmap.getHeight();
int[] pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
String decoded = new QRCodeReader().decode(new BinaryBitmap(new HybridBinarizer(new RGBLuminanceSource(width, height, pixels)))).getText();
decodedTextView.setText(decoded);
} catch (Exception ex) {
Log.e(tag, "ex: " + ex);
}
}
});
try {
bitmap = BitmapFactory.decodeStream(getAssets().open("qrcode_qq.png"));
qrcodeToDecodeImageView.setImageBitmap(bitmap);
} catch (IOException ex) {
Log.e(tag, "ex: " + ex);
}
}
}
安卓开发中使用ZXing生成解析二维码的更多相关文章
- Java使用ZXing生成/解析二维码图片
ZXing是一种开源的多格式1D/2D条形码图像处理库,在Java中的实现.重点是在手机上使用内置摄像头来扫描和解码设备上的条码,而不与服务器通信.然而,该项目也可以用于对桌面和服务器上的条形码进行编 ...
- 使用zxing生成解析二维码
1. 前言 随着移动互联网的发展,我们经常在火车票.汽车票.快餐店.电影院.团购网站以及移动支付等各个场景下见到二维码的应用,可见二维码以经渗透到人们生活的各个方面.条码.二维码以及RFID被人们应用 ...
- java生成/解析二维码
package a; import java.awt.BasicStroke; import java.awt.Graphics; import java.awt.Graphics2D; import ...
- APS.NET MVC4生成解析二维码简单Demo
一.视图 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewpor ...
- JAVA生成解析二维码
package com.mohe.twocode; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.B ...
- C# PDF、winform 生成解析二维码
PDF 生成.解析二维码 界面样式: 第一步:下载ThoughtWorks.QRCode.dll 类并引用 地址 http://download.csdn.net/detail/liwb1987/8 ...
- python zxing包解析二维码报UnicodeDecodeError错误解决办法
一般错误的原因是这个库不支持中文的解码(二维码内容包含中文). 修改如下: 进入zxing.__init__.py代码中,类BarCode下,parse方法中: 找到下面这两行原代码如下: 1 raw ...
- Zxing和QR Code生成和解析二维码
本文是学习慕课网课程<Java生成二维码>(http://www.imooc.com/learn/531)的笔记. 一.二维码的分类 线性堆叠式二维码.矩阵式二维码.邮政码. 二.二维码的 ...
- java生成二维码/java解析二维码
二维码的优缺点 优点:1. 高密度编码,信息容量大:2.编码范围广:3.容错能力强:4.译码可靠性高:5.可引入加密措施:6.成本低,易制作,持久耐用. 缺点:1.二维码技术成为手机病毒.钓鱼网站传播 ...
随机推荐
- Terracotta服务器的不同配置方式
Terracotta服务器的不同配置方式 博客分类: 企业应用面临的问题 Java&Socket 开源组件的应用 Terracotta双机多机镜像服务器阵列分片模式企业应用 Terracott ...
- bzoj3000 Big Number 数论,斯特林公式
Description 给你两个整数N和K,要求你输出N!的K进制的位数. Input 有多组输入数据,每组输入数据各一行,每行两个数——N,K Output 每行一个数为输出结果 Sample In ...
- 线程池的使用。好文。mark【http://blog.csdn.net/rwecho/article/details/21157289】
介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端执行一个异步任务你还只是如下new T ...
- sqlserver通过设计器修改表结构保存时提示:保存到文本问题
在sqlserver通过设计器修改表结构后保存时提示:保存到文本问题,这个问题可能通过修改设置项解决 工具>选项>设计器> 在弹出的窗口是把“阻止保存要求重新创建表的更改”选项的 ...
- Ubuntu MySQL的安装使用
删除 mysql sudo apt-get autoremove --purge mysql-server-5.0 sudo apt-get remove mysql-server sudo apt- ...
- 【HDOJ5978】To begin or not to begin(概率)
题意:有k个黑球和1个红球,两个轮流抽,抽到红球算赢,问先手赢的概率大还是后手大还是相等 k<=1e5 思路:手算前几项概率 大胆猜想 #include<cstdio> #inclu ...
- vue之监听事件
一.v-on 可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码. 简写形式 用@代替 v-on: <button v-on:click="co ...
- 洛谷P1865 A % B Problem
1.洛谷P1865 A % B Problem 题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行 ...
- Servlet(生命周期)
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" ...
- send to instance already dealloc nil error
这个是因为发送消息的对象已经被dealloc了,然后再次发送[release]请求就不行了.所以可以retain或者alloc对象 if (self.buttonsList) { ...