小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用zxing生成QRCode二維碼,在Android的webview中調(diào)用條形碼掃描

 Tom.Lin 2013-08-16

使用zxing生成QRCode二維碼,在Android的webview中調(diào)用條形碼掃描
zxing是一個條形碼和二維碼生成及識別的java開源組件,QRcode的中文名字是:QR快速響應(yīng)矩陣碼。
1.下載zxing最新的包
到zxing的主頁: http://code.google.com/p/zxing/
下載 http://zxing./files/ZXing-1.6.zip

http://zxing./files/BarcodeScanner3.52.apk

來源:http://code.google.com/p/zxing/downloads/list
其中BarcodeScanner3.5.2.apk是安裝在Android操作系統(tǒng)的手機上的條碼掃描器安裝包。
條碼掃描器的j2me版本下載地址為:

http:///w/BarcodeReader.jad

http:///w/BarcodeReader.jar

解壓為:
D:\Java\-1.6

在dos窗口下進入到:D:\Java\zxing-1.6\core,然后運行ant命令進行編譯
(必須先安裝配置了ant。
ant最新版的下載地址為:http://ant./bindownload.cgi
下載解壓后在系統(tǒng)的環(huán)境變量中配置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\
)
編譯結(jié)果如下:
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進行編譯,編譯結(jié)果如下:
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
編譯之后得到j(luò)avase.jar這個包。

在Eclipse里新建Java工程:

編寫java代碼如下:
package com.lizongbo.;

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();// 二維碼內(nèi)容
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);
}
}

網(wǎng)址的QRcode生成如果不想編寫代碼,可以使用現(xiàn)成的google的api:

http://chart.apis.google.com/chart?chs=150?150&cht=qr&chl=http://zxing./files/BarcodeScanner3.5.2.apk&chld=L|1&choe=UTF-8

Vcard也可以生成QRcode:
參考:http://blog./archives/686
在線對二維碼進行解碼的url: http:///w/decode.jspx

在Webview中通過js也可以調(diào)用條形碼掃描,
封裝的java代碼如下:

final class BarCodeUtilHandler {
public void tryGetBarCode() {
Intent intent = new Intent(“com.google.zxing.client..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調(diào)用:window.barcodeutil.tryGetBarCode();
//function showBarCode(str) {
// try {
// document.getElementById(‘data’).value=str;
// } catch (ee) {
// }
//}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多