mobile_template 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +22 -0
  4. data/README.md +28 -0
  5. data/Rakefile +3 -0
  6. data/bin/mobile_template +71 -0
  7. data/lib/mobile_template/version.rb +4 -0
  8. data/lib/mobile_template.rb +5 -0
  9. data/mobile_template.gemspec +21 -0
  10. data/templates/assets/Gemfile +4 -0
  11. data/templates/assets/config.rb +96 -0
  12. data/templates/assets/config.ru +4 -0
  13. data/templates/assets/source/images/vendor/ajax-loader.gif +0 -0
  14. data/templates/assets/source/images/vendor/ajax-loader.png +0 -0
  15. data/templates/assets/source/images/vendor/icons-18-black.png +0 -0
  16. data/templates/assets/source/images/vendor/icons-18-white.png +0 -0
  17. data/templates/assets/source/images/vendor/icons-36-black.png +0 -0
  18. data/templates/assets/source/images/vendor/icons-36-white.png +0 -0
  19. data/templates/assets/source/index.html.erb +2 -0
  20. data/templates/assets/source/javascripts/app/index.js.coffee +2 -0
  21. data/templates/assets/source/javascripts/application.js.coffee +5 -0
  22. data/templates/assets/source/javascripts/vendor/cordova.js +4841 -0
  23. data/templates/assets/source/javascripts/vendor/jquery.js +9267 -0
  24. data/templates/assets/source/javascripts/vendor/jquery.mobile.js +7410 -0
  25. data/templates/assets/source/layout.erb +24 -0
  26. data/templates/assets/source/stylesheets/application.css.scss +2 -0
  27. data/templates/assets/source/stylesheets/vendor/jquery.mobile.css.scss +1872 -0
  28. data/templates/cordova_android/.gitignore +18 -0
  29. data/templates/cordova_android/LICENSE +202 -0
  30. data/templates/cordova_android/NOTICE +5 -0
  31. data/templates/cordova_android/README.md +95 -0
  32. data/templates/cordova_android/VERSION +1 -0
  33. data/templates/cordova_android/bin/BOOM +4 -0
  34. data/templates/cordova_android/bin/autotest +2 -0
  35. data/templates/cordova_android/bin/bench +29 -0
  36. data/templates/cordova_android/bin/create +46 -0
  37. data/templates/cordova_android/bin/create.bat +1 -0
  38. data/templates/cordova_android/bin/create.js +88 -0
  39. data/templates/cordova_android/bin/create.xml +79 -0
  40. data/templates/cordova_android/bin/node_modules/.bin/cake +7 -0
  41. data/templates/cordova_android/bin/node_modules/.bin/coffee +7 -0
  42. data/templates/cordova_android/bin/node_modules/.bin/nodeunit +120 -0
  43. data/templates/cordova_android/bin/node_modules/coffee-script/.npmignore +11 -0
  44. data/templates/cordova_android/bin/node_modules/coffee-script/LICENSE +22 -0
  45. data/templates/cordova_android/bin/node_modules/coffee-script/README +48 -0
  46. data/templates/cordova_android/bin/node_modules/coffee-script/Rakefile +78 -0
  47. data/templates/cordova_android/bin/node_modules/coffee-script/bin/cake +7 -0
  48. data/templates/cordova_android/bin/node_modules/coffee-script/bin/coffee +7 -0
  49. data/templates/cordova_android/bin/node_modules/coffee-script/extras/jsl.conf +44 -0
  50. data/templates/cordova_android/bin/node_modules/coffee-script/lib/browser.js +75 -0
  51. data/templates/cordova_android/bin/node_modules/coffee-script/lib/cake.js +76 -0
  52. data/templates/cordova_android/bin/node_modules/coffee-script/lib/coffee-script.js +135 -0
  53. data/templates/cordova_android/bin/node_modules/coffee-script/lib/command.js +301 -0
  54. data/templates/cordova_android/bin/node_modules/coffee-script/lib/grammar.js +591 -0
  55. data/templates/cordova_android/bin/node_modules/coffee-script/lib/helpers.js +66 -0
  56. data/templates/cordova_android/bin/node_modules/coffee-script/lib/index.js +8 -0
  57. data/templates/cordova_android/bin/node_modules/coffee-script/lib/lexer.js +656 -0
  58. data/templates/cordova_android/bin/node_modules/coffee-script/lib/nodes.js +2289 -0
  59. data/templates/cordova_android/bin/node_modules/coffee-script/lib/optparse.js +111 -0
  60. data/templates/cordova_android/bin/node_modules/coffee-script/lib/parser.js +676 -0
  61. data/templates/cordova_android/bin/node_modules/coffee-script/lib/repl.js +123 -0
  62. data/templates/cordova_android/bin/node_modules/coffee-script/lib/rewriter.js +363 -0
  63. data/templates/cordova_android/bin/node_modules/coffee-script/lib/scope.js +120 -0
  64. data/templates/cordova_android/bin/node_modules/coffee-script/package.json +27 -0
  65. data/templates/cordova_android/bin/node_modules/nodeunit/.gitignore +5 -0
  66. data/templates/cordova_android/bin/node_modules/nodeunit/.npmignore +3 -0
  67. data/templates/cordova_android/bin/node_modules/nodeunit/CONTRIBUTORS.md +60 -0
  68. data/templates/cordova_android/bin/node_modules/nodeunit/LICENSE +19 -0
  69. data/templates/cordova_android/bin/node_modules/nodeunit/Makefile +126 -0
  70. data/templates/cordova_android/bin/node_modules/nodeunit/README.md +432 -0
  71. data/templates/cordova_android/bin/node_modules/nodeunit/bin/nodeunit +120 -0
  72. data/templates/cordova_android/bin/node_modules/nodeunit/bin/nodeunit.json +10 -0
  73. data/templates/cordova_android/bin/node_modules/nodeunit/deps/async.js +623 -0
  74. data/templates/cordova_android/bin/node_modules/nodeunit/deps/console.log.js +55 -0
  75. data/templates/cordova_android/bin/node_modules/nodeunit/deps/ejs.js +125 -0
  76. data/templates/cordova_android/bin/node_modules/nodeunit/deps/json2.js +483 -0
  77. data/templates/cordova_android/bin/node_modules/nodeunit/examples/browser/nodeunit.js +1757 -0
  78. data/templates/cordova_android/bin/node_modules/nodeunit/examples/browser/suite1.js +12 -0
  79. data/templates/cordova_android/bin/node_modules/nodeunit/examples/browser/suite2.js +13 -0
  80. data/templates/cordova_android/bin/node_modules/nodeunit/examples/browser/test.html +16 -0
  81. data/templates/cordova_android/bin/node_modules/nodeunit/img/example_fail.png +0 -0
  82. data/templates/cordova_android/bin/node_modules/nodeunit/img/example_pass.png +0 -0
  83. data/templates/cordova_android/bin/node_modules/nodeunit/index.js +3 -0
  84. data/templates/cordova_android/bin/node_modules/nodeunit/lib/assert.js +316 -0
  85. data/templates/cordova_android/bin/node_modules/nodeunit/lib/core.js +260 -0
  86. data/templates/cordova_android/bin/node_modules/nodeunit/lib/nodeunit.js +82 -0
  87. data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/browser.js +119 -0
  88. data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/default.js +123 -0
  89. data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/html.js +107 -0
  90. data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/index.js +9 -0
  91. data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/junit.js +183 -0
  92. data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/minimal.js +112 -0
  93. data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/skip_passed.js +105 -0
  94. data/templates/cordova_android/bin/node_modules/nodeunit/lib/track.js +48 -0
  95. data/templates/cordova_android/bin/node_modules/nodeunit/lib/types.js +187 -0
  96. data/templates/cordova_android/bin/node_modules/nodeunit/lib/utils.js +209 -0
  97. data/templates/cordova_android/bin/node_modules/nodeunit/man1/nodeunit.1 +95 -0
  98. data/templates/cordova_android/bin/node_modules/nodeunit/nodelint.cfg +4 -0
  99. data/templates/cordova_android/bin/node_modules/nodeunit/package.json +56 -0
  100. data/templates/cordova_android/bin/node_modules/nodeunit/share/junit.xml.ejs +19 -0
  101. data/templates/cordova_android/bin/node_modules/nodeunit/share/license.js +11 -0
  102. data/templates/cordova_android/bin/node_modules/nodeunit/share/nodeunit.css +70 -0
  103. data/templates/cordova_android/bin/templates/project/.cordova/android/readme.md +1 -0
  104. data/templates/cordova_android/bin/templates/project/.cordova/readme.md +3 -0
  105. data/templates/cordova_android/bin/templates/project/cordova/create +36 -0
  106. data/templates/cordova_android/bin/templates/project/cordova/debug +9 -0
  107. data/templates/cordova_android/bin/templates/project/cordova/emulate +12 -0
  108. data/templates/cordova_android/bin/templates/project/cordova/log +3 -0
  109. data/templates/cordova_android/bin/templates/project/cordova/templates/Activity.java +16 -0
  110. data/templates/cordova_android/bin/templates/project/cordova/templates/project/AndroidManifest.xml +50 -0
  111. data/templates/cordova_android/bin/templates/project/cordova/templates/project/assets/www/index.html +42 -0
  112. data/templates/cordova_android/bin/templates/project/cordova/templates/project/assets/www/main.js +146 -0
  113. data/templates/cordova_android/bin/templates/project/cordova/templates/project/assets/www/master.css +96 -0
  114. data/templates/cordova_android/bin/templates/project/cordova/templates/project/res/drawable/icon.png +0 -0
  115. data/templates/cordova_android/bin/templates/project/cordova/templates/project/res/xml/cordova.xml +5 -0
  116. data/templates/cordova_android/bin/templates/project/cordova/templates/project/res/xml/plugins.xml +19 -0
  117. data/templates/cordova_android/bin/test +26 -0
  118. data/templates/cordova_android/bin/tests/autotest.coffee +4 -0
  119. data/templates/cordova_android/bin/tests/create.coffee +21 -0
  120. data/templates/cordova_android/bin/tests/debug.coffee +0 -0
  121. data/templates/cordova_android/bin/tests/test.coffee +0 -0
  122. data/templates/cordova_android/framework/.classpath +8 -0
  123. data/templates/cordova_android/framework/.project +33 -0
  124. data/templates/cordova_android/framework/AndroidManifest.xml +68 -0
  125. data/templates/cordova_android/framework/ant.properties +34 -0
  126. data/templates/cordova_android/framework/assets/js/accelerometer.js +137 -0
  127. data/templates/cordova_android/framework/assets/js/app.js +89 -0
  128. data/templates/cordova_android/framework/assets/js/battery.js +134 -0
  129. data/templates/cordova_android/framework/assets/js/camera.js +168 -0
  130. data/templates/cordova_android/framework/assets/js/capture.js +203 -0
  131. data/templates/cordova_android/framework/assets/js/compass.js +168 -0
  132. data/templates/cordova_android/framework/assets/js/contact.js +310 -0
  133. data/templates/cordova_android/framework/assets/js/cordova.android.js +4841 -0
  134. data/templates/cordova_android/framework/assets/js/cordova.js.base +924 -0
  135. data/templates/cordova_android/framework/assets/js/crypto.js +54 -0
  136. data/templates/cordova_android/framework/assets/js/device.js +83 -0
  137. data/templates/cordova_android/framework/assets/js/file.js +1082 -0
  138. data/templates/cordova_android/framework/assets/js/filetransfer.js +125 -0
  139. data/templates/cordova_android/framework/assets/js/geolocation.js +209 -0
  140. data/templates/cordova_android/framework/assets/js/header.txt +19 -0
  141. data/templates/cordova_android/framework/assets/js/media.js +233 -0
  142. data/templates/cordova_android/framework/assets/js/network.js +100 -0
  143. data/templates/cordova_android/framework/assets/js/notification.js +133 -0
  144. data/templates/cordova_android/framework/assets/js/position.js +100 -0
  145. data/templates/cordova_android/framework/assets/js/storage.js +439 -0
  146. data/templates/cordova_android/framework/assets/www/index.html +27 -0
  147. data/templates/cordova_android/framework/build.xml +216 -0
  148. data/templates/cordova_android/framework/libs/commons-codec-1.3.jar +0 -0
  149. data/templates/cordova_android/framework/proguard-project.txt +20 -0
  150. data/templates/cordova_android/framework/project.properties +14 -0
  151. data/templates/cordova_android/framework/res/drawable/icon.png +0 -0
  152. data/templates/cordova_android/framework/res/drawable/splash.png +0 -0
  153. data/templates/cordova_android/framework/res/layout/main.xml +29 -0
  154. data/templates/cordova_android/framework/res/values/strings.xml +23 -0
  155. data/templates/cordova_android/framework/res/xml/cordova.xml +37 -0
  156. data/templates/cordova_android/framework/res/xml/plugins.xml +37 -0
  157. data/templates/cordova_android/framework/src/com/phonegap/api/IPlugin.java +27 -0
  158. data/templates/cordova_android/framework/src/com/phonegap/api/LOG.java +28 -0
  159. data/templates/cordova_android/framework/src/com/phonegap/api/PhonegapActivity.java +28 -0
  160. data/templates/cordova_android/framework/src/com/phonegap/api/Plugin.java +27 -0
  161. data/templates/cordova_android/framework/src/com/phonegap/api/PluginManager.java +35 -0
  162. data/templates/cordova_android/framework/src/com/phonegap/api/PluginResult.java +53 -0
  163. data/templates/cordova_android/framework/src/org/apache/cordova/AccelListener.java +311 -0
  164. data/templates/cordova_android/framework/src/org/apache/cordova/App.java +198 -0
  165. data/templates/cordova_android/framework/src/org/apache/cordova/AudioHandler.java +364 -0
  166. data/templates/cordova_android/framework/src/org/apache/cordova/AudioPlayer.java +450 -0
  167. data/templates/cordova_android/framework/src/org/apache/cordova/AuthenticationToken.java +69 -0
  168. data/templates/cordova_android/framework/src/org/apache/cordova/BatteryListener.java +156 -0
  169. data/templates/cordova_android/framework/src/org/apache/cordova/CallbackServer.java +431 -0
  170. data/templates/cordova_android/framework/src/org/apache/cordova/CameraLauncher.java +500 -0
  171. data/templates/cordova_android/framework/src/org/apache/cordova/Capture.java +400 -0
  172. data/templates/cordova_android/framework/src/org/apache/cordova/CompassListener.java +308 -0
  173. data/templates/cordova_android/framework/src/org/apache/cordova/ContactAccessor.java +198 -0
  174. data/templates/cordova_android/framework/src/org/apache/cordova/ContactAccessorSdk5.java +1934 -0
  175. data/templates/cordova_android/framework/src/org/apache/cordova/ContactManager.java +113 -0
  176. data/templates/cordova_android/framework/src/org/apache/cordova/CordovaChromeClient.java +314 -0
  177. data/templates/cordova_android/framework/src/org/apache/cordova/CordovaWebViewClient.java +306 -0
  178. data/templates/cordova_android/framework/src/org/apache/cordova/Device.java +219 -0
  179. data/templates/cordova_android/framework/src/org/apache/cordova/DirectoryManager.java +161 -0
  180. data/templates/cordova_android/framework/src/org/apache/cordova/DroidGap.java +1417 -0
  181. data/templates/cordova_android/framework/src/org/apache/cordova/ExifHelper.java +165 -0
  182. data/templates/cordova_android/framework/src/org/apache/cordova/FileTransfer.java +458 -0
  183. data/templates/cordova_android/framework/src/org/apache/cordova/FileUploadResult.java +63 -0
  184. data/templates/cordova_android/framework/src/org/apache/cordova/FileUtils.java +1048 -0
  185. data/templates/cordova_android/framework/src/org/apache/cordova/GeoBroker.java +165 -0
  186. data/templates/cordova_android/framework/src/org/apache/cordova/GeoListener.java +133 -0
  187. data/templates/cordova_android/framework/src/org/apache/cordova/GpsListener.java +163 -0
  188. data/templates/cordova_android/framework/src/org/apache/cordova/HttpHandler.java +80 -0
  189. data/templates/cordova_android/framework/src/org/apache/cordova/LinearLayoutSoftKeyboardDetect.java +104 -0
  190. data/templates/cordova_android/framework/src/org/apache/cordova/NetworkListener.java +153 -0
  191. data/templates/cordova_android/framework/src/org/apache/cordova/NetworkManager.java +248 -0
  192. data/templates/cordova_android/framework/src/org/apache/cordova/Notification.java +366 -0
  193. data/templates/cordova_android/framework/src/org/apache/cordova/PreferenceNode.java +34 -0
  194. data/templates/cordova_android/framework/src/org/apache/cordova/PreferenceSet.java +62 -0
  195. data/templates/cordova_android/framework/src/org/apache/cordova/StandAlone.java +35 -0
  196. data/templates/cordova_android/framework/src/org/apache/cordova/Storage.java +239 -0
  197. data/templates/cordova_android/framework/src/org/apache/cordova/TempListener.java +112 -0
  198. data/templates/cordova_android/framework/src/org/apache/cordova/api/CordovaInterface.java +145 -0
  199. data/templates/cordova_android/framework/src/org/apache/cordova/api/IPlugin.java +116 -0
  200. data/templates/cordova_android/framework/src/org/apache/cordova/api/LOG.java +234 -0
  201. data/templates/cordova_android/framework/src/org/apache/cordova/api/Plugin.java +210 -0
  202. data/templates/cordova_android/framework/src/org/apache/cordova/api/PluginManager.java +359 -0
  203. data/templates/cordova_android/framework/src/org/apache/cordova/api/PluginResult.java +119 -0
  204. data/templates/cordova_android/framework/src/org/apache/cordova/file/EncodingException.java +28 -0
  205. data/templates/cordova_android/framework/src/org/apache/cordova/file/FileExistsException.java +28 -0
  206. data/templates/cordova_android/framework/src/org/apache/cordova/file/InvalidModificationException.java +29 -0
  207. data/templates/cordova_android/framework/src/org/apache/cordova/file/NoModificationAllowedException.java +28 -0
  208. data/templates/cordova_android/framework/src/org/apache/cordova/file/TypeMismatchException.java +29 -0
  209. data/templates/cordova_android/framework/test/org/apache/cordova/PreferenceNodeTest.java +53 -0
  210. data/templates/cordova_android/framework/test/org/apache/cordova/PreferenceSetTest.java +73 -0
  211. metadata +279 -0
