【源码】很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi
有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用。在看之前你可以扫一扫下面几个二维码先看看效果:(浏览器自带的扫描就够了,QQ扫码和微信扫码部分手机不能直接连接wifi)http://images2015.cnblogs.com/blog/658978/201511/658978-20151126192543046-1803023012.pnghttp://images2015.cnblogs.com/blog/658978/201511/658978-20151126193022984-1695990550.pnghttp://images2015.cnblogs.com/blog/658978/201511/658978-20151126193540577-50471413.png1.二维码生成 网址 (URL)包含网址的 二维码生成 是大家平时最常接触到的(例如:http://dnt.dkill.net),二维码识别软件能够通过 http://前缀 知道数据代表的是一个网址。使用{URLTO:www.baidu.com} 类似的语法格式也能让识别软件认出网址。2.二维码生成 电子邮箱地址(E-mail Address)互联网上大家联络时基本都会用到电子邮箱。当然,二维码也可以保存电子邮箱的地址(例如freemouse@email.com)。它的语法格式是{mailto:freemouse@email.com},这个好记,和html标签的语法格式是一样的。
3.电话号码 (telephone numbers)电话号码的二维码生成的数据格式很简单,容易理解:{tel:13955555555}。如果是固话则加上区号,需要和海外联系的朋友则需加上+86的国家代码。
4.联系方式 (Contact information)适合以二维码生成方式表示的联系人数据格式有不少个标准。例如:vcard(电子名片)。不过,它的格式对于二维码来说稍嫌复杂了一些。目前,就笔者所知,市面上的安卓手机(苹果、黑莓等)一般都支持由日本的docomo公司制定的MECARD数据格式。MECARD:N:freemouse,King;ADR:maanshan,anhui,china;TEL:+865558888888;EMAIL:freemouse@email.com; URL:t.qq.com/tseeku;QQ:47302929;;
BIZCARD这种数据格式和MECARD类似,目前还没有找到具体的定义。似乎比MECARD更加简单;只能从例子中受点启发了。BIZCARD:N:freemouse;X:King;T:Software Engineer;C:Google;A:maanshan, An Hui, China 243000;B:+8655555555;E:freemouse@email.com;;
vCard一种很常用的电子名片数据格式。从windows的地址簿到linux的联系人;手机、PC皆能兼容,语法略嫌烦琐。感兴趣的朋友自己去wiki上阅读
5.短信(SMS)语法格式:{smsto:13955555555:你好,二维码发短信}
6.彩信 (MMS)和发短信的格式类似:{mmsto:13955555555:内容}
7.地理位置 (Geographic information)和朋友一起分享你现在的位置,无疑是个很有用的功能。例如查看google公司在美国纽约的位置:北纬40.71872,西经73.98905;高度为100米。语法格式:{geo:40.71872,-73.98905,100}
8.获取安卓软件在google的安卓市场找软件,二维码也能派上用场。例如:{market://details?id=org.example.foo}
9.获取Wifi配置(Android)WIFI:T:WPA;S:mynetwork;P:mypass;; http://images2015.cnblogs.com/blog/658978/201511/658978-20151126193923640-524726711.png其实扫二维码的本质就是解析出一段字符串,为什么有一些神奇的功能呢?那是字符串的格式满足一些系统内置的协议或者格式,所以系统就帮你干了类似于发短信,打电话,添加联系人,连接wifi之类的事情。可以想像,你开了个店,店门口有个免费wifi的二维码,然后自己名片也是一个二维码~~~~是不是有点高大上的感觉?其实代码并没有什么技术含量,既然有人要求,那就写一下吧,这次就不局限平台了,写了个通用的demo核心类库:jquery.qrcode.min.js核心代码://中文字符处理
function toUtf8(str) {
var out, i, len, c;
out = "";
len = str.length;
for (i = 0; i < len; i++) {
c = str.charCodeAt(i);
if ((c >= 0x0001) && (c <= 0x007F)) {
out += str.charAt(i);
} else if (c > 0x07FF) {
out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
} else {
out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
}
return out;
}//生成二维码
function outputQRCod(txt, width, height) {
//先清空
$("#code").empty();
//中文格式转换
var str = toUtf8(txt);
//生成二维码
$("#code").qrcode({
render: "table",
width: width,
height: height,
text: str
});
}完整代码:<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>生成二维码</title>
<script src="JavaScript/jquery-1.8.3.min.js"></script>
<script src="JavaScript/jquery.qrcode.min.js"></script>
<script type="text/javascript">
$(function () {
//没有中文就可以这么简单
$('#code').qrcode("http://dnt.dkill.net");
//普通转换
$("#txt_btn").click(function () {
outputQRCod($("#inputTxt").val(), 200, 200);
});
//URL演示
$("#url_btn").click(function () {
var urlTxt = $("#inputUrl").val();
if (urlTxt.indexOf("http://") < 0) {
urlTxt = 'http://' + urlTxt;
}
outputQRCod(urlTxt, 400, 400);
});
//联系人添加演示
$("#people_btn").click(function () {
var txt = "BIZCARD:N:" + $('#inputName').val() + ";T:" + $('#inputPost').val() + ";C:" + $('#inputCompany').val() + ";A:" + $('#inputAddress').val() + ";B:" + $('#inputMobile').val() + ";E:" + $('#inputEmail').val() + ";;";
outputQRCod(txt, 400, 400);
});
//WiFi连接演示
$("#wifi_btn").click(function () {
var txt = "WIFI:T:" + $('#WiFiType').val() + ";S:" + $('#inputWiFiName').val() + ";P:" + $('#inputWiFiPass').val() + ";;";
console.log(txt);
outputQRCod(txt, 400, 400);
});
});
//中文字符处理
function toUtf8(str) {
var out, i, len, c;
out = "";
len = str.length;
for (i = 0; i < len; i++) {
c = str.charCodeAt(i);
if ((c >= 0x0001) && (c <= 0x007F)) {
out += str.charAt(i);
} else if (c > 0x07FF) {
out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
} else {
out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
}
return out;
}
//生成二维码
function outputQRCod(txt, width, height) {
//先清空
$("#code").empty();
//中文格式转换
var str = toUtf8(txt);
//生成二维码
$("#code").qrcode({
render: "table",
width: width,
height: height,
text: str
});
}
</script>
</head>
<body>
<div id="main">
<div class="demo">
<p>请输入内容然后点击按钮生成二维码:</p>
<div id="code"></div>
<h2>演示1:</h2>
<p>
普通文本:<input type="text" class="input" id="inputTxt" value="">
<input type="button" id="txt_btn" value="生成二维码">
</p>
<h2>演示2:</h2>
<p>
URL 演示:<input type="text" class="input" id="inputUrl" value="">
<input type="button" id="url_btn" value="生成二维码">
</p>
<h2>演示3:</h2>
<p>加联系人:(选填)<input type="button" id="people_btn" value="生成二维码"></p>
<p>
姓名:<input type="text" class="input" id="inputName" value=""><br />
<br />
职位:<input type="text" class="input" id="inputPost" value=""><br />
<br />
公司:<input type="text" class="input" id="inputCompany" value=""><br />
<br />
地址:<input type="text" class="input" id="inputAddress" value=""><br />
<br />
手机:<input type="text" class="input" id="inputMobile" value=""><br />
<br />
邮箱:<input type="text" class="input" id="inputEmail" value=""><br />
<br />
</p>
<h2>演示4:(现在的wifi一般都是WPA的,WEP的基本上10分钟内就能PJ了)</h2>
<p>
WiFi名称:<input type="text" class="input" id="inputWiFiName" value=""><br />
<br />
WiFi密码:<input type="text" class="input" id="inputWiFiPass" value=""><br />
<br />
WiFi类型:<select id="WiFiType"><option value="WPA">WPA/WPA2</option>
<option value="WEP">WEP</option>
<option value="nopass">无加密</option>
</select>
<input type="button" id="wifi_btn" value="生成二维码">
</p>
</div>
</div>
</body>
</html>你们要什么效果就安装格式自己编辑一下就可以了,先闪了~~有机会再说一说二维码的美化demo下载:http://pan.baidu.com/s/1pJGhV0f
{:5_116:}虽然看不懂,也很晕,不过我只想顶下楼主,仅此而已! 卧槽,感觉好强大好牛B,可惜看不懂啊楼主,咋办? 卧槽,感觉好强大好牛B,可惜看不懂啊楼主,咋办?
支持楼主,支持原创! c++看着就头大的很。 这个我给10分 看不懂。。。。。 学习了一下。。 哈哈哈,这真是好东西!!!!谢谢楼主!!!
页:
[1]
2