- 浏览: 7343936 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
Mobile应用基于PhoneGap框架搭建教程是本文要介绍的内容,主要是来学习PhoneGap框架的应用,随着Google的Android手机和苹果的iPhone手机成为手机市场的主流,越来越多的开发者加入到移动应用开发的大军中,但是基于Java的Android应用和基于C语言的iPhone应用让开发者开发应用的时候甚为烦恼,同样的应用必须用不同的语言开发两次才能支持不同的手机平台。
为了进一步简化移动应用的开发,Nitobi公司推出了一套开源的移动应用解决方案PhoneGap。本文主要介绍PhoneGap的基础知识,并通过一个示例介绍PhoneGap开发测试环境的搭建以及PhoneGap项目的开发和部署,并对PhoneGap提供的主要API做简单介绍.
PhoneGap简介
PhoneGap是一款基于HTML5的开源的手机应用开发框架,它允许用户仅仅通过Web(HTML、JavaScript)技术就可以访问移动设备的本地应用、API以及应用程序库等。PhoneGap提供了一系列丰富的API供开发者调用,这些API抽象和简化了移动设备本身提供的复杂的API,使开发新的手机应用和调用已有的手机功能更简单方便。另外,PhoneGap真正实现了writtenonce,runeverywhere,并且它采用了W3C标准,能和jQueryMobile结合在一起使用。
PhoneGap特性
目前,PhoneGap已实现对iPhone/iPad、Android、Symbian、Palm、黑莓各版本绝大部分功能的支持,其中官方文档中对其支持的详细说明如图1所示:
图1.PhoneGapAPI对各手机平台的支持
PhoneGapAPI简介
Accelerometer
Accelerometer是一个设备移动感应器,它能够检测到设备相对于原来位置的移动,并用三维坐标x,y,z表示。该API提供三个方法:
accelerometer.getCurrentAcceleration:得到用x,y,z值表示的当前设备的移动加速度。
accelerometer.watchAcceleration:以特定的时间间隔得到用x,y,z值表示的当前设备的移动加速度。
accelerometer.clearWatch:取消对设备移动加速度的监控。
Camera
Camera提供了访问和操作移动设备的默认摄像头的API,包括用摄像头动态摄取图片或从移动设备的相册中获取图片。
camera.getPicture():该方法通过配置不同的参数实现动态用摄像头获取图片或从已有的相册中获取图片,返回参数也可以根据设置不同的参数返回图片的二进制数据或者图片的路径。
Compass
Compass提供了获取移动设备指向的API。
compass.getCurrentHeading:获取当前移动设备的指向。
compass.watchHeading:以特定的时间间隔获取当前设备的指向。
compass.clearWatch:取消对当前设备指向的监控。
Contacts
Contacts提供了访问和操作移动设备通讯录数据库的API,包括获取联系人列表(支持过滤条件),增加,删除,编辑通讯录联系人等。
contacts.create:创建一个新的联系人。
contacts.find:查找联系人。
Contacts模块包括几个重要的对象:Contact,ContactName,ContactField,ContactAddress,ContactOrganization,ContactFindOptions,ContactError,通过这些对象和create、init方法共同实现对通讯录的复杂操作,详细的介绍可以参考PhoneGap的官方文档。
Device
Device提供了访问当前移动设备参数的API,包括设备名、设备系统版本、设备平台等。
File
File提供了访问和操作移动设备文件系统的API,其中FileReader和FileWriter提供了对设备文件的读写API。
GeoLocation
GeoLocation提供了访问移动设备的GPS感应器的API。
Media
Media提供了访问和操作移动设备语音文件的API,包括播放、停止、录音等。
NetWork
Network提供了访问移动设备移动网络和无线网络设置的API。
Notification
Notification提供了一组API来模拟移动设备的一些可视(对话框)、可听(提示音)、可感觉(震动)的功能。
notification.alert:弹出警告或者对话框。
notification.confirm:弹出确认框。
notification.beep:播放设备的提示音。
notification.vibrate:使设备震动一段时间。
Storage
Store提供了访问移动设备的存储设备的API。
搭建PhoneGap开发化境
PhoneGap支持开发适用于iPhone、Android、Palm等不同平台的应用,对不同的平台开发环境也有所不同,本文以Android为例搭建开发环境和创建应用。在搭建环境之前,我们需要先下载一些必须的工具和SDK,所有的工具都可以免费下载:
下载并安装Eclipse3.4+。
下载并安装Android SDK。
下载并安装ADTPluginforEclipse。
下载并解压PhoneGap。
安装好Eclipse、AndroidSDK和ADT插件之后,还需要做一些简单的配置才可以创建项目。图2显示了如何在Eclipse里配置AndroidSDK的路径,图3和图4显示了如何在Eclipse里配置AVD(AndroidVirtualDevice)。
图2.在Eclipse里配置AndroidSDK路径
图3.AndroidSDKandAVDManager菜单
图4.在Eclipse里配置AVD
如果需要使用Android手机测试应用,还需要安装手机对应型号的驱动器,把手机和开发机器用USB线连接,并且正确设置手机的开发调试功能。(Settings>Applications>Development)
创建一个简单的PhoneGap应用
创建一个新Android工程,如图5所示:
图5.创建新Android工程
完善项目结构
在项目根目录下创建/libs和/assets/www目录,并从解压后的PhoneGap目录中拷贝phonegap.js(可能带有版本信息)到/assets/www目录下,拷贝phonegap.jar(可能带有版本信息)到libs目录。修改项目的JavaBuildPath信息,把libs下的jar文件包含在编译路径中。
修改项目文件实现简单的获取设备联系人列表功能
com.phonegap.App.java
更改App.java文件为清单1的内容:
清单1.App.java类
- packagecom.phonegap.sample;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importcom.phonegap.*;
- publicclassAppextendsDroidGap{
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- //loadtheindex.htmlpagewhenappisloaded.
- super.loadUrl("file:///android_asset/www/index.html");
- }
- }
AndroidManifest.xml
把清单2的内容拷贝到AndroidManifest.xml文件的manifest标签内,并拷贝android:configChanges="orientation|keyboardHidden到activity标签内做为activity标签的一个属性。
清单2.AndroidManifest.xml
<supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:resizeable="true" android:anyDensity="true" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name=" android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
index.html页面
在/assets/www目录下创建一个新的HTML页面命名为index.html,并拷贝清单3的内容到index.html文件。
清单3:Index.html
<!DOCTYPE HTML> <html> <head> <meta name="viewport" content="width=320; user-scalable=no" /> <meta http-equiv="Content-type" content="text/html; charset=utf-8" > <title>PhoneGap</title> <link rel="stylesheet" href="master.css" type="text/css" media="screen" title="no title" charset="utf-8" > <script type="text/javascript" charset="utf-8" src="phonegap.0.9.4.js" ></script> <script type="text/javascript" charset="utf-8" > //show device information var deviceInfo = function (){ document.getElementById("platform").innerHTML = device.platform; document.getElementById("version").innerHTML = device.version; document.getElementById("uuid").innerHTML = device.uuid; document.getElementById("name").innerHTML = device.name; document.getElementById("width").innerHTML = screen.width; document.getElementById("height").innerHTML = screen.height; document.getElementById("colorDepth").innerHTML = screen.colorDepth; }; //listen the device ready event and get the device information. function init(){ document.addEventListener("deviceready", deviceInfo, true ); } // get device contacts list by the contacts API. function get_contacts() { var obj = new ContactFindOptions(); obj.filter=""; obj.multiple=true ; obj.limit=5; navigator.service.contacts.find(["name","displayName", "phoneNumbers", "emails"],contacts_success, fail, obj); } function fail(fail) { alert(fail); } function contacts_success(contacts) { var result = ""; for (var i=0;i<contacts.length;i++) { result += "Name: " + contacts[i].name.givenName + ", displayName: "+ contacts[i].displayName + ",Email:" + contacts[i].emails[0].value; result += "<br>"; } document.getElementById("conlist").innerHTML = result; alert(contacts.length + ' contacts returned.' ); } </script> </head> <body onload="init();" id="stage" class="theme" > <h1>Welcome to PhoneGap!</h1> <h2>this file is located at assets/index.html</h2> <div id="info" > <h4>Platform: <span id="platform" > </span>, Version: <span id="version" > </span></h4> <h4>UUID: <span id="uuid" > </span>, Name: <span id="name" > </span></h4> <h4>Width: <span id="width" > </span>, Height: <span id="height" > </span>, Color Depth: <span id="colorDepth" ></span></h4> </div> <a href="#" class="btn large" onclick="get_contacts();"> Get phone's contacts</a> <a href="http://w3.ibm.com/w3odw/spg/index_default.html" class="btn large" >Access IBM Home Page</a> <form action="http://x.x.x.x:8080/WebTest/index.jsp" method="get" > Username: <input type="text" name="name" /> <input type="submit" /> </form> <div id="conlist" > </div> </body> </html>
注意:中的“x.x.x.x”应为运行着一个contextroot为WebTest的Web应用的主机地址(IP或者HostName),WebTest项目可从本文档提供的链接中下载。
测试项目
在项目上点击右键,在出现的菜单中选择“RunAs”,然后选择“AndroidApplication”,Eclipse会弹出窗口让你选择合适的AVD,如果还没有配置,请参照“搭建PhoneGap开发环境”小节介绍的方法创建一个AVD。如果选择用Android手机测试程序,请确认驱动已经装好,USB连接正常,并且正确设置手机的开发调试选项,然后选择“RunAs--AndroidApplication”。
运行结果展示
图6显示了该实例在AVD上的运行结果。
图6.示例运行结果
点击“Getphone’scontacts”会出现图7和图8所示的结果:
图7.示例运行结果(对话框)
图8.示例运行结果(联系人信息)
点击“AccessIBMHomePage”将会出现图9所示的画面:
图9.显示IBM主页画面
在图6的输入框中输入“Rendy”,然后点击“Submit”按钮,会出现图10所示的页面:
图10.提交用户名后显示画面
从上面的示例可以看到,开发人员只需掌握HTML和JavaScript就可以开发基于PhoneGap的可以和移动设备的本地应用交互的手机Web应用,极大的简化了移动应用的开发周期。
本文对PhoneGap开源框架做了简单介绍,并通过一个示例介绍了如何开发基于PhoneGap框架的可以和移动设备的本地应用交互的MobileWeb应用。PhoneGap以它开发简单、兼容性好、支持标准化等无与伦比的优势正在不断的占据移动应用开发的市场,虽然它也存在运行速度慢、UI反应延时等问题,但是随着技术的进步,这些不足会不断的改进和消除。
部署和运行示例代码
下载代码到本地计算机,打开Eclipse,点击File->import->ExistingProjectsintoWorkspace如图7所示,选择archivefile并指定到代码所在的本地路径(图11),点击Finish按钮。
图11.导入工程到Eclipse
图12.导入Archive文件
工程导入Eclipse后会自动编译,右键点击项目选择RunAsAndroidApplication就可以运行程序。
用同样的方法将WebTest项目导入Eclipse工作空间中,右键点击项目选择RunAsRunOnServer。
小结:Mobile应用基于PhoneGap框架搭建教程的内容介绍完了,希望通过本文的学习能对你有所帮助!
示例代码 | SampleAndroidProject.zip | 340KB | HTTP |
WebTest 项目代码 | WebTest.zip | 6KB | HTTP |
发表评论
-
[转]年度最实用50款免费Android应用推荐
2012-11-08 16:39 3380据国外媒体报道,有人说Android应用市场比iPhone应用 ... -
GIS的学习(四十五)【转】Integration of the MBTiles format on Android
2012-10-22 17:13 2951转载自 http:/ ... -
GIS的学习(四十四)osmdroid sdcard检查
2012-10-15 16:12 2341在许多应用中使用到sdcard的检查,在osmdro ... -
GIS的学习(四十三)osmdroid基于几个经典代理类
2012-10-15 16:06 2633在osmdroid中给基于位置的代理类如下: pack ... -
Android中PopupWindow的用法(位置、动画、焦点)
2012-10-12 14:12 11525在Android中有很多级别的Window,不同级别的Wind ... -
【转】Android根据分辨率进行单位转换-(dp,sp转像素px)
2012-10-11 09:18 27136Android系统中,默认的单位是像素(px)。也就是说,在没 ... -
GIS的学习(二十九)Osmdroid 离线地图存放位置的研究和详细分析
2012-09-23 11:49 11563在手机通过osmdroid调用离线地图必须放在 ... -
GIS的学习(二十八)Osmdroid相关的开源项目
2012-09-23 11:31 25439osm 数据格式(openstreet map)与Ro ... -
GIS的学习(二十七)通过geoserver的georss访问第三方地图
2012-09-23 00:34 3603在geoserver中如果想调用第三方地图可以采 ... -
android中使用 定时更新界面定时器Timer的使用
2012-09-22 22:09 25526handler的使用 一、Handler的定义: ... -
【转】Android应用程序的自动更新升级(自身升级、通过tomcat) .
2012-09-16 15:03 7366http://blog.csdn.net/mu0206mu/a ... -
GIS的学习(二十七)OGC 的WCS WFS 及WMS 服务
2012-09-11 22:22 12130http://www.gisall.com/?6678/v ... -
GIS的学习(二十六)geotools 使用 部分代码总结
2012-09-11 22:20 5732前段时间的一个项目 本来用ae完成了种种的 查询,空间分析等等 ... -
GIS的学习(二十五)geoserver wms中的各种操作API详细讲解和使用
2012-09-10 17:42 9712官方geoserver中WMS服务中几种操作的API的详细说明 ... -
GIS的学习(二十四)android异步调用geoserver wms中的地图
2012-09-10 17:38 8173在geoserver的客户端通过wms的GetMap实现 ... -
GIS的学习(二十三)geoserver中CQL和ECQL的使用
2012-09-10 16:29 6641以下引用自官方文档: CQL and ECQL¶ CQ ... -
GIS的学习(二十二)osmdroid中添加縮放控件
2012-09-06 23:09 2788package com.geoserver.osmdroid; ... -
GIS的学习(二十一)在osmdroid 地图中添加marker 并添加事件
2012-09-06 22:27 6637我有 osmdroid,overlayswithf ... -
GIS的学习(二十)基于Geoserver的WFS服务与Openlayers实现地理查询
2012-08-30 18:48 11413基于Geoserver发布的wfs服务,与Openlayers ... -
GIS的学习(十九)Geoserver使用添加,删除,查询地图中的POI
2012-08-30 17:28 10359在geoserver自定义的地图中通过geoserver ...
相关推荐
目前,随着Google的Android手机和...本文主要介绍PhoneGap的基础知识,并通过一个示例介绍PhoneGap开发测试环境的搭建以及PhoneGap项目的开发和部署,并对PhoneGap提供的主要API做简单介绍.PhoneGap是一款基于HTML5的开
通过这本书,开发者可以了解如何使用PhoneGap框架,选择合适的JavaScript UI框架,理解插件的概念及其应用,并且能够编写自己的自定义插件来扩展应用的功能。全部的示例代码都可以在指定的网址上下载。随着跨平台...
此外,jQuery Mobile 是一个强大的移动设备友好的前端框架,虽然不是PhoneGap的必需部分,但它能极大地提升应用的外观和用户体验。jQuery Mobile 提供一套预定义的样式和事件,使得开发者可以轻松创建与各平台风格...
PhoneGap和jQuery Mobile是移动应用开发中的两个重要工具,它们结合使用可以构建跨平台的、交互性强的移动应用程序。在本项目中,我们将探讨如何利用这两个技术栈来创建原生感十足的移动应用。 PhoneGap,现在也被...
本项目利用jqm的UI框架和PhoneGap的混合应用特性,构建了一个简单的联系人管理应用,旨在帮助用户实现对手机联系人的动态读取、添加和删除功能。虽然修改联系人功能尚未实现,但这个实例已经足以展示如何整合这两项...
PhoneGap是一款开源框架,允许开发者使用HTML、CSS和JavaScript等Web技术来开发跨平台的移动应用程序。PhoneGap利用了WebKit引擎,在移动设备上为Web应用提供了一个本地的应用程序环境,使得Web应用可以像原生应用...
结合 PhoneGap 这样的跨平台开发框架,可以有效地实现高性能、高可用性的移动应用。 **PhoneGap 框架简介:** PhoneGap 是一个开源的开发框架,它允许开发者使用 HTML、CSS 和 JavaScript 这些 Web 技术来构建跨...
jQuery Mobile 是一个基于 jQuery 库的框架,专为移动设备设计,用于构建响应式、触摸友好的 Web 应用程序。它提供了一套丰富的 UI 组件,包括导航、表单、按钮、工具栏等,简化了在移动设备上创建交互式的用户体验...
- **前端界面设计**:使用框架提供的UI组件进行界面搭建。 - **数据存储解决方案**:选择合适的数据库(如MongoDB)来存储和管理数据。 - **应用部署**:将应用部署到云服务提供商,如AWS、Azure等。 5. **案例...
- **简介**:jQuery Mobile 是一个基于 jQuery 的移动 Web 开发框架,支持多种移动设备。 - **特点**: - **多平台支持**:支持 Android、iOS、BlackBerry、BADA、Windows Phone 7、WebOS、Symbian 等。 - **...
- 移动开发框架:PhoneGap、Trigger.io、AppMobi、AppAccelerator等,这些框架可以将HTML5应用打包成原生应用。 - 客户端MVC:Backbones、YUI App Framework、Knockout.js等,这些框架能够帮助开发者管理应用的数据...
2. **PhoneGap**:一个开源框架,可以将基于Web的应用转化为原生应用。它支持多种平台,如Android、iOS、Palm、Windows Mobile、Symbian等。 3. **Eclipse**:一个流行的Java开发工具,也是Android官方推荐的IDE之一...
Cordova 3.x是PhoneGap的另一个名称,它是一个用于创建移动应用程序的开源框架,能够使开发者使用HTML、CSS和JavaScript来构建跨平台的移动应用。Cordova允许开发者访问设备的原生功能,如摄像头、加速度计、联系人...