diff --git a/assets/plugins/gears-0.5.17.0/dummy b/assets/plugins/gears-0.5.17.0/dummy new file mode 100644 index 00000000..50f9ab94 --- /dev/null +++ b/assets/plugins/gears-0.5.17.0/dummy @@ -0,0 +1 @@ +This file is used to ensure this subdirectory is created. diff --git a/assets/plugins/gears.so b/assets/plugins/gears.so new file mode 100644 index 00000000..56b33866 Binary files /dev/null and b/assets/plugins/gears.so differ diff --git a/assets/www/index.html b/assets/www/index.html new file mode 100644 index 00000000..460b3a24 --- /dev/null +++ b/assets/www/index.html @@ -0,0 +1,89 @@ + + + + + + PhoneGap + + + + + +

Welcome to PhoneGap!

+

this file is located at assets/index.html

+
+

Platform:  

+

Version:  

+

UUID:  

+
+
+
X:
 
+
Y:
 
+
Z:
 
+
+ Watch Accelerometer + Get Location + Call 411 + Beep + Vibrate + + \ No newline at end of file diff --git a/assets/master.css b/assets/www/master.css similarity index 100% rename from assets/master.css rename to assets/www/master.css diff --git a/assets/www/phonegap.js b/assets/www/phonegap.js new file mode 100644 index 00000000..6680fb84 --- /dev/null +++ b/assets/www/phonegap.js @@ -0,0 +1,630 @@ + + /** + * This class contains acceleration information + * @constructor + * @param {Number} x The force applied by the device in the x-axis. + * @param {Number} y The force applied by the device in the y-axis. + * @param {Number} z The force applied by the device in the z-axis. + */ + function Acceleration(x, y, z) { + /** + * The force applied by the device in the x-axis. + */ + this.x = x; + /** + * The force applied by the device in the y-axis. + */ + this.y = y; + /** + * The force applied by the device in the z-axis. + */ + this.z = z; + /** + * The time that the acceleration was obtained. + */ + this.timestamp = new Date().getTime(); + } + + /** + * This class specifies the options for requesting acceleration data. + * @constructor + */ + function AccelerationOptions() { + /** + * The timeout after which if acceleration data cannot be obtained the errorCallback + * is called. + */ + this.timeout = 10000; + } + + + /** + * This class provides access to device accelerometer data. + * @constructor + */ + function Accelerometer() { + /** + * The last known acceleration. + */ + this.lastAcceleration = null; + } + + /** + * Asynchronously aquires the current acceleration. + * @param {Function} successCallback The function to call when the acceleration + * data is available + * @param {Function} errorCallback The function to call when there is an error + * getting the acceleration data. + * @param {AccelerationOptions} options The options for getting the accelerometer data + * such as timeout. + */ + Accelerometer.prototype.getCurrentAcceleration = function(successCallback, errorCallback, options) { + // If the acceleration is available then call success + // If the acceleration is not available then call error + + // Created for iPhone, Iphone passes back _accel obj litteral + if (typeof successCallback == "function") { + var accel = new Acceleration(_accel.x,_accel.y,_accel.z); + Accelerometer.lastAcceleration = accel; + successCallback(accel); + } + } + + /** + * Asynchronously aquires the acceleration repeatedly at a given interval. + * @param {Function} successCallback The function to call each time the acceleration + * data is available + * @param {Function} errorCallback The function to call when there is an error + * getting the acceleration data. + * @param {AccelerationOptions} options The options for getting the accelerometer data + * such as timeout. + */ + + Accelerometer.prototype.watchAcceleration = function(successCallback, errorCallback, options) { + navigator.accelerometer.getCurrentAcceleration(successCallback, errorCallback, options); + // TODO: add the interval id to a list so we can clear all watches + var frequency = (options != undefined)? options.frequency : 10000; + return setInterval(function() { + navigator.accelerometer.getCurrentAcceleration(successCallback, errorCallback, options); + }, frequency); + } + + /** + * Clears the specified accelerometer watch. + * @param {String} watchId The ID of the watch returned from #watchAcceleration. + */ + Accelerometer.prototype.clearWatch = function(watchId) { + clearInterval(watchId); + } + + if (typeof navigator.accelerometer == "undefined") navigator.accelerometer = new Accelerometer(); + + + + /** + * This class provides access to the device media, interfaces to both sound and video + * @constructor + */ + function Media(src) { + this.src = src; + } + + Media.prototype.play = function() { + } + + Media.prototype.pause = function() { + } + + Media.prototype.stop = function() { + } + + + /** + * This class contains information about any Media errors. + * @constructor + */ + function MediaError() { + this.code = null, + this.message = ""; + } + + MediaError.MEDIA_ERR_ABORTED = 1; + MediaError.MEDIA_ERR_NETWORK = 2; + MediaError.MEDIA_ERR_DECODE = 3; + MediaError.MEDIA_ERR_NONE_SUPPORTED = 4; + + + //if (typeof navigator.audio == "undefined") navigator.audio = new Media(src); + + + /** + * This class provides access to the device camera. + * @constructor + */ + function Camera() { + + } + + /** + * + * @param {Function} successCallback + * @param {Function} errorCallback + * @param {Object} options + */ + Camera.prototype.getPicture = function(successCallback, errorCallback, options) { + + } + + if (typeof navigator.camera == "undefined") navigator.camera = new Camera(); + + + /** + * This class provides access to the device contacts. + * @constructor + */ + function Contact() { + this.name = ""; + this.phone = ""; + this.address = ""; + } + + /** + * + * @param {Object} successCallback + * @param {Object} errorCallback + * @param {Object} options + */ + Contact.prototype.get = function(successCallback, errorCallback, options) { + + } + + + function ContactManager() { + // Dummy object to hold array of contacts + this.contacts = []; + this.timestap = new Date().getTime(); + } + + ContactManager.prototype.get = function(successCallback, errorCallback, options) { + // Interface + } + + if (typeof navigator.ContactManager == "undefined") navigator.ContactManager = new ContactManager(); + + + /** + * This class provides generic read and write access to the mobile device file system. + */ + function File() { + /** + * The data of a file. + */ + this.data = ""; + /** + * The name of the file. + */ + this.name = ""; + } + + /** + * Reads a file from the mobile device. This function is asyncronous. + * @param {String} fileName The name (including the path) to the file on the mobile device. + * The file name will likely be device dependant. + * @param {Function} successCallback The function to call when the file is successfully read. + * @param {Function} errorCallback The function to call when there is an error reading the file from the device. + */ + File.prototype.read = function(fileName, successCallback, errorCallback) { + + } + + /** + * Writes a file to the mobile device. + * @param {File} file The file to write to the device. + */ + File.prototype.write = function(file) { + + } + + if (typeof navigator.file == "undefined") navigator.file = new File(); + + + /** + * This class provides access to device GPS data. + * @constructor + */ + function Geolocation() { + /** + * The last known GPS position. + */ + this.lastPosition = null; + } + + /** + * Asynchronously aquires the current position. + * @param {Function} successCallback The function to call when the position + * data is available + * @param {Function} errorCallback The function to call when there is an error + * getting the position data. + * @param {PositionOptions} options The options for getting the position data + * such as timeout. + */ + Geolocation.prototype.getCurrentPosition = function(successCallback, errorCallback, options) { + // If the position is available then call success + // If the position is not available then call error + } + + /** + * Asynchronously aquires the position repeatedly at a given interval. + * @param {Function} successCallback The function to call each time the position + * data is available + * @param {Function} errorCallback The function to call when there is an error + * getting the position data. + * @param {PositionOptions} options The options for getting the position data + * such as timeout and the frequency of the watch. + */ + Geolocation.prototype.watchPosition = function(successCallback, errorCallback, options) { + // Invoke the appropriate callback with a new Position object every time the implementation + // determines that the position of the hosting device has changed. + + this.getCurrentPosition(successCallback, errorCallback, options); + var frequency = (options != undefined)? options.frequency : 10000; + + var that = this; + return setInterval(function() { + that.getCurrentPosition(successCallback, errorCallback, options); + //navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options); + }, frequency); + } + + + /** + * Clears the specified position watch. + * @param {String} watchId The ID of the watch returned from #watchPosition. + */ + Geolocation.prototype.clearWatch = function(watchId) { + clearInterval(watchId); + } + + if (typeof navigator.geolocation == "undefined") navigator.geolocation = new Geolocation(); + + + /** + * This class provides access to native mapping applications on the device. + */ + function Map() { + + } + + /** + * Shows a native map on the device with pins at the given positions. + * @param {Array} positions + */ + Map.prototype.show = function(positions) { + + } + + if (typeof navigator.map == "undefined") navigator.map = new Map(); + + + /** + * This class provides access to notifications on the device. + */ + function Notification() { + + } + + /** + * Causes the device to blink a status LED. + * @param {Integer} count The number of blinks. + * @param {String} colour The colour of the light. + */ + Notification.prototype.blink = function(count, colour) { + + } + + /** + * Causes the device to vibrate. + * @param {Integer} mills The number of milliseconds to vibrate for. + */ + Notification.prototype.vibrate = function(mills) { + + } + + /** + * Causes the device to beep. + * @param {Integer} count The number of beeps. + * @param {Integer} volume The volume of the beep. + */ + Notification.prototype.beep = function(count, volume) { + + } + + // TODO: of course on Blackberry and Android there notifications in the UI as well + + if (typeof navigator.notification == "undefined") navigator.notification = new Notification(); + + + /** + * This class provides access to the device orientation. + * @constructor + */ + function Orientation() { + /** + * The last known orientation. + */ + this.lastOrientation = null; + } + + /** + * Asynchronously aquires the current orientation. + * @param {Function} successCallback The function to call when the orientation + * is known. + * @param {Function} errorCallback The function to call when there is an error + * getting the orientation. + */ + Orientation.prototype.getCurrentOrientation = function(successCallback, errorCallback) { + // If the position is available then call success + // If the position is not available then call error + } + + /** + * Asynchronously aquires the orientation repeatedly at a given interval. + * @param {Function} successCallback The function to call each time the orientation + * data is available. + * @param {Function} errorCallback The function to call when there is an error + * getting the orientation data. + */ + Orientation.prototype.watchOrientation = function(successCallback, errorCallback) { + // Invoke the appropriate callback with a new Position object every time the implementation + // determines that the position of the hosting device has changed. + this.getCurrentPosition(successCallback, errorCallback); + return setInterval(function() { + navigator.orientation.getCurrentOrientation(successCallback, errorCallback); + }, 10000); + } + + /** + * Clears the specified orientation watch. + * @param {String} watchId The ID of the watch returned from #watchOrientation. + */ + Orientation.prototype.clearWatch = function(watchId) { + clearInterval(watchId); + } + + if (typeof navigator.orientation == "undefined") navigator.orientation = new Orientation(); + + + /** + * This class contains position information. + * @param {Object} lat + * @param {Object} lng + * @param {Object} acc + * @param {Object} alt + * @param {Object} altacc + * @param {Object} head + * @param {Object} vel + * @constructor + */ + function Position(lat, lng, acc, alt, altacc, head, vel) { + /** + * The latitude of the position. + */ + this.latitude = lat; + /** + * The longitude of the position, + */ + this.longitude = lng; + /** + * The accuracy of the position. + */ + this.accuracy = acc; + /** + * The altitude of the position. + */ + this.altitude = alt; + /** + * The altitude accuracy of the position. + */ + this.altitudeAccuracy = altacc; + /** + * The direction the device is moving at the position. + */ + this.heading = head; + /** + * The velocity with which the device is moving at the position. + */ + this.velocity = vel; + /** + * The time that the position was obtained. + */ + this.timestamp = new Date().getTime(); + } + + /** + * This class specifies the options for requesting position data. + * @constructor + */ + function PositionOptions() { + /** + * Specifies the desired position accuracy. + */ + this.enableHighAccuracy = true; + /** + * The timeout after which if position data cannot be obtained the errorCallback + * is called. + */ + this.timeout = 10000; + } + + /** + * This class contains information about any GSP errors. + * @constructor + */ + function PositionError() { + this.code = null; + this.message = ""; + } + + PositionError.UNKNOWN_ERROR = 0; + PositionError.PERMISSION_DENIED = 1; + PositionError.POSITION_UNAVAILABLE = 2; + PositionError.TIMEOUT = 3; + + + + /** + * This class provides access to the device SMS functionality. + * @constructor + */ + function Sms() { + + } + + /** + * Sends an SMS message. + * @param {Integer} number The phone number to send the message to. + * @param {String} message The contents of the SMS message to send. + * @param {Function} successCallback The function to call when the SMS message is sent. + * @param {Function} errorCallback The function to call when there is an error sending the SMS message. + * @param {PositionOptions} options The options for accessing the GPS location such as timeout and accuracy. + */ + Sms.prototype.send = function(number, message, successCallback, errorCallback, options) { + + } + + if (typeof navigator.sms == "undefined") navigator.sms = new Sms(); + + + /** + * This class provides access to the telephony features of the device. + * @constructor + */ + function Telephony() { + + } + + /** + * Calls the specifed number. + * @param {Integer} number The number to be called. + */ + Telephony.prototype.call = function(number) { + + } + + if (typeof navigator.telephony == "undefined") navigator.telephony = new Telephony(); + + + // Android specific overrides here + +Notification.prototype.vibrate = function(mills) +{ + Device.vibrate(mills); +} + +/* + * On the Android, we don't beep, we notify you with your + * notification! We shouldn't keep hammering on this, and should + * review what we want beep to do. + */ + +Notification.prototype.beep = function(count, volume) +{ + Device.beep(count); +} + +/* + * Since we can't guarantee that we will have the most recent, we just try our best! + * + * Also, the API doesn't specify which version is the best version of the API + */ + +Geolocation.prototype.getCurrentPosition = function(successCallback, errorCallback, options) +{ + Geolocation.global_success = successCallback; + Geolocation.fail = errorCallback; + Geo.getCurrentLocation(); +} + +// Run the global callback +Geolocation.gotCurrentPosition = function(lat, lng) +{ + if (lat == "undefined" || lng == "undefined") + { + this.fail(); + } + else + { + p = {}; + p.latitude = lat; + p.longitude = lng; + this.global_success(p); + } +} + + +/* + * This turns on the GeoLocator class, which has two listeners. + * The listeners have their own timeouts, and run independently of this process + * In this case, we return the key to the watch hash + */ + +Geolocation.prototype.watchPosition = function(successCallback, errorCallback, options) +{ + var frequency = (options != undefined)? options.frequency : 10000; + + if (!this.listeners) + { + this.listeners = [] + } + + var key = this.listeners.push( {"success" : successCallback, "fail" : failCallback }) - 1; + + // TO-DO: Get the names of the method and pass them as strings to the Java. + return Geolocation.start(frequency, key); +} + +/* + * Retrieve and stop this listener from listening to the GPS + * + */ +Geolocation.success = function(key, lat, lng) +{ + this.listeners[key].success(lat,lng); +} + +Geolocation.prototype.fail = function(key) +{ + this.listeners[key].fail(); +} + +Geolocation.prototype.clearWatch = function(watchId) +{ + Geo.stop(watchId); +} + +/* Identical to the iPhone, except we have to create this in the JS */ + +_accel = {} +_accel.x = 0; +_accel.y = 0; +_accel.z = 0; + +function gotAccel(x,y,z) +{ + _accel.x = x; + _accel.y = y; + _accel.z = z; +} + +Accelerometer.base_method = Accelerometer.prototype.watchAcceleration +Accelerometer.prototype.watchAcceleration = function(successCallback, errorCallback, options) +{ + Accel.start(); + Accelerometer.base_method(successCallback, errorCallback, options); +} + +Accelerometer.prototype.clearWatch = function(watchId){ + clearInterval(watchId); + Accel.stop(); +} + diff --git a/default.properties b/default.properties new file mode 100644 index 00000000..19e9e9df --- /dev/null +++ b/default.properties @@ -0,0 +1,22 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system use, +# "build.properties", and override values to adapt the script to your +# project structure. + +# Project target. +target=Google Inc.:Google APIs:3 +# apk configurations. This property allows creation of APK files with limited +# resources. For example, if your application contains many locales and +# you wish to release multiple smaller apks instead of a large one, you can +# define configuration to create apks with limited language sets. +# Format is a comma separated list of configuration names. For each +# configuration, a property will declare the resource configurations to +# include. Example: +# apk-configurations=european,northamerica +# apk-config-european=en,fr,it,de,es +# apk-config-northamerica=en,es +apk-configurations= diff --git a/local.properties b/local.properties new file mode 100644 index 00000000..e3fc4c14 --- /dev/null +++ b/local.properties @@ -0,0 +1,10 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must *NOT* be checked in Version Control Systems, +# as it contains information specific to your local configuration. + +# location of the SDK. This is only used by Ant +# For customization when using a Version Control System, please read the +# header note. +sdk-location=/home/bowserj/android-sdk-linux_x86-1.5_r1