- 浏览: 7325438 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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的信息
Phonegap中自定义插件的使用
在phonegap中需要实现特定相关的功能,可能需要自定义扩展一下功能,那么扩展phonegap组件就成为了可能。
源代码结构图:
本文目的在于讲述怎么扩展一个phonegap组件以及实现。
针对phonegap中activty扩展类:
package com.easyway.phonegap.datepicker; import com.phonegap.*; import android.os.Bundle; /** * 实现DroidGap的 * * @Title: * @Description: 实现 phonegap调用android中datepicker组件 * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-5-4 * @author longgangbai * @version 1.0 */ public class PhonegapDatePluginActivity extends DroidGap { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //启动首页 super.loadUrl("file:///android_asset/www/index.html"); } }
插件实现类:
package com.easyway.phonegap.datepicker; import java.util.Calendar; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.app.TimePickerDialog; import android.app.TimePickerDialog.OnTimeSetListener; import android.util.Log; import android.widget.DatePicker; import android.widget.TimePicker; import com.phonegap.api.PhonegapActivity; import com.phonegap.api.Plugin; import com.phonegap.api.PluginResult; import com.phonegap.api.PluginResult.Status; /** * * 实现DroidGap的在phonegap中想采用类似android中时间选择器datepicker * * @Title: * @Description: 实现 phonegap调用android中datepicker组件 * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-5-4 * @author longgangbai * @version 1.0 */ public class DatePickerPlugin extends Plugin { private static final String ACTION_DATE = "date"; private static final String ACTION_TIME = "time"; /* * 必须实现这个方法 * (non-Javadoc) * * @see com.phonegap.api.Plugin#execute(java.lang.String, * org.json.JSONArray, java.lang.String) */ @Override public PluginResult execute(final String action, final JSONArray data, final String callBackId) { Log.d("DatePickerPlugin", "Plugin Called"); PluginResult result = null; if (ACTION_DATE.equalsIgnoreCase(action)) { Log.d("DatePickerPluginListener execute", ACTION_DATE); this.showDatePicker(callBackId); final PluginResult r = new PluginResult( PluginResult.Status.NO_RESULT); r.setKeepCallback(true); return r; } else if (ACTION_TIME.equalsIgnoreCase(action)) { Log.d("DatePickerPluginListener execute", ACTION_TIME); this.showTimePicker(callBackId); final PluginResult r = new PluginResult( PluginResult.Status.NO_RESULT); r.setKeepCallback(true); return r; } else { result = new PluginResult(Status.INVALID_ACTION); Log.d("DatePickerPlugin", "Invalid action : " + action + " passed"); } return result; } public synchronized void showTimePicker(final String callBackId) { final DatePickerPlugin datePickerPlugin = this; final PhonegapActivity currentCtx = ctx; final Runnable runnable = new Runnable() { public void run() { final TimePickerDialog tpd = new TimePickerDialog(currentCtx, new OnTimeSetListener() { public void onTimeSet(final TimePicker view, final int hourOfDay, final int minute) { final JSONObject userChoice = new JSONObject(); try { userChoice.put("hour", hourOfDay); userChoice.put("min", minute); } catch (final JSONException jsonEx) { Log.e("showDatePicker", "Got JSON Exception " + jsonEx.getMessage()); datePickerPlugin.error(new PluginResult( Status.JSON_EXCEPTION), callBackId); } datePickerPlugin.success(new PluginResult( PluginResult.Status.OK, userChoice), callBackId); } }, 1, 1, true); tpd.show(); } }; ctx.runOnUiThread(runnable); } public synchronized void showDatePicker(final String callBackId) { final DatePickerPlugin datePickerPlugin = this; final PhonegapActivity currentCtx = ctx; final Calendar c = Calendar.getInstance(); final int mYear = c.get(Calendar.YEAR); final int mMonth = c.get(Calendar.MONTH); final int mDay = c.get(Calendar.DAY_OF_MONTH); final Runnable runnable = new Runnable() { public void run() { final DatePickerDialog dpd = new DatePickerDialog(currentCtx, new OnDateSetListener() { public void onDateSet(final DatePicker view, final int year, final int monthOfYear, final int dayOfMonth) { final JSONObject userChoice = new JSONObject(); try { userChoice.put("year", year); userChoice.put("month", monthOfYear); userChoice.put("day", dayOfMonth); } catch (final JSONException jsonEx) { Log.e("showDatePicker", "Got JSON Exception " + jsonEx.getMessage()); datePickerPlugin.error(new PluginResult( Status.JSON_EXCEPTION), callBackId); } datePickerPlugin.success(new PluginResult( PluginResult.Status.OK, userChoice), callBackId); } }, mYear, mMonth, mDay); dpd.show(); } }; ctx.runOnUiThread(runnable); } }
phonegap中plugin.xml中配置:
<?xml version="1.0" encoding="utf-8"?> <plugins> <plugin name="App" value="com.phonegap.App"/> <plugin name="Geolocation" value="com.phonegap.GeoBroker"/> <plugin name="Device" value="com.phonegap.Device"/> <plugin name="Accelerometer" value="com.phonegap.AccelListener"/> <plugin name="Compass" value="com.phonegap.CompassListener"/> <plugin name="Media" value="com.phonegap.AudioHandler"/> <plugin name="Camera" value="com.phonegap.CameraLauncher"/> <plugin name="Contacts" value="com.phonegap.ContactManager"/> <plugin name="Crypto" value="com.phonegap.CryptoHandler"/> <plugin name="File" value="com.phonegap.FileUtils"/> <plugin name="Network Status" value="com.phonegap.NetworkManager"/> <plugin name="Notification" value="com.phonegap.Notification"/> <plugin name="Storage" value="com.phonegap.Storage"/> <plugin name="Temperature" value="com.phonegap.TempListener"/> <plugin name="FileTransfer" value="com.phonegap.FileTransfer"/> <plugin name="Capture" value="com.phonegap.Capture"/> <plugin name="DatePickerPlugin" value="com.easyway.phonegap.datepicker.DatePickerPlugin"/> </plugins>
插件对应的js的编写:
/** * * @return Object literal singleton instance of DatePicker */ var DatePicker = function() { }; DatePicker.prototype.showDateOrTime = function(action,successCallback, failureCallback) { return PhoneGap.exec( successCallback, //Success callback from the plugin failureCallback, //Error callback from the plugin 'DatePickerPlugin', //Tell PhoneGap to run "DatePickerPlugin" Plugin action, //Tell plugin, which action we want to perform []); //Passing list of args to the plugin }; /** * Enregistre une nouvelle bibliothèque de fonctions * auprès de PhoneGap **/ PhoneGap.addConstructor(function() { //如果不支持window.plugins,则创建并设置 if(!window.plugins){ window.plugins={}; } window.plugins.datePickerPlugin=new DatePicker(); //向phonegap中注入插件相关的js //Register the javascript plugin with PhoneGap PhoneGap.addPlugin('datePickerPlugin', new DatePicker()); //phonegap中注入后台插件相关的java类 //Register the native class of plugin with PhoneGap PluginManager.addService("DatePickerPlugin", "com.easyway.phonegap.datepicker.DatePickerPlugin"); });
页面调用如下:
<!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>Minimal AppLaud App</title> <!-- 加载phonegap --> <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script> <!-- 加载jquery --> <script type="text/javascript" charset="utf-8" src="jquery.mobile/jquery-1.6.4.min"></script> <!-- 加载jquerymobile --> <script type="text/javascript" charset="utf-8" src="jquery.mobile/jquery.mobile-1.0.1.js"></script> <!-- 加载自定义插件 --> <script type="text/javascript" charset="utf-8" src="datePickerPlugin.js"></script> <script type="text/javascript" charset="utf-8"> $(function(){ $("#datepicker").click(function(){ alert("0000000"); window.plugins.datePickerPlugin.showDateOrTime( 'date', function(r){ document.getElementById("mydatetargetfield").value = r.day + "/" + r.month + "/" + r.year; }, function(e){console.log(e);} ); }); }); </script> </head> <body class="theme"> <input id="mydatetargetfield" type="text" /> <input id="datepicker" type="button" value="时间选择器"> </body> </html>
运行结果如下:
源代码如下:
- PhonegapDatePlugin.rar (860.1 KB)
- 下载次数: 480
发表评论
-
[转]年度最实用50款免费Android应用推荐
2012-11-08 16:39 3361据国外媒体报道,有人说Android应用市场比iPhone应用 ... -
GIS的学习(四十五)【转】Integration of the MBTiles format on Android
2012-10-22 17:13 2930转载自 http:/ ... -
GIS的学习(四十四)osmdroid sdcard检查
2012-10-15 16:12 2325在许多应用中使用到sdcard的检查,在osmdro ... -
GIS的学习(四十三)osmdroid基于几个经典代理类
2012-10-15 16:06 2616在osmdroid中给基于位置的代理类如下: pack ... -
Android中PopupWindow的用法(位置、动画、焦点)
2012-10-12 14:12 11505在Android中有很多级别的Window,不同级别的Wind ... -
【转】Android根据分辨率进行单位转换-(dp,sp转像素px)
2012-10-11 09:18 27119Android系统中,默认的单位是像素(px)。也就是说,在没 ... -
GIS的学习(二十九)Osmdroid 离线地图存放位置的研究和详细分析
2012-09-23 11:49 11494在手机通过osmdroid调用离线地图必须放在 ... -
GIS的学习(二十八)Osmdroid相关的开源项目
2012-09-23 11:31 25373osm 数据格式(openstreet map)与Ro ... -
GIS的学习(二十七)通过geoserver的georss访问第三方地图
2012-09-23 00:34 3594在geoserver中如果想调用第三方地图可以采 ... -
android中使用 定时更新界面定时器Timer的使用
2012-09-22 22:09 25505handler的使用 一、Handler的定义: ... -
【转】Android应用程序的自动更新升级(自身升级、通过tomcat) .
2012-09-16 15:03 7352http://blog.csdn.net/mu0206mu/a ... -
GIS的学习(二十七)OGC 的WCS WFS 及WMS 服务
2012-09-11 22:22 12093http://www.gisall.com/?6678/v ... -
GIS的学习(二十六)geotools 使用 部分代码总结
2012-09-11 22:20 5675前段时间的一个项目 本来用ae完成了种种的 查询,空间分析等等 ... -
GIS的学习(二十五)geoserver wms中的各种操作API详细讲解和使用
2012-09-10 17:42 9688官方geoserver中WMS服务中几种操作的API的详细说明 ... -
GIS的学习(二十四)android异步调用geoserver wms中的地图
2012-09-10 17:38 8142在geoserver的客户端通过wms的GetMap实现 ... -
GIS的学习(二十三)geoserver中CQL和ECQL的使用
2012-09-10 16:29 6609以下引用自官方文档: CQL and ECQL¶ CQ ... -
GIS的学习(二十二)osmdroid中添加縮放控件
2012-09-06 23:09 2774package com.geoserver.osmdroid; ... -
GIS的学习(二十一)在osmdroid 地图中添加marker 并添加事件
2012-09-06 22:27 6594我有 osmdroid,overlayswithf ... -
GIS的学习(二十)基于Geoserver的WFS服务与Openlayers实现地理查询
2012-08-30 18:48 11395基于Geoserver发布的wfs服务,与Openlayers ... -
GIS的学习(十九)Geoserver使用添加,删除,查询地图中的POI
2012-08-30 17:28 10339在geoserver自定义的地图中通过geoserver ...
相关推荐
PhoneGap iOS 自定义插件是移动应用开发中的一个重要概念,它允许开发者利用JavaScript与原生iOS平台进行交互,实现更高效、更丰富的功能。PhoneGap是一个开源框架,它基于Apache Cordova,允许开发者使用HTML、CSS...
这个特定的“android PhoneGap 自定义插件”是关于在Android平台上扩展PhoneGap功能的一个实例,通过编写自定义插件,开发者可以调用Android的本地API,实现更丰富的功能,比如访问硬件设备、系统服务等。...
这是基于cordova4.2的自定义插件demo org.apache.cordova.toast是插件 phonegapplugin4是包含了cordovaLib的工程 详细教程可看我博客http://blog.csdn.net/kong92917
在"自定义plugin插件实现phonegap与Android交互"这个主题中,我们主要关注的是如何通过编写自定义插件来打通JavaScript和Android之间的通信壁垒。在PhoneGap中,Plugin是连接Web层和Native层的桥梁,它们是用Java...
Phonegap自定义插件例子(Android) cordova3.4 详细课参阅我的博客: http://blog.csdn.net/xiaoluo5238/article/details/38711331
总的来说,理解和解决PhoneGap和Cordova中的自定义插件问题需要对这两个框架的工作原理有深入的理解,同时也需要熟悉Android的开发环境。遵循上述步骤,你应该能够有效地创建、管理和修复自定义插件的问题。
在`FileOpener`压缩包中,可能包含的是这个插件的源码或者预编译版本,供开发者自定义或学习使用。了解其工作原理和结构有助于更有效地集成和定制插件功能。 总之,PhoneGap打开文档插件是使PhoneGap应用具备打开和...
这个"phonegap-phonegap-plugins-2dc6525"压缩包中的所有这些插件都是PhoneGap社区的贡献,它们经过了多次迭代和优化,旨在帮助开发者轻松地增强其应用的功能。通过集成这些插件,开发者可以充分利用PhoneGap的跨...
在Android中,GPS定位涉及到Android的Location API,因此我们需要创建一个自定义的PhoneGap插件来调用这些API。 二、Android Location API Android的Location API提供了获取设备位置的能力,包括GPS(全球定位系统...
了解如何创建自定义插件对于扩展PhoneGap应用的功能非常有用,特别是当需要的特性未被现有的公共插件覆盖时。 总的来说,PhoneGap插件是连接Web应用和移动设备硬件的桥梁,它们使开发者能够充分利用跨平台框架的...
在Android平台上,自定义插件的开发为PhoneGap应用扩展了无限的可能性,使开发者能够访问Android系统的所有功能,同时保持HTML5应用的开发效率和可移植性。这个具体的MD5加密插件示例是一个很好的起点,可以帮助...
PhoneGap项目中可能包含第三方库或自定义插件,例如在`phoneGap.rar`中可能有预编译的插件或特定平台的配置文件。这些文件需要正确解压并放入项目结构的相应位置,然后在`config.xml`中注册,以便在应用中使用。 ...
- 创建PhoneGap项目时,首先需要在命令行中使用PhoneGap或Cordova CLI初始化一个新的项目结构。 - 配置项目的`config.xml`文件,设置应用的元数据,如应用名称、版本号、权限等。 - 将HTML、CSS和JavaScript代码...
4. **插件开发**:如果你需要自定义特定功能,你可以开发自己的PhoneGap插件。这涉及到编写JavaScript接口(通常位于`www`目录下的JS文件),以及对应的Android Java类,该类继承自CordovaPlugin,并重写`execute()`...
在这个特定的场景中,我们关注的是在iOS平台上为Cordova开发自定义插件的过程,这涉及到XML配置文件和Objective-C(OC)源代码的编写。 首先,Cordova的核心理念是通过WebView来呈现Web应用,同时通过插件系统与...
PhoneGap与极光推送插件是移动应用开发中的两个重要工具。PhoneGap是一个开源框架,它允许开发者使用HTML、CSS和JavaScript来构建跨平台的原生移动应用。它通过Apache Cordova将这些Web技术转化为可以在iOS、Android...
在PhoneGap项目中添加自定义插件,需要在`config.xml`中声明该插件,并确保在编译时将Java或Objective-C代码包含到项目中。对于Android,可能还需要在`res/xml/config.xml`中配置权限,如显示对话框所需的`android....
总结来说,PhoneGap iOS的Web应用插件Demo是一个学习和实践PhoneGap插件开发的实例,通过PANativeBridgeDemo,开发者可以了解到如何创建、使用和管理自定义插件,以便在Web应用中充分利用iOS设备的功能。这样的实践...
例如,`cordova.plugins.QRScanner` 对象在`qrscanner`插件中提供扫描功能。我们可以使用这些接口启动扫描、暂停扫描、关闭相机,以及处理扫描结果。 4. **使用示例**: 以下是一个简单的JavaScript代码示例,展示...