使用zxing生成QRCode二维码,在Android的webview中调用条形码扫描
2011-01-25 14:41
1056 查看
使用zxing生成QRCode二维码,在Android的webview中调用条形码扫描
作者:lizongbo 发表于:21:41. 星期二, 十一月 23rd, 2010版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。
http://618119.com/archives/2010/11/23/194.html
使用zxing生成QRCode二维码,在Android的webview中调用条形码扫描
zxing是一个条形码和二维码生成及识别的java开源组件,QRcode的中文名字是:QR快速响应矩阵码。
1.下载zxing最新的包
到zxing的主页: http://code.google.com/p/zxing/
下载 http://zxing.googlecode.com/files/ZXing-1.6.zip
http://zxing.googlecode.com/files/BarcodeScanner3.52.apk
来源:http://code.google.com/p/zxing/downloads/list
其中BarcodeScanner3.5.2.apk是安装在Android操作系统的手机上的条码扫描器安装包。
条码扫描器的j2me版本下载地址为:
http://zxing.org/w/BarcodeReader.jad
http://zxing.org/w/BarcodeReader.jar
解压为:
D:/Java/zxing-1.6
在dos窗口下进入到:D:/Java/zxing-1.6/core,然后运行ant命令进行编译
(必须先安装配置了ant。
ant最新版的下载地址为:http://ant.apache.org/bindownload.cgi
下载解压后在系统的环境变量中配置ANT_HOME:例如:ANT_HOME=D:/Java/apache-ant-1.7.0;
Path中必须有ant的bin目录,例如:
Path=D:/Java/jdk1.6.0_21/bin;D:/Java/apache-maven-2.0.9/bin;D:/Perl/site/bin;D:/
Perl/bin;D:/Java/apache-ant-1.7.0/bin;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/
System32/Wbem;D:/Programs/svn-win32-1.5.4/bin;C:/Program Files/TortoiseSVN/bin;C
:/Program Files/QuickTime/QTSystem/
)
编译结果如下:
D:/Java/zxing-1.6/core>ant
Buildfile: build.xml
clean:
build:
init:
compile:
[mkdir] Created dir: D:/Java/zxing-1.6/core/build
[javac] Compiling 171 source files to D:/Java/zxing-1.6/core/build
[jar] Building jar: D:/Java/zxing-1.6/core/core.jar
BUILD SUCCESSFUL
Total time: 6 seconds
编译之后得到core.jar这个包。
再进入D:/Java/zxing-1.6/javase目录使用ant进行编译,编译结果如下:
D:/Java/zxing-1.6/javase>ant
Buildfile: build.xml
init:
build:
[mkdir] Created dir: D:/Java/zxing-1.6/javase/build
[javac] Compiling 6 source files to D:/Java/zxing-1.6/javase/build
[jar] Building jar: D:/Java/zxing-1.6/javase/javase.jar
BUILD SUCCESSFUL
Total time: 1 second
编译之后得到javase.jar这个包。
在Eclipse里新建Java工程:
编写java代码如下:
package com.lizongbo.qrcode;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Hashtable;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
public class QRCodeGen {
private static final int BLACK = 0xFF000000;
private static final int WHITE = 0xFFFFFFFF;
/**
* @param args
* @throws WriterException
* @throws IOException
*/
public static void main(String[] args) throws WriterException, IOException {
String picFormat = “png”;
StringBuilder sb = new StringBuilder(1024);
java.io.InputStreamReader fr = new InputStreamReader(
new FileInputStream(“d://quickli.vcf”), “GBK”);
BufferedReader br = new BufferedReader(fr);
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line).append(“/r/n”);
}
String str = sb.toString();// 二维码内容
System.out.println(str.length() + “|str==” + str);
str = new String(str.getBytes(“GBK”), “ISO-8859-1″);
String path = “d:/lzb”;
Hashtable hints = new Hashtable();
// hints.put(EncodeHintType.CHARACTER_SET, “GBK”);
BitMatrix bitMatrix = new MultiFormatWriter().encode(str,
BarcodeFormat.QR_CODE, 400, 400, hints);
/**
* begin 这段代码等同于就是 MatrixToImageWriter.writeToFile(bitMatrix, picFormat,
* file);
* 直接这样写就不用引用javase.jar
*/
int width = bitMatrix.getWidth();
int height = bitMatrix.getHeight();
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_ARGB);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
image.setRGB(x, y, bitMatrix.get(x, y) ? BLACK : WHITE);
}
}
File file = new File(path + “.” + picFormat);
ImageIO.write(image, picFormat, file);
/**
* end 这段代码等同于就是 MatrixToImageWriter.writeToFile(bitMatrix, picFormat,
* file);
*/
MatrixToImageWriter.writeToFile(bitMatrix, picFormat, file);
}
}
网址的QRcode生成如果不想编写代码,可以使用现成的google的api:
http://chart.apis.google.com/chart?chs=150×150&cht=qr&chl=http://zxing.googlecode.com/files/BarcodeScanner3.5.2.apk&chld=L|1&choe=UTF-8
Vcard也可以生成QRcode:
参考:http://blog.yslifes.com/archives/686
在线对二维码进行解码的url: http://zxing.org/w/decode.jspx
在Webview中通过js也可以调用条形码扫描,
封装的java代码如下:
final class BarCodeUtilHandler {
public void tryGetBarCode() {
Intent intent = new Intent(“com.google.zxing.client.android.SCAN”);
// intent.putExtra(“SCAN_MODE”, “QR_CODE_MODE”);
startActivityForResult(intent, 0);
}
};
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
Log.v(TAG, “onActivityResult===” + requestCode + “,” + resultCode + “,”
+ intent);
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra(“SCAN_RESULT”);
String format = intent.getStringExtra(“SCAN_RESULT_FORMAT”);
webview.loadUrl(“javascript:showBarCode(/’” + format + “|”
+ contents + “/’)”);
} else if (resultCode == RESULT_CANCELED) {
webview.loadUrl(“javascript:showBarCode(/’没有找到条码!/’)”);
}
}
}
//webview.addJavascriptInterface(new BarCodeUtilHandler(), “barcodeutil”);
//javascript调用:window.barcodeutil.tryGetBarCode();
//function showBarCode(str) {
// try {
// document.getElementById(‘data’).value=str;
// } catch (ee) {
// }
//}
Tags: Android, QRCode, zxing, 二维码, 条形码
相关文章推荐
- 使用zxing生成QRCode二维码,在Android的webview中调用条形码扫描(转)
- Android 使用Zxing实现二维码的生成,扫描
- Android基于Zxing实现二维码,条形码扫描和生成二维码
- Android 使用Zxing实现二维码的生成,扫描
- Android使用zxing-android-embedded(由zxing开发)实现二维码生成和扫描
- Android 使用Zxing实现二维码的生成,扫描
- Android基于Google Zxing实现二维码/条形码扫描、生成二维码/条形码
- Android 使用Zxing实现二维码的生成,扫描
- 在Android中使用 Google ZXing 实现二维码、条形码扫描
- android 使用开源库zxing生成二维码,扫描二维码【转】
- Android 使用Zxing 扫描二维码 和生成二维码
- Android及Java使用google.zxing生成和解码(解析)二维码(QRCode)
- android 使用开源库zxing生成二维码,扫描二维码
- 在Android中使用 Google ZXing 实现二维码、条形码扫描
- android 使用开源库zxing生成二维码,扫描二维码
- Android 使用zxing扫描二维码横屏转竖屏
- C# .Net 使用zxing.dll生成二维码,条形码
- Android ZXing 二维码、条形码扫描介绍
- [C#]二维码生成、解码(QRCode)【支持winform、web调用】
- Android ZXing二维码、条形码的生成和解析