@@ -0,0 +1,311 @@
1
+ /*
2
+ Licensed to the Apache Software Foundation (ASF) under one
3
+ or more contributor license agreements. See the NOTICE file
4
+ distributed with this work for additional information
5
+ regarding copyright ownership. The ASF licenses this file
6
+ to you under the Apache License, Version 2.0 (the
7
+ "License"); you may not use this file except in compliance
8
+ with the License. You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing,
13
+ software distributed under the License is distributed on an
14
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ KIND, either express or implied. See the License for the
16
+ specific language governing permissions and limitations
17
+ under the License.
18
+ */
19
+ package org.apache.cordova;
20
+
21
+ import java.util.List;
22
+
23
+ import org.apache.cordova.api.CordovaInterface;
24
+ import org.apache.cordova.api.Plugin;
25
+ import org.apache.cordova.api.PluginResult;
26
+ import org.json.JSONArray;
27
+ import org.json.JSONException;
28
+ import org.json.JSONObject;
29
+
30
+
31
+ import android.hardware.Sensor;
32
+ import android.hardware.SensorEvent;
33
+ import android.hardware.SensorEventListener;
34
+ import android.hardware.SensorManager;
35
+ import android.content.Context;
36
+
37
+ /**
38
+ * This class listens to the accelerometer sensor and stores the latest
39
+ * acceleration values x,y,z.
40
+ */
41
+ public class AccelListener extends Plugin implements SensorEventListener {
42
+
43
+ public static int STOPPED = 0;
44
+ public static int STARTING = 1;
45
+ public static int RUNNING = 2;
46
+ public static int ERROR_FAILED_TO_START = 3;
47
+
48
+ public float TIMEOUT = 30000; // Timeout in msec to shut off listener
49
+
50
+ float x,y,z; // most recent acceleration values
51
+ long timestamp; // time of most recent value
52
+ int status; // status of listener
53
+ long lastAccessTime; // time the value was last retrieved
54
+
55
+ private SensorManager sensorManager;// Sensor manager
56
+ Sensor mSensor; // Acceleration sensor returned by sensor manager
57
+
58
+ /**
59
+ * Create an accelerometer listener.
60
+ */
61
+ public AccelListener() {
62
+ this.x = 0;
63
+ this.y = 0;
64
+ this.z = 0;
65
+ this.timestamp = 0;
66
+ this.setStatus(AccelListener.STOPPED);
67
+ }
68
+
69
+ /**
70
+ * Sets the context of the Command. This can then be used to do things like
71
+ * get file paths associated with the Activity.
72
+ *
73
+ * @param ctx The context of the main Activity.
74
+ */
75
+ public void setContext(CordovaInterface ctx) {
76
+ super.setContext(ctx);
77
+ this.sensorManager = (SensorManager) ctx.getSystemService(Context.SENSOR_SERVICE);
78
+ }
79
+
80
+ /**
81
+ * Executes the request and returns PluginResult.
82
+ *
83
+ * @param action The action to execute.
84
+ * @param args JSONArry of arguments for the plugin.
85
+ * @param callbackId The callback id used when calling back into JavaScript.
86
+ * @return A PluginResult object with a status and message.
87
+ */
88
+ public PluginResult execute(String action, JSONArray args, String callbackId) {
89
+ PluginResult.Status status = PluginResult.Status.OK;
90
+ String result = "";
91
+
92
+ try {
93
+ if (action.equals("getStatus")) {
94
+ int i = this.getStatus();
95
+ return new PluginResult(status, i);
96
+ }
97
+ else if (action.equals("start")) {
98
+ int i = this.start();
99
+ return new PluginResult(status, i);
100
+ }
101
+ else if (action.equals("stop")) {
102
+ this.stop();
103
+ return new PluginResult(status, 0);
104
+ }
105
+ else if (action.equals("getAcceleration")) {
106
+ // If not running, then this is an async call, so don't worry about waiting
107
+ if (this.status != AccelListener.RUNNING) {
108
+ int r = this.start();
109
+ if (r == AccelListener.ERROR_FAILED_TO_START) {
110
+ return new PluginResult(PluginResult.Status.IO_EXCEPTION, AccelListener.ERROR_FAILED_TO_START);
111
+ }
112
+ // Wait until running
113
+ long timeout = 2000;
114
+ while ((this.status == STARTING) && (timeout > 0)) {
115
+ timeout = timeout - 100;
116
+ try {
117
+ Thread.sleep(100);
118
+ } catch (InterruptedException e) {
119
+ e.printStackTrace();
120
+ }
121
+ }
122
+ if (timeout == 0) {
123
+ return new PluginResult(PluginResult.Status.IO_EXCEPTION, AccelListener.ERROR_FAILED_TO_START);
124
+ }
125
+ }
126
+ this.lastAccessTime = System.currentTimeMillis();
127
+ JSONObject r = new JSONObject();
128
+ r.put("x", this.x);
129
+ r.put("y", this.y);
130
+ r.put("z", this.z);
131
+ // TODO: Should timestamp be sent?
132
+ r.put("timestamp", this.timestamp);
133
+ return new PluginResult(status, r);
134
+ }
135
+ else if (action.equals("setTimeout")) {
136
+ try {
137
+ float timeout = Float.parseFloat(args.getString(0));
138
+ this.setTimeout(timeout);
139
+ return new PluginResult(status, 0);
140
+ } catch (NumberFormatException e) {
141
+ status = PluginResult.Status.INVALID_ACTION;
142
+ e.printStackTrace();
143
+ } catch (JSONException e) {
144
+ status = PluginResult.Status.JSON_EXCEPTION;
145
+ e.printStackTrace();
146
+ }
147
+ }
148
+ else if (action.equals("getTimeout")) {
149
+ float f = this.getTimeout();
150
+ return new PluginResult(status, f);
151
+ } else {
152
+ // Unsupported action
153
+ return new PluginResult(PluginResult.Status.INVALID_ACTION);
154
+ }
155
+ return new PluginResult(status, result);
156
+ } catch (JSONException e) {
157
+ return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
158
+ }
159
+ }
160
+
161
+ /**
162
+ * Identifies if action to be executed returns a value and should be run synchronously.
163
+ *
164
+ * @param action The action to execute
165
+ * @return T=returns value
166
+ */
167
+ public boolean isSynch(String action) {
168
+ if (action.equals("getStatus")) {
169
+ return true;
170
+ }
171
+ else if (action.equals("getAcceleration")) {
172
+ // Can only return value if RUNNING
173
+ if (this.status == AccelListener.RUNNING) {
174
+ return true;
175
+ }
176
+ }
177
+ else if (action.equals("getTimeout")) {
178
+ return true;
179
+ }
180
+ return false;
181
+ }
182
+
183
+ /**
184
+ * Called by AccelBroker when listener is to be shut down.
185
+ * Stop listener.
186
+ */
187
+ public void onDestroy() {
188
+ this.stop();
189
+ }
190
+
191
+ //--------------------------------------------------------------------------
192
+ // LOCAL METHODS
193
+ //--------------------------------------------------------------------------
194
+
195
+ /**
196
+ * Start listening for acceleration sensor.
197
+ *
198
+ * @return status of listener
199
+ */
200
+ public int start() {
201
+
202
+ // If already starting or running, then just return
203
+ if ((this.status == AccelListener.RUNNING) || (this.status == AccelListener.STARTING)) {
204
+ return this.status;
205
+ }
206
+
207
+ // Get accelerometer from sensor manager
208
+ List<Sensor> list = this.sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
209
+
210
+ // If found, then register as listener
211
+ if ((list != null) && (list.size() > 0)) {
212
+ this.mSensor = list.get(0);
213
+ this.sensorManager.registerListener(this, this.mSensor, SensorManager.SENSOR_DELAY_FASTEST);
214
+ this.setStatus(AccelListener.STARTING);
215
+ this.lastAccessTime = System.currentTimeMillis();
216
+ }
217
+
218
+ // If error, then set status to error
219
+ else {
220
+ this.setStatus(AccelListener.ERROR_FAILED_TO_START);
221
+ }
222
+
223
+ return this.status;
224
+ }
225
+
226
+ /**
227
+ * Stop listening to acceleration sensor.
228
+ */
229
+ public void stop() {
230
+ if (this.status != AccelListener.STOPPED) {
231
+ this.sensorManager.unregisterListener(this);
232
+ }
233
+ this.setStatus(AccelListener.STOPPED);
234
+ }
235
+
236
+ /**
237
+ * Called when the accuracy of the sensor has changed.
238
+ *
239
+ * @param sensor
240
+ * @param accuracy
241
+ */
242
+ public void onAccuracyChanged(Sensor sensor, int accuracy) {
243
+ }
244
+
245
+ /**
246
+ * Sensor listener event.
247
+ *
248
+ * @param SensorEvent event
249
+ */
250
+ public void onSensorChanged(SensorEvent event) {
251
+
252
+ // Only look at accelerometer events
253
+ if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER) {
254
+ return;
255
+ }
256
+
257
+ // If not running, then just return
258
+ if (this.status == AccelListener.STOPPED) {
259
+ return;
260
+ }
261
+
262
+ // Save time that event was received
263
+ this.timestamp = System.currentTimeMillis();
264
+ this.x = event.values[0];
265
+ this.y = event.values[1];
266
+ this.z = event.values[2];
267
+
268
+ this.setStatus(AccelListener.RUNNING);
269
+
270
+ // If values haven't been read for TIMEOUT time, then turn off accelerometer sensor to save power
271
+ if ((this.timestamp - this.lastAccessTime) > this.TIMEOUT) {
272
+ this.stop();
273
+ }
274
+ }
275
+
276
+ /**
277
+ * Get status of accelerometer sensor.
278
+ *
279
+ * @return status
280
+ */
281
+ public int getStatus() {
282
+ return this.status;
283
+ }
284
+
285
+ /**
286
+ * Set the timeout to turn off accelerometer sensor if getX() hasn't been called.
287
+ *
288
+ * @param timeout Timeout in msec.
289
+ */
290
+ public void setTimeout(float timeout) {
291
+ this.TIMEOUT = timeout;
292
+ }
293
+
294
+ /**
295
+ * Get the timeout to turn off accelerometer sensor if getX() hasn't been called.
296
+ *
297
+ * @return timeout in msec
298
+ */
299
+ public float getTimeout() {
300
+ return this.TIMEOUT;
301
+ }
302
+
303
+ /**
304
+ * Set the status and send it to JavaScript.
305
+ * @param status
306
+ */
307
+ private void setStatus(int status) {
308
+ this.status = status;
309
+ }
310
+
311
+ }
@@ -0,0 +1,198 @@
1
+ /*
2
+ Licensed to the Apache Software Foundation (ASF) under one
3
+ or more contributor license agreements. See the NOTICE file
4
+ distributed with this work for additional information
5
+ regarding copyright ownership. The ASF licenses this file
6
+ to you under the Apache License, Version 2.0 (the
7
+ "License"); you may not use this file except in compliance
8
+ with the License. You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing,
13
+ software distributed under the License is distributed on an
14
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ KIND, either express or implied. See the License for the
16
+ specific language governing permissions and limitations
17
+ under the License.
18
+ */
19
+
20
+ package org.apache.cordova;
21
+
22
+ import org.apache.cordova.api.LOG;
23
+ import org.apache.cordova.api.Plugin;
24
+ import org.apache.cordova.api.PluginResult;
25
+ import org.json.JSONArray;
26
+ import org.json.JSONException;
27
+ import org.json.JSONObject;
28
+ import java.util.HashMap;
29
+
30
+ /**
31
+ * This class exposes methods in DroidGap that can be called from JavaScript.
32
+ */
33
+ public class App extends Plugin {
34
+
35
+ /**
36
+ * Executes the request and returns PluginResult.
37
+ *
38
+ * @param action The action to execute.
39
+ * @param args JSONArry of arguments for the plugin.
40
+ * @param callbackId The callback id used when calling back into JavaScript.
41
+ * @return A PluginResult object with a status and message.
42
+ */
43
+ public PluginResult execute(String action, JSONArray args, String callbackId) {
44
+ PluginResult.Status status = PluginResult.Status.OK;
45
+ String result = "";
46
+
47
+ try {
48
+ if (action.equals("clearCache")) {
49
+ this.clearCache();
50
+ }
51
+ else if (action.equals("loadUrl")) {
52
+ this.loadUrl(args.getString(0), args.optJSONObject(1));
53
+ }
54
+ else if (action.equals("cancelLoadUrl")) {
55
+ this.cancelLoadUrl();
56
+ }
57
+ else if (action.equals("clearHistory")) {
58
+ this.clearHistory();
59
+ }
60
+ else if (action.equals("backHistory")) {
61
+ this.backHistory();
62
+ }
63
+ else if (action.equals("overrideBackbutton")) {
64
+ this.overrideBackbutton(args.getBoolean(0));
65
+ }
66
+ else if (action.equals("isBackbuttonOverridden")) {
67
+ boolean b = this.isBackbuttonOverridden();
68
+ return new PluginResult(status, b);
69
+ }
70
+ else if (action.equals("exitApp")) {
71
+ this.exitApp();
72
+ }
73
+ return new PluginResult(status, result);
74
+ } catch (JSONException e) {
75
+ return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
76
+ }
77
+ }
78
+
79
+ //--------------------------------------------------------------------------
80
+ // LOCAL METHODS
81
+ //--------------------------------------------------------------------------
82
+
83
+ /**
84
+ * Clear the resource cache.
85
+ */
86
+ public void clearCache() {
87
+ ((DroidGap)this.ctx).clearCache();
88
+ }
89
+
90
+ /**
91
+ * Load the url into the webview.
92
+ *
93
+ * @param url
94
+ * @param props Properties that can be passed in to the DroidGap activity (i.e. loadingDialog, wait, ...)
95
+ * @throws JSONException
96
+ */
97
+ public void loadUrl(String url, JSONObject props) throws JSONException {
98
+ LOG.d("App", "App.loadUrl("+url+","+props+")");
99
+ int wait = 0;
100
+ boolean openExternal = false;
101
+ boolean clearHistory = false;
102
+
103
+ // If there are properties, then set them on the Activity
104
+ HashMap<String, Object> params = new HashMap<String, Object>();
105
+ if (props != null) {
106
+ JSONArray keys = props.names();
107
+ for (int i=0; i<keys.length(); i++) {
108
+ String key = keys.getString(i);
109
+ if (key.equals("wait")) {
110
+ wait = props.getInt(key);
111
+ }
112
+ else if (key.equalsIgnoreCase("openexternal")) {
113
+ openExternal = props.getBoolean(key);
114
+ }
115
+ else if (key.equalsIgnoreCase("clearhistory")) {
116
+ clearHistory = props.getBoolean(key);
117
+ }
118
+ else {
119
+ Object value = props.get(key);
120
+ if (value == null) {
121
+
122
+ }
123
+ else if (value.getClass().equals(String.class)) {
124
+ params.put(key, (String)value);
125
+ }
126
+ else if (value.getClass().equals(Boolean.class)) {
127
+ params.put(key, (Boolean)value);
128
+ }
129
+ else if (value.getClass().equals(Integer.class)) {
130
+ params.put(key, (Integer)value);
131
+ }
132
+ }
133
+ }
134
+ }
135
+
136
+ // If wait property, then delay loading
137
+
138
+ if (wait > 0) {
139
+ try {
140
+ synchronized(this) {
141
+ this.wait(wait);
142
+ }
143
+ } catch (InterruptedException e) {
144
+ e.printStackTrace();
145
+ }
146
+ }
147
+ ((DroidGap)this.ctx).showWebPage(url, openExternal, clearHistory, params);
148
+ }
149
+
150
+ /**
151
+ * Cancel loadUrl before it has been loaded.
152
+ */
153
+ public void cancelLoadUrl() {
154
+ ((DroidGap)this.ctx).cancelLoadUrl();
155
+ }
156
+
157
+ /**
158
+ * Clear page history for the app.
159
+ */
160
+ public void clearHistory() {
161
+ ((DroidGap)this.ctx).clearHistory();
162
+ }
163
+
164
+ /**
165
+ * Go to previous page displayed.
166
+ * This is the same as pressing the backbutton on Android device.
167
+ */
168
+ public void backHistory() {
169
+ ((DroidGap)this.ctx).backHistory();
170
+ }
171
+
172
+ /**
173
+ * Override the default behavior of the Android back button.
174
+ * If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired.
175
+ *
176
+ * @param override T=override, F=cancel override
177
+ */
178
+ public void overrideBackbutton(boolean override) {
179
+ LOG.i("DroidGap", "WARNING: Back Button Default Behaviour will be overridden. The backbutton event will be fired!");
180
+ ((DroidGap)this.ctx).bound = override;
181
+ }
182
+
183
+ /**
184
+ * Return whether the Android back button is overridden by the user.
185
+ *
186
+ * @return boolean
187
+ */
188
+ public boolean isBackbuttonOverridden() {
189
+ return ((DroidGap)this.ctx).bound;
190
+ }
191
+
192
+ /**
193
+ * Exit the Android application.
194
+ */
195
+ public void exitApp() {
196
+ ((DroidGap)this.ctx).endActivity();
197
+ }
198
+ }