博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PhoneGap+jQm webapp本地化(2)-摄像头调用和本地数据库
阅读量:6094 次
发布时间:2019-06-20

本文共 4917 字,大约阅读时间需要 16 分钟。

hot3.png

前言

上一章中,我们讨论了环境的配置,这本章中我们,写一个小模块来贯通学习,phonegap对摄像头的调用,已经phonegap对于拍下来的照片的处理,已经,使用本地数据库保存我们的数据,让在程序重新运行的时候能够保留我们的结果.先说明一下,为了,减少工作量,很多地方由于,官方文档已经很详细了我就难得在描述了,如果有些地方,没有而官方文档也没有的话,可以来问我...

例子设计

我们一般注册都有一个,上传图像的模块,以前,用电脑注册的话,这个头像就比较麻烦了,不过,我们用手机的话就基本没这个问题了,这个例子就是,使用phonegap 调用摄像头拍下我们的头像,上传到服务器,然后,也保存到本地里面,方便加载.

原型设计:

显示用的主页

调用拍照的页面

 

为了,突显出我们用jqm的好处的,增加一个swip事件来控制,页面的切换

代码编写

1,写个模板,方便,我们以后的代码的重用

    

Hello,World

content

footer

 

2,模板写好了,就开始我们实际代码的编写吧.

1,首先,编写我们的device.js文件进行对应用的初始化工作

function init() {    document.addEventListener("deviceready", onDeviceReady, true);}

 

2,然后接着写初始化用干的事情

var onDeviceReady = function() {    console.log("deviceready event fired");	 // api-camera  Photo URI    pictureSource=navigator.camera.PictureSourceType;    destinationType=navigator.camera.DestinationType;    //这里是初始化主页,如果,已经有头像的话,就加载    var saveImage = kget("image");    if(saveImage){    	 //console.log("have image"+saveImage);    	  var cameraImage = document.getElementById('cameraImage');    	  cameraImage.style.visibility = 'visible';    	  cameraImage.src = "data:image/jpeg;base64," + saveImage;    	     }    //系统的事件,按需求实现自己的回调方法,这里就默认了..    document.addEventListener("searchbutton", onSearchKeyDown, false);       document.addEventListener("menubutton", onMenuButtonDown, false);    document.addEventListener("pause", onEventFired, false);    document.addEventListener("resume", onEventFired, false);    document.addEventListener("online", onEventFired, false);    document.addEventListener("offline", onEventFired, false);    document.addEventListener("backbutton", onEventFired, false);    document.addEventListener("batterycritical", onEventFired, false);    document.addEventListener("batterylow", onEventFired, false);    document.addEventListener("batterystatus", onEventFired, false);    document.addEventListener("startcallbutton", onEventFired, false);    document.addEventListener("endcallbutton", onEventFired, false);    document.addEventListener("volumedownbutton", onEventFired, false);    document.addEventListener("volumeupbutton", onEventFired, false);};

 

这样我们的devices.js就简单的写完了.

3,写UI界面,这里也很简单

		

个人信息

设置

头像

名字:阿柴

联系方式:xxxxx

头像设置

头像

take photo
upload

 

上面就是页面的代码,就两个DIV的page,学过,jqm的朋友应该对此毫无压力了...

4,开始写点jqm的事件js,写在模板那个head,自己的那个块里面

 

 

这块代码的就要有一点熟悉jqm的人写好了,有啥不懂的先看一下jqm的官方文档吧...

5,写了这么久,都没怎么用到phonegap,接下来就是phonegap大展身手的时刻到了..

phonegap的照片类型

还记得我们在devices.js定义的两个变量吗?

//这个是设置图片是调用摄像头还是,本机相册,默认是调用摄像头//更多参见官方文档pictureSource=navigator.camera.PictureSourceType;//这个是,当phonegap 获取图片的时候,我们希望获取的是路径?还是//给予base64编码的图像格式destinationType=navigator.camera.DestinationType;

以上就是等下,可能要用到的参数介绍

新建一个camera.js,

function take_pic() {    navigator.camera.getPicture(onPhotoDataSuccess, function(ex) {        alert("Camera Error!");    }, {	//这里的更多设置参数参见官方文档    	quality : 50, 	targetWidth: 320,  	targetHeight: 240,	//用data_url,而不用file_url的原因是,file_url在不同平台有差异	//不好编写,而用data_url就可以不考虑这个,加上,拍张图片,不要太好的话,就几十k存到数据库里面也没多慢..	destinationType:destinationType.DATA_URL    	});}

 

function onPhotoDataSuccess(imageData) {    console.log("* * * onPhotoDataSuccess");    var cameraImage = document.getElementById('cameraImage');    cameraImage.style.visibility = 'visible';	//把图片存进数据库里面    kset("image",imageData);   cameraImage.src = "data:image/jpeg;base64," + imageData;   }

 

接下来,新建一个storage.js,用来简单封装storage的api

function kset(key, value){	console.log("key"+key+"value"+value);	window.localStorage.setItem(key, value);}function kget(key){	console.log(key);	return window.localStorage.getItem(key);}function kremove(key){	window.localStorage.removeItem(key);}function kclear(){	window.localStorage.clear();}//测试更新方法function kupdate(key,value){	window.localStorage.removeItem(key);	window.localStorage.setItem(key, value);}

以上就是这次的内容了.

说点题外话

研究了一个星期的phonegap,由于在家,没学校那么方便可以找同学借iphone来测试应用,说下phonegap在android的体验吧,在我手头上一台能在象限跑分到2000的设备,运行这个,与Java写的应用相同的显示,要慢很多....以目前,android 2000分以上的设备而言,我觉得还不是主流,所以,这个phonegap的应用目前而言,用来开发Iphone程序觉得还可以,Iphone的webview性能还算可以吧...

  接下来,说下这次的例子,这个例子里面有个比较严重的拖慢性能的地方,有兴趣的可以在swipe几次以后用backbutton来猜一下,代码的话晚些时候我整理出来在发布吧...

  下一次,估计得很久才更新这个系列了,有空的话,我专门搞个视频,来跟大家演示一下...phonegap目前而言,做android的web native app的性能问题吧....

转载于:https://my.oschina.net/youxiachai/blog/40987

你可能感兴趣的文章
特殊字体引用
查看>>
owlcar 用法心得 自定义导航
查看>>
数据结构 学习笔记03——栈与队列
查看>>
DB2 OLAP函数的使用(转)
查看>>
数学之美系列二十 -- 自然语言处理的教父 马库斯
查看>>
Android实现自定义位置无标题Dialog
查看>>
面试总结
查看>>
Chrome浏览器播放HTML5音频没声音的解决方案
查看>>
easyui datagrid 行编辑功能
查看>>
类,对象与实例变量
查看>>
HDU 2818 (矢量并查集)
查看>>
【转】php字符串加密解密
查看>>
22. linux 常用命令
查看>>
ASP.Net 使用GridView模板删除一行的用法
查看>>
(十六)字段表集合
查看>>
JPGraph
查看>>
实验二 Java面向对象程序设计
查看>>
------__________________________9余数定理-__________ 1163______________
查看>>
webapp返回上一页 处理
查看>>
新安装的WAMP中phpmyadmin的密码问题
查看>>