html5移动端源码(html5移动端开发)
本文目录一览:
- 1、用HTML5写网页代码和写移动端代码有什么区别?
- 2、如何获取HTML5源码
- 3、使用html5开发移动端应用采用什么框架
- 4、html5移动端调用手机摄像头扫描二维码并获取二维码信息代码怎么写?
- 5、html5移动端页面上调用手机摄像头扫描二维码并获取二维码信息代码?
用HTML5写网页代码和写移动端代码有什么区别?
没什么区别,html5只是一个标记语言,电脑网页和移动商网页都是使用html的。
如何获取HTML5源码
1是用chrome直接访问浏览器。
2是用手机USB链接电脑,开启开发者模式,手机端安装chrome并开启开发者模式访问页面,PC端chrome安装插件ADB Plugin,访问localhost:****,用chrome开发者工具调试。
使用html5开发移动端应用采用什么框架
常用的移动APP开发框架:
框架:PhoneGap
PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。
优点:
可跨平台。phonegap框架帮我们解决了差异性,javascript与平台系统的连接由phonegap框架完成。
提供硬件访问控制。可调用加速计、摄像头、罗盘、通讯录、文档、地理定位、媒体、网络、通知。
可利用成熟javascript框架。如:Ext js、jQuery。
缺点:
性能差。运行速度慢,UI反应延时。
不能完全跨平台。不同平台代码需要微调。
内存消耗,调试难度大。
框架:Ionic
Ionic 是一个强大的 HTML5 应用程序开发框架, Ionic 主要关注外观和体验,以及应用程序的 UI 交互,特别适合用于基于 Hybird 模式的 HTML5 移动应用程序开发。 Ionic 是一个轻量的手机 UI 库,具有速度快,界面现代化、美观等特点。
优点:
轻量级框架,运行速度快。
于 Angularjs,支持 Angularjs的特性, MVC ,代码易维护。
通过 SASS 构建应用程序,接近原生。
缺点:
Ionic是一个前段框架。不能完全取代PhoneGap和JavaScript框架的作用。
需要结合插件使用。
框架:Hbuilder(国产)
HBuilder是DCloud(数字天堂)推出一款支持HTML5的Web开发IDE。“快,是HBuilder的最大优势。
优点:
跨平台:同时支持iOS、Android、Symbian、Windows Phone。
开发工具:基于Eclipse的开发工具,集成UI控件与应用管理。
本地打包:无需配置环境,无需编译,本地一键打包。
代码加密:基于密钥的加密方式,无法破解,像混编一样保护html代码。
技术支持:技术支持及时响应,重视开发者建议和反馈。
缺点:
AppCan免费版因需要把源代码上传到厂商的服务器上打包,对于企业开发来说源代码泄露安全性上有一定风险。企业版虽然可以解决,但企业版稳定尚待观察。
AppCan采用封装的组件,依赖性比较高。不是开源代码。
ppCan 不能很好的解决原生代码的功能。
Wex5(国产)
WeX5应用快速开发框架(含完整的SDK API及全部源码),一次开发、跨端运行。
优点:
高效精致的UI组件体系,基于jquery和bootstrap技术,采用增强的RequireJS模块化技术。
基于phonegap(cordova)框架,如相机、地图、LBS定位、指南针、通讯录、文件、语音、电池等。
可视化拖拽式集成开发环境IDE,全能力的调试支持和智能代码提示。
缺点:
使用范围有限:适用:一般app、电商app、客服app、会员app、微店微商等。
用户量小,存在不稳定因素。
总结:
跨平台方面:大部分框架针对android和ios平台,需要做或多或少的代码调整,不能达到完全跨平台。
性能方面:根据不完全统计,Ionic的性能会更好一点。
PhoneGap出现最早,国内框架都是基于Phonegap开发出来的。
注意:
各框架在实现过程中都会遇到不同程度的坑,请根据框架的侧重点谨慎选择应用的框架。如果要基于Html5开发App,还需要进一步根据需求验证框架的可实施性、并进行不同框架的效果对比。
html5移动端调用手机摄像头扫描二维码并获取二维码信息代码怎么写?
html5移动端调用手机摄像头扫描二维码并获取二维码信息代码如下:
[html] view plain copy
!DOCTYPE html
htmlhead
titleHTML5 code Reader/title
meta http-equiv="Content-Type" content="text/html; charset=gb2312"
/head
style type="text/css"
html, body { height: 100%; width: 100%; text-align:center; }
/style
script src="jquery-1.9.1.js"/script
script
//这段代 主要是获取摄像头的视频流并显示在Video 签中
var canvas=null,context=null,video=null;
window.addEventListener("DOMContentLoaded", function ()
{
try{
canvas = document.getElementById("canvas");
context = canvas.getContext("2d");
video = document.getElementById("video");
var videoObj = { "video": true,audio:false},
flag=true,
MediaErr = function (error)
{
flag=false;
if (error.PERMISSION_DENIED)
{
alert('用户拒绝了浏览器请求媒体的权限', '提示');
} else if (error.NOT_SUPPORTED_ERROR) {
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器', '提示');
} else if (error.MANDATORY_UNSATISFIED_ERROR) {
alert('指定的媒体类型未接收到媒体流', '提示');
} else {
alert('系统未能获取到摄像头,请确保摄像头已正确安装。或尝试刷新页面,重试', '提示');
}
};
//获取媒体的兼容代码,目前只支持(Firefox,Chrome,Opera)
if (navigator.getUserMedia)
{
//qq浏览器不支持
if (navigator.userAgent.indexOf('MQQBrowser') -1) {
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器', '提示');
return false;
}
navigator.getUserMedia(videoObj, function (stream) {
video.src = stream;
video.play();
}, MediaErr);
}
else if(navigator.webkitGetUserMedia)
{
navigator.webkitGetUserMedia(videoObj, function (stream)
{
video.src = window.webkitURL.createObjectURL(stream);
video.play();
}, MediaErr);
}
else if (navigator.mozGetUserMedia)
{
navigator.mozGetUserMedia(videoObj, function (stream) {
video.src = window.URL.createObjectURL(stream);
video.play();
}, MediaErr);
}
else if (navigator.msGetUserMedia)
{
navigator.msGetUserMedia(videoObj, function (stream) {
$(document).scrollTop($(window).height());
video.src = window.URL.createObjectURL(stream);
video.play();
}, MediaErr);
}else{
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器');
return false;
}
if(flag){
alert('为了获得更准确的测试结果,请尽量将二维码置于框中,然后进行拍摄、扫描。 请确保浏览器有权限使用摄像功能');
}
//这个是拍照按钮的事件,
$("#snap").click(function () {startPat();}).show();
}catch(e){
printHtml("浏览器不支持HTML5 CANVAS");
}
}, false);
//打印内容到页面
function printHtml(content){
$(window.document.body).append(content+"br/");
}
//开始拍照
function startPat(){
setTimeout(function(){//防止调用过快
if(context)
{
context.drawImage(video, 0, 0, 320, 320);
CatchCode();
}
},200);
}
//抓屏获取图像流,并上传到服务器
function CatchCode() {
if(canvas!=null)
{
//以下开始编 数据
var imgData = canvas.toDataURL();
//将图像转换为base64数据
var base64Data = imgData;//.substr(22); //在前端截取22位之后的字符串作为图像数据
//开始异步上
$.post("saveimg.php", { "img": base64Data },function (result)
{
printHtml("解析结果:"+result.data);
if (result.status == "success" result.data!="")
{
printHtml("解析结果成功!");
}else{
startPat();//如果没有解析出来则重新抓拍解析
}
},"json");
}
}
/script
body
div id="support"/div
div id="contentHolder"
video id="video" width="320" height="320" autoplay
/video
canvas style="display:none; background-color:#F00;" id="canvas" width="320" height="320"
/canvas br/
button id="snap" style="display:none; height:50px; width:120px;"开始扫描/button
/div
/body/html
html5移动端页面上调用手机摄像头扫描二维码并获取二维码信息代码?
html5移动端调用手机摄像头扫描二维码并获取二维码信息代码如下:
[html] view plain copy
!DOCTYPE html
htmlhead
titleHTML5 code Reader/title
meta http-equiv="Content-Type" content="text/html; charset=gb2312"
/head
style type="text/css"
html, body { height: 100%; width: 100%; text-align:center; }
/style
script src="jquery-1.9.1.js"/script
script
//这段代 主要是获取摄像头的视频流并显示在Video 签中
var canvas=null,context=null,video=null;
window.addEventListener("DOMContentLoaded", function ()
{
try{
canvas = document.getElementById("canvas");
context = canvas.getContext("2d");
video = document.getElementById("video");
var videoObj = { "video": true,audio:false},
flag=true,
MediaErr = function (error)
{
flag=false;
if (error.PERMISSION_DENIED)
{
alert('用户拒绝了浏览器请求媒体的权限', '提示');
} else if (error.NOT_SUPPORTED_ERROR) {
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器', '提示');
} else if (error.MANDATORY_UNSATISFIED_ERROR) {
alert('指定的媒体类型未接收到媒体流', '提示');
} else {
alert('系统未能获取到摄像头,请确保摄像头已正确安装。或尝试刷新页面,重试', '提示');
}
};
//获取媒体的兼容代码,目前只支持(Firefox,Chrome,Opera)
if (navigator.getUserMedia)
{
//qq浏览器不支持
if (navigator.userAgent.indexOf('MQQBrowser') -1) {
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器', '提示');
return false;
}
navigator.getUserMedia(videoObj, function (stream) {
video.src = stream;
video.play();
}, MediaErr);
}
else if(navigator.webkitGetUserMedia)
{
navigator.webkitGetUserMedia(videoObj, function (stream)
{
video.src = window.webkitURL.createObjectURL(stream);
video.play();
}, MediaErr);
}
else if (navigator.mozGetUserMedia)
{
navigator.mozGetUserMedia(videoObj, function (stream) {
video.src = window.URL.createObjectURL(stream);
video.play();
}, MediaErr);
}
else if (navigator.msGetUserMedia)
{
navigator.msGetUserMedia(videoObj, function (stream) {
$(document).scrollTop($(window).height());
video.src = window.URL.createObjectURL(stream);
video.play();
}, MediaErr);
}else{
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器');
return false;
}
if(flag){
alert('为了获得更准确的测试结果,请尽量将二维码置于框中,然后进行拍摄、扫描。 请确保浏览器有权限使用摄像功能');
}
//这个是拍照按钮的事件,
$("#snap").click(function () {startPat();}).show();
}catch(e){
printHtml("浏览器不支持HTML5 CANVAS");
}
}, false);
//打印内容到页面
function printHtml(content){
$(window.document.body).append(content+"br/");
}
//开始拍照
function startPat(){
setTimeout(function(){//防止调用过快
if(context)
{
context.drawImage(video, 0, 0, 320, 320);
CatchCode();
}
},200);
}
//抓屏获取图像流,并上传到服务器
function CatchCode() {
if(canvas!=null)
{
//以下开始编 数据
var imgData = canvas.toDataURL();
//将图像转换为base64数据
var base64Data = imgData;//.substr(22); //在前端截取22位之后的字符串作为图像数据
//开始异步上
$.post("saveimg.php", { "img": base64Data },function (result)
{
printHtml("解析结果:"+result.data);
if (result.status == "success" result.data!="")
{
printHtml("解析结果成功!");
}else{
startPat();//如果没有解析出来则重新抓拍解析
}
},"json");
}
}
/script
body
div id="support"/div
div id="contentHolder"
video id="video" width="320" height="320" autoplay
/video
canvas style="display:none; background-color:#F00;" id="canvas" width="320" height="320"
/canvas br/
button id="snap" style="display:none; height:50px; width:120px;"开始扫描/button
/div
/body/html