PhoneGap for Android平台源码的示例分析
发表于:2024-12-02 作者:千家信息网编辑
千家信息网最后更新 2024年12月02日,今天就跟大家聊聊有关PhoneGap for Android平台源码的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。PhoneGap内
千家信息网最后更新 2024年12月02日PhoneGap for Android平台源码的示例分析
今天就跟大家聊聊有关PhoneGap for Android平台源码的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
PhoneGap内部数据传递使用了JSON,比如PhoneGap中指南针部分源码如下:
public class CompassListener extends Plugin implements SensorEventListener { public static int STOPPED = 0; public static int STARTING = 1; public static int RUNNING = 2; public static int ERROR_FAILED_TO_START = 3; public long TIMEOUT = 30000; // Timeout in msec to shut off listener int status; // status of listener float heading; // most recent heading value long timeStamp; // time of most recent value long lastAccessTime; // time the value was last retrieved private SensorManager sensorManager;// Sensor manager Sensor mSensor; // Compass sensor returned by sensor manager /** * Constructor. */ public CompassListener() { this.timeStamp = 0; this.setStatus(CompassListener.STOPPED); } /** * Sets the context of the Command. This can then be used to do things like * get file paths associated with the Activity. * * @param ctx The context of the main Activity. */ public void setContext(PhonegapActivity ctx) { super.setContext(ctx); this.sensorManager = (SensorManager) ctx.getSystemService(Context.SENSOR_SERVICE); } /** * Executes the request and returns PluginResult. * * @param action The action to execute. * @param args JSONArry of arguments for the plugin. * @param callbackId The callback id used when calling back into JavaScript. * @return A PluginResult object with a status and message. */ public PluginResult execute(String action, JSONArray args, String callbackId) { PluginResult.Status status = PluginResult.Status.OK; String result = ""; try { if (action.equals("start")) { this.start(); } else if (action.equals("stop")) { this.stop(); } else if (action.equals("getStatus")) { int i = this.getStatus(); return new PluginResult(status, i); } else if (action.equals("getHeading")) { // If not running, then this is an async call, so don't worry about waiting if (this.status != RUNNING) { int r = this.start(); if (r == ERROR_FAILED_TO_START) { return new PluginResult(PluginResult.Status.IO_EXCEPTION, ERROR_FAILED_TO_START); } // Wait until running long timeout = 2000; while ((this.status == STARTING) && (timeout > 0)) { timeouttimeout = timeout - 100; try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } if (timeout == 0) { return new PluginResult(PluginResult.Status.IO_EXCEPTION, AccelListener.ERROR_FAILED_TO_START); } } float f = this.getHeading(); return new PluginResult(status, f); } else if (action.equals("setTimeout")) { this.setTimeout(args.getLong(0)); } else if (action.equals("getTimeout")) { long l = this.getTimeout(); return new PluginResult(status, l); } return new PluginResult(status, result); } catch (JSONException e) { e.printStackTrace(); return new PluginResult(PluginResult.Status.JSON_EXCEPTION); } } /** * Identifies if action to be executed returns a value and should be run synchronously. * * @param action The action to execute * @return T=returns value */ public boolean isSynch(String action) { if (action.equals("getStatus")) { return true; } else if (action.equals("getHeading")) { // Can only return value if RUNNING if (this.status == RUNNING) { return true; } } else if (action.equals("getTimeout")) { return true; } return false; } /** * Called when listener is to be shut down and object is being destroyed. */ public void onDestroy() { this.stop(); } //-------------------------------------------------------------------------- // LOCAL METHODS //-------------------------------------------------------------------------- /** * Start listening for compass sensor. * * @return status of listener */ public int start() { // If already starting or running, then just return if ((this.status == CompassListener.RUNNING) || (this.status == CompassListener.STARTING)) { return this.status; } // Get accelerometer from sensor manager Listlist = this.sensorManager.getSensorList(Sensor.TYPE_ORIENTATION); // If found, then register as listener if (list.size() > 0) { this.mSensor = list.get(0); this.sensorManager.registerListener(this, this.mSensor, SensorManager.SENSOR_DELAY_NORMAL); this.lastAccessTime = System.currentTimeMillis(); this.setStatus(CompassListener.STARTING); } // If error, then set status to error else { this.setStatus(CompassListener.ERROR_FAILED_TO_START); } return this.status; } /** * Stop listening to compass sensor. */ public void stop() { if (this.status != CompassListener.STOPPED) { this.sensorManager.unregisterListener(this); } this.setStatus(CompassListener.STOPPED); } public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub } /** * Sensor listener event. * * @param SensorEvent event */ public void onSensorChanged(SensorEvent event) { // We only care about the orientation as far as it refers to Magnetic North float heading = event.values[0]; // Save heading this.timeStamp = System.currentTimeMillis(); this.heading = heading; this.setStatus(CompassListener.RUNNING); // If heading hasn't been read for TIMEOUT time, then turn off compass sensor to save power if ((this.timeStamp - this.lastAccessTime) > this.TIMEOUT) { this.stop(); } } /** * Get status of compass sensor. * * @return status */ public int getStatus() { return this.status; } /** * Get the most recent compass heading. * * @return heading */ public float getHeading() { this.lastAccessTime = System.currentTimeMillis(); return this.heading; } /** * Set the timeout to turn off compass sensor if getHeading() hasn't been called. * * @param timeout Timeout in msec. */ public void setTimeout(long timeout) { this.TIMEOUT = timeout; } /** * Get the timeout to turn off compass sensor if getHeading() hasn't been called. * * @return timeout in msec */ public long getTimeout() { return this.TIMEOUT; } /** * Set the status and send it to JavaScript. * @param status */ private void setStatus(int status) { this.status = status; } }
看完上述内容,你们对PhoneGap for Android平台源码的示例分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
源码
内容
平台
示例
分析
指南
指南针
数据
更多
知识
篇文章
行业
资讯
资讯频道
部分
频道
进一
支持
有关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库更新0件还不出异常
网络安全在身边话题
数据库增减改删
能连上网但是不能连接钉钉服务器
域名服务器绑定
滨海新区数据网络技术售后保障
数据库 传递依赖
网络安全教育班会主题内容
数据库的几种连接的区别
北京联创鸿瑞网络技术官网
太极下载模块服务器失败
iis连接远程数据库
国药控软件开发人员
微信添加好友服务器繁忙什么意思
京博云商软件开发商
数据库管理员用户
一图读懂 为网络安全法
唐山网络技术推荐厂家
苏通网络技术
imp 还原数据库重复数据
小草互联网科技
ip广播服务器功率
石家庄佳成网络技术有限公司
网络安全密钥密码
江苏中高端服务器生产商云空间
网络技术对通信业的影响
心酸伴奏软件开发
服务器挂旺旺
网络技术措施使用规范
福建电商软件开发技术