Android条形码扫描仪与网页的集成
我整个上午都在研究如何将android条形码扫描仪应用程序集成到网页中,但还没有找到我需要知道的确切信息。我想有一个网页,用户可以填写文本字段使用安卓条码扫描仪。因此,用户将在网页上,或者单击文本字段内部,或者单击文本字段旁边的按钮,启动android条形码扫描仪。然后,他们将扫描条形码,并填写文本字段 我已经找到了解决方法,可以这样做,然后转到另一个页面,但重要的是用户保持在同一个页面上。我看过zxing项目,认为它可能可以使用,但我不确定它是否允许页面保持不变Android条形码扫描仪与网页的集成,android,webpage,barcode,Android,Webpage,Barcode,我整个上午都在研究如何将android条形码扫描仪应用程序集成到网页中,但还没有找到我需要知道的确切信息。我想有一个网页,用户可以填写文本字段使用安卓条码扫描仪。因此,用户将在网页上,或者单击文本字段内部,或者单击文本字段旁边的按钮,启动android条形码扫描仪。然后,他们将扫描条形码,并填写文本字段 我已经找到了解决方法,可以这样做,然后转到另一个页面,但重要的是用户保持在同一个页面上。我看过zxing项目,认为它可能可以使用,但我不确定它是否允许页面保持不变 我很确定这是可能的,我想知道是
我很确定这是可能的,我想知道是否有人能给我一个他们将如何做的高层次概述。我在想,它可能可以通过一个通过点击按钮提交的ajax请求来完成。ajax请求将被发送到我的服务器,服务器将发送一些东西到android设备,该设备将启动扫描仪并返回数据,这些数据将在ajax响应中返回。有没有办法切断服务器,让android浏览器启动条形码扫描器?谢谢您抽出时间,我很感谢您的讨论 使用javascript界面和加载URL(javascript…),您可以从Android与您的网页进行通信
public void loadScript(String script){
webview.loadUrl("javascript:(function() { " + script + "})()");
}
private class JavaScriptInterface {
public void startQRScan() {
...
}
}
谷歌上有很多例子。(斑马线)提供了通过网页通过按钮点击事件、锚定标记或其他可能调用移动设备上URL的操作启动条形码扫描仪的功能
当条形码扫描仪应用程序安装在android设备上时,URL调用:
zxing://scan/?ret=http://foo.com/products/{CODE}/description&SCAN_FORMATS=UPC_A,EAN_13
将打开设备条形码阅读器,用户扫描代码,然后通过zxing URL中提供的回调URL参数返回代码
您可以在此处查看一个示例(适用于android):您可以在android上尝试: 您可以使用Zxing库对网页进行条形码扫描
//整个脚本块应该放在一个单独的文件中,并包含在每个需要扫描仪功能的文档中
函数zxinglistener(e){
本地存储[“zxingbarcode”]=“”;
if(e.url.split(“\\#”)[0]==window.location.href){
window.focus();
processBarcode(解码组件(例如newValue));
}
window.removeEventListener(“存储”,zxinglistener,false);
}
if(window.location.hash!=“”){
localStorage[“zxingbarcode”]=window.location.hash.substr(1);
self.close();
window.location.href=“about:blank”;//如果禁用self.close
}否则{
addEventListener(“hashchange”,函数(e){
window.removeEventListener(“存储”,zxinglistener,false);
var hash=window.location.hash.substr(1);
如果(哈希!=“”){
window.location.hash=“”;
processBarcode(解码组件(散列));
}
},假);
}
函数getScan(){
var href=window.location.href.split(“\\#”)[0];
window.addEventListener(“存储”,zxinglistener,false);
zxingWindow=窗口。打开(“zxing://scan/?ret=“+encodeURIComponent(href+”{CODE}”),“u self”);
}
功能处理条形码(b){
var d=document.createElement(“div”);
d、 innerHTML=b;
文件.正文.附件(d);
}
扫描
供参考:感谢您的回复。不过我不太明白你的意思。我不太熟悉安卓系统。可以从web页面调用startQRScan方法吗?然后加载视图将其发送回网页?我在谷歌上搜索了一下,明白你的意思了。问题是,我希望通过android浏览器从一个已经开发的网站上实现这一点,我能做的最多改变就是UI和附加javascript。你知道这是否可以在没有网络视图的情况下完成吗?很抱歉,我以为你说的是android方面。我知道phonegap支持条形码扫描仪,但我不知道具体细节。完整地说,可以从您的网页调用StartQScan。通过窗口“name javascriptinterface”.startQRScan,但这意味着您必须在Android中编写代码。如果你愿意,我可以发布完整的Android代码。没关系,这有助于我了解如何实现。不要担心我在谷歌上找到的代码,我需要更多关于可以做什么的想法。接受答案,尽管它不是我需要的,但确实回答了问题。谢谢您的帮助。祝您的项目顺利。是否正在设备浏览器中查看您的网页?或者您正在创建一个包含网络视图的裸体应用程序来显示它?感谢您的回复。正在设备浏览器中查看我的网页。我有一个已经开发的网站。我可以更改UI,也可以添加javascript。不过我对网络视图不太熟悉。它们是否可以用来显示任何网站,以及是否需要对网站进行任何更改?我还可以控制web应用程序的服务器端,并可以在那里添加/修改。我还想说,理想情况下,用户会使用设备浏览器。Google Play app:FAQ:Thank@michael jasper..您的回答帮助我开始在示例网页中集成zxing-回调必须进行URL编码:zxing://scan/?ret=http%3A%2F%2Ffoo.com%2Fproducts%2F%7BCODE%7D%2Fdescription&SCAN_FORMAT
<!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>