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,165 @@
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.HashMap;
22
+ import java.util.Map.Entry;
23
+
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
+
29
+
30
+ /*
31
+ * This class is the interface to the Geolocation. It's bound to the geo object.
32
+ *
33
+ * This class only starts and stops various GeoListeners, which consist of a GPS and a Network Listener
34
+ */
35
+
36
+ public class GeoBroker extends Plugin {
37
+
38
+ // List of gGeolocation listeners
39
+ private HashMap<String, GeoListener> geoListeners;
40
+ private GeoListener global;
41
+
42
+ /**
43
+ * Constructor.
44
+ */
45
+ public GeoBroker() {
46
+ this.geoListeners = new HashMap<String, GeoListener>();
47
+ }
48
+
49
+ /**
50
+ * Executes the request and returns PluginResult.
51
+ *
52
+ * @param action The action to execute.
53
+ * @param args JSONArry of arguments for the plugin.
54
+ * @param callbackId The callback id used when calling back into JavaScript.
55
+ * @return A PluginResult object with a status and message.
56
+ */
57
+ public PluginResult execute(String action, JSONArray args, String callbackId) {
58
+ PluginResult.Status status = PluginResult.Status.OK;
59
+ String result = "";
60
+
61
+ try {
62
+ if (action.equals("getCurrentLocation")) {
63
+ this.getCurrentLocation(args.getBoolean(0), args.getInt(1), args.getInt(2));
64
+ }
65
+ else if (action.equals("start")) {
66
+ String s = this.start(args.getString(0), args.getBoolean(1), args.getInt(2), args.getInt(3));
67
+ return new PluginResult(status, s);
68
+ }
69
+ else if (action.equals("stop")) {
70
+ this.stop(args.getString(0));
71
+ }
72
+ return new PluginResult(status, result);
73
+ } catch (JSONException e) {
74
+ return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
75
+ }
76
+ }
77
+
78
+ /**
79
+ * Identifies if action to be executed returns a value and should be run synchronously.
80
+ *
81
+ * @param action The action to execute
82
+ * @return T=returns value
83
+ */
84
+ public boolean isSynch(String action) {
85
+ // Starting listeners is easier to run on main thread, so don't run async.
86
+ return true;
87
+ }
88
+
89
+ /**
90
+ * Called when the activity is to be shut down.
91
+ * Stop listener.
92
+ */
93
+ public void onDestroy() {
94
+ java.util.Set<Entry<String,GeoListener>> s = this.geoListeners.entrySet();
95
+ java.util.Iterator<Entry<String,GeoListener>> it = s.iterator();
96
+ while (it.hasNext()) {
97
+ Entry<String,GeoListener> entry = it.next();
98
+ GeoListener listener = entry.getValue();
99
+ listener.destroy();
100
+ }
101
+ this.geoListeners.clear();
102
+ if (this.global != null) {
103
+ this.global.destroy();
104
+ }
105
+ this.global = null;
106
+ }
107
+
108
+ //--------------------------------------------------------------------------
109
+ // LOCAL METHODS
110
+ //--------------------------------------------------------------------------
111
+
112
+ /**
113
+ * Get current location.
114
+ * The result is returned to JavaScript via a callback.
115
+ *
116
+ * @param enableHighAccuracy
117
+ * @param timeout
118
+ * @param maximumAge
119
+ */
120
+ public void getCurrentLocation(boolean enableHighAccuracy, int timeout, int maximumAge) {
121
+
122
+ // Create a geolocation listener just for getCurrentLocation and call it "global"
123
+ if (this.global == null) {
124
+ this.global = new GeoListener(this, "global", maximumAge);
125
+ }
126
+ else {
127
+ this.global.start(maximumAge);
128
+ }
129
+ }
130
+
131
+ /**
132
+ * Start geolocation listener and add to listener list.
133
+ *
134
+ * @param key The listener id
135
+ * @param enableHighAccuracy
136
+ * @param timeout
137
+ * @param maximumAge
138
+ * @return
139
+ */
140
+ public String start(String key, boolean enableHighAccuracy, int timeout, int maximumAge) {
141
+
142
+ // Make sure this listener doesn't already exist
143
+ GeoListener listener = geoListeners.get(key);
144
+ if (listener == null) {
145
+ listener = new GeoListener(this, key, maximumAge);
146
+ geoListeners.put(key, listener);
147
+ }
148
+
149
+ // Start it
150
+ listener.start(maximumAge);
151
+ return key;
152
+ }
153
+
154
+ /**
155
+ * Stop geolocation listener and remove from listener list.
156
+ *
157
+ * @param key The listener id
158
+ */
159
+ public void stop(String key) {
160
+ GeoListener listener = geoListeners.remove(key);
161
+ if (listener != null) {
162
+ listener.stop();
163
+ }
164
+ }
165
+ }
@@ -0,0 +1,133 @@
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 android.content.Context;
22
+ import android.location.Location;
23
+ import android.location.LocationManager;
24
+ import android.webkit.WebView;
25
+
26
+ public class GeoListener {
27
+ public static int PERMISSION_DENIED = 1;
28
+ public static int POSITION_UNAVAILABLE = 2;
29
+ public static int TIMEOUT = 3;
30
+
31
+ String id; // Listener ID
32
+ String successCallback; //
33
+ String failCallback;
34
+ GpsListener mGps; // GPS listener
35
+ NetworkListener mNetwork; // Network listener
36
+ LocationManager mLocMan; // Location manager
37
+
38
+ private GeoBroker broker; // GeoBroker object
39
+
40
+ int interval;
41
+
42
+ /**
43
+ * Constructor.
44
+ *
45
+ * @param id Listener id
46
+ * @param ctx
47
+ * @param time Sampling period in msec
48
+ * @param appView
49
+ */
50
+ GeoListener(GeoBroker broker, String id, int time) {
51
+ this.id = id;
52
+ this.interval = time;
53
+ this.broker = broker;
54
+ this.mGps = null;
55
+ this.mNetwork = null;
56
+ this.mLocMan = (LocationManager) broker.ctx.getSystemService(Context.LOCATION_SERVICE);
57
+
58
+ // If GPS provider, then create and start GPS listener
59
+ if (this.mLocMan.getProvider(LocationManager.GPS_PROVIDER) != null) {
60
+ this.mGps = new GpsListener(broker.ctx, time, this);
61
+ }
62
+
63
+ // If network provider, then create and start network listener
64
+ if (this.mLocMan.getProvider(LocationManager.NETWORK_PROVIDER) != null) {
65
+ this.mNetwork = new NetworkListener(broker.ctx, time, this);
66
+ }
67
+ }
68
+
69
+ /**
70
+ * Destroy listener.
71
+ */
72
+ public void destroy() {
73
+ this.stop();
74
+ }
75
+
76
+ /**
77
+ * Location found. Send location back to JavaScript.
78
+ *
79
+ * @param loc
80
+ */
81
+ void success(Location loc) {
82
+
83
+ String params = loc.getLatitude() + "," + loc.getLongitude() + ", " + loc.getAltitude() +
84
+ "," + loc.getAccuracy() + "," + loc.getBearing() +
85
+ "," + loc.getSpeed() + "," + loc.getTime();
86
+
87
+ if (id == "global") {
88
+ this.stop();
89
+ }
90
+ this.broker.sendJavascript("navigator._geo.success('" + id + "'," + params + ");");
91
+ }
92
+
93
+ /**
94
+ * Location failed. Send error back to JavaScript.
95
+ *
96
+ * @param code The error code
97
+ * @param msg The error message
98
+ */
99
+ void fail(int code, String msg) {
100
+ this.broker.sendJavascript("navigator._geo.fail('" + this.id + "', '" + code + "', '" + msg + "');");
101
+ this.stop();
102
+ }
103
+
104
+ /**
105
+ * Start retrieving location.
106
+ *
107
+ * @param interval
108
+ */
109
+ void start(int interval) {
110
+ if (this.mGps != null) {
111
+ this.mGps.start(interval);
112
+ }
113
+ if (this.mNetwork != null) {
114
+ this.mNetwork.start(interval);
115
+ }
116
+ if (this.mNetwork == null && this.mGps == null) {
117
+ this.fail(POSITION_UNAVAILABLE, "No location providers available.");
118
+ }
119
+ }
120
+
121
+ /**
122
+ * Stop listening for location.
123
+ */
124
+ void stop() {
125
+ if (this.mGps != null) {
126
+ this.mGps.stop();
127
+ }
128
+ if (this.mNetwork != null) {
129
+ this.mNetwork.stop();
130
+ }
131
+ }
132
+
133
+ }
@@ -0,0 +1,163 @@
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.CordovaInterface;
23
+
24
+ import android.content.Context;
25
+ import android.location.Location;
26
+ import android.location.LocationManager;
27
+ import android.location.LocationListener;
28
+ import android.os.Bundle;
29
+
30
+ /**
31
+ * This class handles requests for GPS location services.
32
+ *
33
+ */
34
+ public class GpsListener implements LocationListener {
35
+
36
+ private CordovaInterface mCtx; // CordovaActivity object
37
+
38
+ private LocationManager mLocMan; // Location manager object
39
+ private GeoListener owner; // Geolistener object (parent)
40
+ private boolean hasData = false; // Flag indicates if location data is available in cLoc
41
+ private Location cLoc; // Last recieved location
42
+ private boolean running = false; // Flag indicates if listener is running
43
+
44
+ /**
45
+ * Constructor.
46
+ * Automatically starts listening.
47
+ *
48
+ * @param ctx
49
+ * @param interval
50
+ * @param m
51
+ */
52
+ public GpsListener(CordovaInterface ctx, int interval, GeoListener m) {
53
+ this.owner = m;
54
+ this.mCtx = ctx;
55
+ this.mLocMan = (LocationManager) this.mCtx.getSystemService(Context.LOCATION_SERVICE);
56
+ this.running = false;
57
+ this.start(interval);
58
+ }
59
+
60
+ /**
61
+ * Get last location.
62
+ *
63
+ * @return Location object
64
+ */
65
+ public Location getLocation() {
66
+ this.cLoc = this.mLocMan.getLastKnownLocation(LocationManager.GPS_PROVIDER);
67
+ if (this.cLoc != null) {
68
+ this.hasData = true;
69
+ }
70
+ return this.cLoc;
71
+ }
72
+
73
+ /**
74
+ * Called when the provider is disabled by the user.
75
+ *
76
+ * @param provider
77
+ */
78
+ public void onProviderDisabled(String provider) {
79
+ this.owner.fail(GeoListener.POSITION_UNAVAILABLE, "GPS provider disabled.");
80
+ }
81
+
82
+ /**
83
+ * Called when the provider is enabled by the user.
84
+ *
85
+ * @param provider
86
+ */
87
+ public void onProviderEnabled(String provider) {
88
+ System.out.println("GpsListener: The provider "+ provider + " is enabled");
89
+ }
90
+
91
+ /**
92
+ * Called when the provider status changes. This method is called when a
93
+ * provider is unable to fetch a location or if the provider has recently
94
+ * become available after a period of unavailability.
95
+ *
96
+ * @param provider
97
+ * @param status
98
+ * @param extras
99
+ */
100
+ public void onStatusChanged(String provider, int status, Bundle extras) {
101
+ System.out.println("GpsListener: The status of the provider " + provider + " has changed");
102
+ if (status == 0) {
103
+ System.out.println("GpsListener: " + provider + " is OUT OF SERVICE");
104
+ this.owner.fail(GeoListener.POSITION_UNAVAILABLE, "GPS out of service.");
105
+ }
106
+ else if (status == 1) {
107
+ System.out.println("GpsListener: " + provider + " is TEMPORARILY_UNAVAILABLE");
108
+ }
109
+ else {
110
+ System.out.println("GpsListener: " + provider + " is Available");
111
+ }
112
+ }
113
+
114
+ /**
115
+ * Called when the location has changed.
116
+ *
117
+ * @param location
118
+ */
119
+ public void onLocationChanged(Location location) {
120
+ System.out.println("GpsListener: The location has been updated!");
121
+ this.hasData = true;
122
+ this.cLoc = location;
123
+ this.owner.success(location);
124
+ }
125
+
126
+ /**
127
+ * Determine if location data is available.
128
+ *
129
+ * @return
130
+ */
131
+ public boolean hasLocation() {
132
+ return this.hasData;
133
+ }
134
+
135
+ /**
136
+ * Start requesting location updates.
137
+ *
138
+ * @param interval
139
+ */
140
+ public void start(int interval) {
141
+ if (!this.running) {
142
+ this.running = true;
143
+ this.mLocMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, interval, 0, this);
144
+ this.getLocation();
145
+
146
+ // If GPS provider has data, then send now
147
+ if (this.hasData) {
148
+ this.owner.success(this.cLoc);
149
+ }
150
+ }
151
+ }
152
+
153
+ /**
154
+ * Stop receiving location updates.
155
+ */
156
+ public void stop() {
157
+ if (this.running) {
158
+ this.mLocMan.removeUpdates(this);
159
+ }
160
+ this.running = false;
161
+ }
162
+
163
+ }
@@ -0,0 +1,80 @@
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.io.FileOutputStream;
22
+ import java.io.IOException;
23
+ import java.io.InputStream;
24
+
25
+ import org.apache.http.HttpEntity;
26
+ import org.apache.http.HttpResponse;
27
+ import org.apache.http.client.methods.HttpGet;
28
+ import org.apache.http.impl.client.DefaultHttpClient;
29
+
30
+ public class HttpHandler {
31
+
32
+ protected Boolean get(String url, String file)
33
+ {
34
+ HttpEntity entity = getHttpEntity(url);
35
+ try {
36
+ writeToDisk(entity, file);
37
+ } catch (Exception e) { e.printStackTrace(); return false; }
38
+ try {
39
+ entity.consumeContent();
40
+ } catch (Exception e) { e.printStackTrace(); return false; }
41
+ return true;
42
+ }
43
+
44
+ private HttpEntity getHttpEntity(String url)
45
+ /**
46
+ * get the http entity at a given url
47
+ */
48
+ {
49
+ HttpEntity entity=null;
50
+ try {
51
+ DefaultHttpClient httpclient = new DefaultHttpClient();
52
+ HttpGet httpget = new HttpGet(url);
53
+ HttpResponse response = httpclient.execute(httpget);
54
+ entity = response.getEntity();
55
+ } catch (Exception e) { e.printStackTrace(); return null; }
56
+ return entity;
57
+ }
58
+
59
+ private void writeToDisk(HttpEntity entity, String file) throws IllegalStateException, IOException
60
+ /**
61
+ * writes a HTTP entity to the specified filename and location on disk
62
+ */
63
+ {
64
+ int i=0;
65
+ String FilePath="/sdcard/" + file;
66
+ InputStream in = entity.getContent();
67
+ byte buff[] = new byte[1024];
68
+ FileOutputStream out=
69
+ new FileOutputStream(FilePath);
70
+ do {
71
+ int numread = in.read(buff);
72
+ if (numread <= 0)
73
+ break;
74
+ out.write(buff, 0, numread);
75
+ i++;
76
+ } while (true);
77
+ out.flush();
78
+ out.close();
79
+ }
80
+ }
@@ -0,0 +1,104 @@
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
+ import org.apache.cordova.api.LOG;
21
+
22
+ import android.content.Context;
23
+ import android.view.View.MeasureSpec;
24
+ import android.widget.LinearLayout;
25
+
26
+ /**
27
+ * This class is used to detect when the soft keyboard is shown and hidden in the web view.
28
+ */
29
+ public class LinearLayoutSoftKeyboardDetect extends LinearLayout {
30
+
31
+ private static final String TAG = "SoftKeyboardDetect";
32
+
33
+ private int oldHeight = 0; // Need to save the old height as not to send redundant events
34
+ private int oldWidth = 0; // Need to save old width for orientation change
35
+ private int screenWidth = 0;
36
+ private int screenHeight = 0;
37
+ private DroidGap app = null;
38
+
39
+ public LinearLayoutSoftKeyboardDetect(Context context, int width, int height) {
40
+ super(context);
41
+ screenWidth = width;
42
+ screenHeight = height;
43
+ app = (DroidGap) context;
44
+ }
45
+
46
+ @Override
47
+ /**
48
+ * Start listening to new measurement events. Fire events when the height
49
+ * gets smaller fire a show keyboard event and when height gets bigger fire
50
+ * a hide keyboard event.
51
+ *
52
+ * Note: We are using app.postMessage so that this is more compatible with the API
53
+ *
54
+ * @param widthMeasureSpec
55
+ * @param heightMeasureSpec
56
+ */
57
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
58
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
59
+
60
+ LOG.v(TAG, "We are in our onMeasure method");
61
+
62
+ // Get the current height of the visible part of the screen.
63
+ // This height will not included the status bar.\
64
+ int width, height;
65
+
66
+ height = MeasureSpec.getSize(heightMeasureSpec);
67
+ width = MeasureSpec.getSize(widthMeasureSpec);
68
+ LOG.v(TAG, "Old Height = %d", oldHeight);
69
+ LOG.v(TAG, "Height = %d", height);
70
+ LOG.v(TAG, "Old Width = %d", oldWidth);
71
+ LOG.v(TAG, "Width = %d", width);
72
+
73
+ // If the oldHeight = 0 then this is the first measure event as the app starts up.
74
+ // If oldHeight == height then we got a measurement change that doesn't affect us.
75
+ if (oldHeight == 0 || oldHeight == height) {
76
+ LOG.d(TAG, "Ignore this event");
77
+ }
78
+ // Account for orientation change and ignore this event/Fire orientation change
79
+ else if(screenHeight == width)
80
+ {
81
+ int tmp_var = screenHeight;
82
+ screenHeight = screenWidth;
83
+ screenWidth = tmp_var;
84
+ LOG.v(TAG, "Orientation Change");
85
+ }
86
+ // If the height as gotten bigger then we will assume the soft keyboard has
87
+ // gone away.
88
+ else if (height > oldHeight) {
89
+ if(app != null)
90
+ app.sendJavascript("require('cordova').fireDocumentEvent('hidekeyboard');");
91
+ }
92
+ // If the height as gotten smaller then we will assume the soft keyboard has
93
+ // been displayed.
94
+ else if (height < oldHeight) {
95
+ if(app != null)
96
+ app.sendJavascript("require('cordova').fireDocumentEvent('showkeyboard');");
97
+ }
98
+
99
+ // Update the old height for the next event
100
+ oldHeight = height;
101
+ oldWidth = width;
102
+ }
103
+
104
+ }