我整个上午一直在研究将android条形码扫描仪应用程序集成到网页中,但还没有找到我需要知道的内容。我希望有一个网页,用户可以使用Android条形码扫描仪填写文本字段。因此,用户将在网页上,并在文本字段内单击或单击文本字段旁边的按钮,该按钮将启动Android条形码扫描程序。然后他们将扫描条形码并填写文本字段。
我找到了如何执行此操作的解决方案,然后转到其他页面,但用户必须停留在同一页面上。我已经看过zxing项目,并认为可以使用,但我不确定它是否允许页面保持不变。
我很确定这是可能的,并且想知道是否有人可以给我一个关于他们如何做的高级概述。我认为可以通过点击按钮提交的ajax请求来完成。 ajax请求将被发送到我的服务器,服务器会向Android设备发送一些内容,启动扫描程序并返回数据,然后在ajax响应中返回。有没有办法切断服务器,只是让Android浏览器启动条码扫描器?感谢您的时间,我感谢您的任何讨论。
答案 0 :(得分:21)
ZXing(斑马线)提供了通过网页通过按钮点击事件,锚标记或其他可以在移动设备上调用URL的操作启动条形码扫描程序的功能。
当条形码扫描仪应用程序安装在Android设备上时,URL调用:
zxing://scan/?ret=http://foo.com/products/{CODE}/description&SCAN_FORMATS=UPC_A,EAN_13
将调出设备条形码阅读器,用户扫描代码,并通过zxing URL中提供的回调URL参数返回代码。
您可以在此处查看示例(适用于Android):http://zxing.appspot.com/scan
答案 1 :(得分:6)
您可以尝试使用Android:
您可以使用Zxing库进行网页条形码扫描
<!DOCTYPE html>
<script type="text/javascript">
//This entire block of script should be in a separate file, and included in each doc in which you want scanner capabilities
function zxinglistener(e){
localStorage["zxingbarcode"] = "";
if(e.url.split("\#")[0] == window.location.href){
window.focus();
processBarcode(decodeURIComponent(e.newValue));
}
window.removeEventListener("storage", zxinglistener, false);
}
if(window.location.hash != ""){
localStorage["zxingbarcode"] = window.location.hash.substr(1);
self.close();
window.location.href="about:blank";//In case self.close is disabled
}else{
window.addEventListener("hashchange", function(e){
window.removeEventListener("storage", zxinglistener, false);
var hash = window.location.hash.substr(1);
if (hash != "") {
window.location.hash = "";
processBarcode(decodeURIComponent(hash));
}
}, false);
}
function getScan(){
var href = window.location.href.split("\#")[0];
window.addEventListener("storage", zxinglistener, false);
zxingWindow = window.open("zxing://scan/?ret=" + encodeURIComponent(href + "#{CODE}"),'_self');
}
</script>
<html>
<head>
<script type="text/javascript">
function processBarcode(b){
var d = document.createElement("div");
d.innerHTML = b;
document.body.appendChild(d);
}
</script>
</head>
<body>
<button onclick="getScan()">get Scan</button>
</body>
</html>
供参考:Read link
答案 2 :(得分:1)
使用javascript界面和loadurl(javascript ...),您可以通过Android与您的网页进行通信
public void loadScript(String script){
webview.loadUrl("javascript:(function() { " + script + "})()");
}
private class JavaScriptInterface {
public void startQRScan() {
...
}
}
google上有很多例子。