Cordova in action 学习笔记三:实现网页实现不了的功能
来源:互联网 发布:数据资产管理 公司 编辑:程序博客网 时间:2024/06/16 14:11
1 概述
上节实现了开发一个web,就可以生成app的功能,但问题也来了,web局限性很大,不能访问文件系统,不能访问摄像头,不能访问gps信息,那怎么办,我们开发的app不可能就单纯实现一个webview的功能呀。这一节我们学习通过插件plugin实现这些网页实现不了的功能。
2 插件
2.1插件就是负责做javascript与手机原生组件中间的控制器,比如js要调用摄像头,则通过调用摄像头插件实现,见下图:
2.2 怎么找到这些插件,cordova插件基本都可以在npmjs.com找到,在首页输入ecosystem:cordova搜索可以找到相关的插件,见下图
Battery Status (cordova-plugin-battery-status)
Camera (cordova-plugin-camera)
Console (cordova-plugin-console)
Contacts (cordova-plugin-contacts)
Device (cordova-plugin-device)
Device Motion and Orientation (cordova-plugin-device-motionand
cordova-plugin-device-orientation)
Dialogs and Vibration (cordova-plugin-dialogs)
File System and FileTransfer (cordova-plugin-fileandcordova-plugin-
file-transfer)
Geolocation (cordova-plugin-geolocation)
Globalization (cordova-plugin-globalization)
InAppBrowser (cordova-plugin-inappbrowser)
Media and Media Capture (cordova-plugin-mediaandcordova-plugin-
media-capture)
Network Information (cordova-plugin-network-information)
Splashscreen (cordova-plugin-splashscreen)
Vibration (cordova-plugin-vibration)
StatusBar (cordova-plugin-statusbar)
Whitelist (cordova-plugin-whitelist)
$
cordova plugin search barcode
2.3 安装插件输入
在cordova添加plugin需要输入 cordova plugin add [pluginID],如果是摄像头的话,就如下所示:
$
cordova plugin add cordova-plugin-camera
可能你会说html5有弹框呀,但我要告诉你,原生的弹框就是一个坑,显示如下图
这在app界面是无法忍受的,所以我们需要实现原生的弹框务必调用dialog插件
我们的目标是实现4种dialog,一:alert警告框,二:多项选择确认框 ,三问答框 ,四 beep警告声
4
4.1 开始创建一个新项目dialogApp
$
cordova create dialogApp com.fzp.dialogApp myDialogApp
4.2 添加dialog插件支持
$
cordova plugin add cordova-plugin-dialogs
4.3 添加platforms$
cordova platforms add android
$
cordova platforms add ios
4.4编辑index.html<!DOCTYPE html><html> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="css/index.css"> <title>Dialog</title> </head> <body> <div class="app"> <button id='btAlert'>alert</button> <button id='btConfirm'>Confirm</button> <button id='btAsk'>Ask</button> <input type="button" id='btBeep' value="Beep"/> </div> <script type="text/javascript" src="cordova.js"></script> <script type="text/javascript" src="js/index.js"></script> </body></html>4.5 编辑js/index.js文件
var app={ initialize:function(){ this.assignEvent(); }, assignEvent:function(){ <span style="color:#993300;">document.addEventListener("deviceready",this.buttonEvent,false);</span> }, buttonEvent:function(){ document.querySelector("#btAlert").addEventListener("touchend",function(){ navigator.notification.alert("This is an alert...",null,"Alert Test","OK"); },false) var titles=["yes","No","Maybe"]; function youConfirmed(idx){ navigator.notification.alert("You clicked"+titles[idx-1]+"!",null) } document.querySelector("#btConfirm").addEventListener("touchend",function(){ navigator.notification.confirm("Are you Confirm",youConfirmed,"Confirm This",titles); },false) document.querySelector("#btAsk").addEventListener("touchend",function(){ navigator.notification.prompt( "What is your favorite food?" ,function(r){ navigator.notification.alert("You answerd:"+r.input1+"!",null) } ,"Ask",["OK"],null); },false) document.querySelector("#btBeep").addEventListener("touchend",function(){ navigator.notification.beep(1); },false) }};app.initialize();
body{ margin: 20px;}button,input { padding: 10px; width:100%; font-size: 1em;}
$
cordova emulate
$
cordova plugins add cordova-plugin-camera
$
cordova plugins add phonegap-plugin-barcodescanner
<span style="color:#999999;"><input type="button" id='btBeep' value="Beep"/></span> <button id="btTakePhoto">Take </button> <button id="btUsePicture" >Use Picture </button> <img id="imgMy"/>更改css/index.css,增加img的css描述
img { margin-top:10px; max-width: 100%; max-height:250px; margin-left:auto; margin-right:auto; }更改js/index.js,我直接给出全部
var app={ initialize:function(){ document.addEventListener("deviceready",this.bindEvents,false); }, bindEvents:function(){ app.buttonEvent("deviceready"); app.cameraEvent("deviceready"); app.barcodeEvent("deviceready"); }, buttonEvent:function(){ document.querySelector("#btAlert").addEventListener("touchend",function(){ navigator.notification.alert("This is an alert...",null,"Alert Test","OK"); },false) var titles=["yes","No","Maybe"]; function youConfirmed(idx){ navigator.notification.alert("You clicked"+titles[idx-1]+"!",null) } document.querySelector("#btConfirm").addEventListener("touchend",function(){ navigator.notification.confirm("Are you Confirm",youConfirmed,"Confirm This",titles); },false) document.querySelector("#btAsk").addEventListener("touchend",function(){ navigator.notification.prompt( "What is your favorite food?" ,function(r){ navigator.notification.alert("You answerd:"+r.input1+"!",null) } ,"Ask",["OK"],null); },false) document.querySelector("#btBeep").addEventListener("touchend",function(){ navigator.notification.beep(1); },false) }, cameraEvent:function(){ function onCameraSuccess(imageData){ var img=document.querySelector("#imgApp"); img.src=imageData; } function onCameraFail(message){ navigator.notification.alert(message,null,"load camera failed"); } //use from camera document.getElementById("btTakePhoto").addEventListener("touchend",function(){ navigator.camera.getPicture(onCameraSuccess,onCameraFail, { quality: 50, sourceType: Camera.PictureSourceType.CAMERA, destinationType: Camera.DestinationType.FILE_URI }); },false) document.querySelector("#btUsePicture").addEventListener("touchend",function(){ navigator.camera.getPicture(onCameraSuccess,onCameraFail, { quality:50,sourceType:Camera.PictureSourceType.PHOTOLIBRARY ,destinationType:Camera.DestinationType.FILE_URI }) },false) }, barcodeEvent:function(){ document.querySelector("#btBarcode").addEventListener("touchend",function(){ cordova.plugins.barcodeScanner.scan( function (result) { alert("拿到了条码\n" + "条码数据: " + result.text + "\n" + "格式: " + result.format + "\n" + "取消: " + result.cancelled); }, function (error) { alert("Scanning failed: " + error); }, { "preferFrontCamera" : false, // iOS and Android "prompt" : "请讲方框对准条码区域"//, // supported on Android only } ); },false) }};app.initialize();
5.3 测试执行,大功告成
- Cordova in action 学习笔记三:实现网页实现不了的功能
- Cordova系列学习教程03 Cordova简单功能的实现
- Cordova系列学习教程03 Cordova简单功能的实现
- Cordova in action学习笔记二:My First Project
- Cordova 学习笔记三
- AJAX IN ACTION 学习笔记(三)
- Struts2第九讲学习笔记Action的三种实现方式,两种驱动方式
- 实现Action---struts2学习笔记
- Cordova in action学习笔记一:windows以及mac安装环境配置
- 网页分页功能的实现
- STM32实现IAP功能的学习笔记
- JavaScript学习---在网页中实现运行代码的功能
- ionic+cordova基于websocket实现的实时通报提醒功能
- 网页制作学习3----实现连缀功能
- mybatis实战教程(mybatis in action)之三:实现数据的增删改查
- mybatis实战教程(mybatis in action)之三:实现数据的增删改查
- mybatis实战教程(mybatis in action)之三:实现数据的增删改查
- structs实现三种action的方法
- 【语言-批处理】递归拷贝文件
- 关闭项目里某个文件的arc设置。
- linux安装Easypanel(kangle)面板
- Android中的ViewPager在更新内容的时候报java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0异常
- Ubuntu 中软件的安装、卸载以及查看的方法总结
- Cordova in action 学习笔记三:实现网页实现不了的功能
- Vim高频使用技巧
- Eclipse关联java源代码
- Python学习——jieba分词库和time模块
- android 4.4删除短信
- 高并发解决方案
- IOS隐藏键盘
- 九个Console命令,让 JS 调试更简单
- 判断一个数是否为对称且不大于五位数的素数