From 9957dfca73fe3d6f25e90eed990cd06994bc406d Mon Sep 17 00:00:00 2001 From: Joe Bowser Date: Mon, 24 Aug 2009 09:00:45 -0700 Subject: [PATCH] Removing the assets phonegap.js --- assets/www/phonegap.js | 1335 -------------------- src/com/phonegap/demo/CompassListener.java | 54 + 2 files changed, 54 insertions(+), 1335 deletions(-) delete mode 100644 assets/www/phonegap.js create mode 100644 src/com/phonegap/demo/CompassListener.java diff --git a/assets/www/phonegap.js b/assets/www/phonegap.js deleted file mode 100644 index 8f246d3f..00000000 --- a/assets/www/phonegap.js +++ /dev/null @@ -1,1335 +0,0 @@ -if (typeof(DeviceInfo) != 'object') - DeviceInfo = {}; - -/** - * This represents the PhoneGap API itself, and provides a global namespace for accessing - * information about the state of PhoneGap. - * @class - */ -PhoneGap = { - queue: { - ready: true, - commands: [], - timer: null - }, - _constructors: [] -}; - -/** - * Boolean flag indicating if the PhoneGap API is available and initialized. - */ -PhoneGap.available = DeviceInfo.uuid != undefined; - -/** - * Add an initialization function to a queue that ensures it will run and initialize - * application constructors only once PhoneGap has been initialized. - * @param {Function} func The function callback you want run once PhoneGap is initialized - */ -PhoneGap.addConstructor = function(func) { - var state = document.readyState; - if (state != 'loaded' && state != 'complete') - PhoneGap._constructors.push(func); - else - func(); -}; -(function() { - var timer = setInterval(function() { - var state = document.readyState; - if (state != 'loaded' && state != 'complete') - return; - clearInterval(timer); - while (PhoneGap._constructors.length > 0) { - var constructor = PhoneGap._constructors.shift(); - try { - constructor(); - } catch(e) { - if (typeof(debug['log']) == 'function') - debug.log("Failed to run constructor: " + debug.processMessage(e)); - else - alert("Failed to run constructor: " + e.message); - } - } - }, 1); -})(); - - -/** - * Execute a PhoneGap command in a queued fashion, to ensure commands do not - * execute with any race conditions, and only run when PhoneGap is ready to - * recieve them. - * @param {String} command Command to be run in PhoneGap, e.g. "ClassName.method" - * @param {String[]} [args] Zero or more arguments to pass to the method - */ -PhoneGap.exec = function() { - PhoneGap.queue.commands.push(arguments); - if (PhoneGap.queue.timer == null) - PhoneGap.queue.timer = setInterval(PhoneGap.run_command, 10); -}; -/** - * Internal function used to dispatch the request to PhoneGap. This needs to be implemented per-platform to - * ensure that methods are called on the phone in a way appropriate for that device. - * @private - */ -PhoneGap.run_command = function() { -}; - -/** - * 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) { - this.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); -} - -PhoneGap.addConstructor(function() { - if (typeof navigator.accelerometer == "undefined") navigator.accelerometer = new Accelerometer(); -}); -/** - * 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) { - -} - -PhoneGap.addConstructor(function() { - if (typeof navigator.camera == "undefined") navigator.camera = new Camera(); -}); -/** - * This class provides access to the device contacts. - * @constructor - */ - -function Contact(jsonObject) { - this.firstName = ""; - this.lastName = ""; - this.phoneNumber = ""; - this.address = ""; -} - -Contact.prototype.displayName = function() -{ - // TODO: can be tuned according to prefs - return this.firstName + " " + this.lastName; -} - -function ContactManager() { - // Dummy object to hold array of contacts - this.contacts = []; - this.timestamp = new Date().getTime(); -} - -ContactManager.prototype.getAllContacts = function(successCallback, errorCallback, options) { - // Interface -} - -PhoneGap.addConstructor(function() { - if (typeof navigator.ContactManager == "undefined") navigator.ContactManager = new ContactManager(); -}); -/** - * This class provides access to the debugging console. - * @constructor - */ -function DebugConsole() { -} - -/** - * Utility function for rendering and indenting strings, or serializing - * objects to a string capable of being printed to the console. - * @param {Object|String} message The string or object to convert to an indented string - * @private - */ -DebugConsole.prototype.processMessage = function(message) { - if (typeof(message) != 'object') { - return message; - } else { - /** - * @function - * @ignore - */ - function indent(str) { - return str.replace(/^/mg, " "); - } - /** - * @function - * @ignore - */ - function makeStructured(obj) { - var str = ""; - for (var i in obj) { - try { - if (typeof(obj[i]) == 'object') { - str += i + ":\n" + indent(makeStructured(obj[i])) + "\n"; - } else { - str += i + " = " + indent(String(obj[i])).replace(/^ /, "") + "\n"; - } - } catch(e) { - str += i + " = EXCEPTION: " + e.message + "\n"; - } - } - return str; - } - return "Object:\n" + makeStructured(message); - } -}; - -/** - * Print a normal log message to the console - * @param {Object|String} message Message or object to print to the console - */ -DebugConsole.prototype.log = function(message) { -}; - -/** - * Print a warning message to the console - * @param {Object|String} message Message or object to print to the console - */ -DebugConsole.prototype.warn = function(message) { -}; - -/** - * Print an error message to the console - * @param {Object|String} message Message or object to print to the console - */ -DebugConsole.prototype.error = function(message) { -}; - -PhoneGap.addConstructor(function() { - window.debug = new DebugConsole(); -}); -/** - * this represents the mobile device, and provides properties for inspecting the model, version, UUID of the - * phone, etc. - * @constructor - */ -function Device() { - this.available = PhoneGap.available; - this.platform = null; - this.version = null; - this.name = null; - this.gap = null; - this.uuid = null; - try { -<<<<<<< HEAD:android/assets/www/phonegap.js - if (window['DroidGap'] != undefined && window.DroidGap.exists()) { - this.available = true; - this.isAndroid = true; - this.uuid = window.DroidGap.getUuid(); - this.gapVersion = window.DroidGap.getVersion(); -======= - if (window.DroidGap) { - this.available = true; - this.uuid = window.DroidGap.getUuid(); - this.version = window.DroidGap.getOSVersion(); - this.gapVersion = window.DroidGap.getVersion(); - this.platform = window.DroidGap.getPlatform(); - this.name = window.DroidGap.getProductName(); ->>>>>>> 4c08b34a81e55a3146e67a8ad2282b7082b640e0:android/assets/www/phonegap.js - } else { - this.platform = DeviceInfo.platform; - this.version = DeviceInfo.version; - this.name = DeviceInfo.name; - this.gap = DeviceInfo.gap; - this.uuid = DeviceInfo.uuid; - } - } catch(e) { - this.available = false; - } -} - -PhoneGap.addConstructor(function() { - navigator.device = window.device = new Device(); -}); -/** - * 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) { - -} - -PhoneGap.addConstructor(function() { - 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; - this.lastError = null; - this.callbacks = { - onLocationChanged: [], - onError: [] - }; -}; - -/** - * 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) { - var referenceTime = 0; - if (this.lastPosition) - referenceTime = this.lastPosition.timeout; - else - this.start(options); - - var timeout = 20000; - var interval = 500; - if (typeof(options) == 'object' && options.interval) - interval = options.interval; - - if (typeof(successCallback) != 'function') - successCallback = function() {}; - if (typeof(errorCallback) != 'function') - errorCallback = function() {}; - - var dis = this; - var delay = 0; - var timer = setInterval(function() { - delay += interval; - - if (typeof(dis.lastPosition) == 'object' && dis.lastPosition.timestamp > referenceTime) { - successCallback(dis.lastPosition); - clearInterval(timer); - } else if (delay >= timeout) { - errorCallback(); - clearInterval(timer); - } - }, interval); -}; - -/** - * 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 = 10000; - if (typeof(options) == 'object' && options.frequency) - frequency = options.frequency; - - var that = this; - return setInterval(function() { - that.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); -}; - -/** - * Called by the geolocation framework when the current location is found. - * @param {PositionOptions} position The current position. - */ -Geolocation.prototype.setLocation = function(position) { - this.lastPosition = position; - for (var i = 0; i < this.callbacks.onLocationChanged.length; i++) { - var f = this.callbacks.onLocationChanged.shift(); - f(position); - } -}; - -/** - * Called by the geolocation framework when an error occurs while looking up the current position. - * @param {String} message The text of the error message. - */ -Geolocation.prototype.setError = function(message) { - this.lastError = message; - for (var i = 0; i < this.callbacks.onError.length; i++) { - var f = this.callbacks.onError.shift(); - f(message); - } -}; - -PhoneGap.addConstructor(function() { - 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) { - -} - -PhoneGap.addConstructor(function() { - if (typeof navigator.map == "undefined") navigator.map = new Map(); -}); - -/** - * This class provides access to the device media, interfaces to both sound and video - * @constructor - */ -function Media(src) { - this.src = src; -} - -<<<<<<< HEAD:android/assets/www/phonegap.js -Media.prototype.record = function() { -} - -======= ->>>>>>> 4c08b34a81e55a3146e67a8ad2282b7082b640e0:android/assets/www/phonegap.js -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 notifications on the device. - */ -function Notification() { - -} - -/** - * Open a native alert dialog, with a customizable title and button text. - * @param {String} message Message to print in the body of the alert - * @param {String} [title="Alert"] Title of the alert dialog (default: Alert) - * @param {String} [buttonLabel="OK"] Label of the close button (default: OK) - */ -Notification.prototype.alert = function(message, title, buttonLabel) { - // Default is to use a browser alert; this will use "index.html" as the title though - alert(message); -}; - -/** - * Start spinning the activity indicator on the statusbar - */ -Notification.prototype.activityStart = function() { -}; - -/** - * Stop spinning the activity indicator on the statusbar, if it's currently spinning - */ -Notification.prototype.activityStop = function() { -}; - -/** - * 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 - -PhoneGap.addConstructor(function() { - if (typeof navigator.notification == "undefined") navigator.notification = new Notification(); -}); - -/** - * This class provides access to the device orientation. - * @constructor - */ -function Orientation() { - /** - * The current orientation, or null if the orientation hasn't changed yet. - */ - this.currentOrientation = null; -} - -/** - * Set the current orientation of the phone. This is called from the device automatically. - * - * When the orientation is changed, the DOMEvent \c orientationChanged is dispatched against - * the document element. The event has the property \c orientation which can be used to retrieve - * the device's current orientation, in addition to the \c Orientation.currentOrientation class property. - * - * @param {Number} orientation The orientation to be set - */ -Orientation.prototype.setOrientation = function(orientation) { - Orientation.currentOrientation = orientation; - var e = document.createEvent('Events'); - e.initEvent('orientationChanged', 'false', 'false'); - e.orientation = orientation; - document.dispatchEvent(e); -}; - -/** - * 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); -}; - -PhoneGap.addConstructor(function() { - 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 - */ -<<<<<<< HEAD:android/assets/www/phonegap.js -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) { - -} - -PhoneGap.addConstructor(function() { - 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) { - -} - -PhoneGap.addConstructor(function() { - if (typeof navigator.telephony == "undefined") navigator.telephony = new Telephony(); -}); -/** - * This class exposes mobile phone interface controls to JavaScript, such as - * native tab and tool bars, etc. - * @constructor - */ -function UIControls() { - this.tabBarTag = 0; - this.tabBarCallbacks = {}; -} - -/** - * Create a native tab bar that can have tab buttons added to it which can respond to events. - */ -UIControls.prototype.createTabBar = function() {}; - -/** - * Show a tab bar. The tab bar has to be created first. - * @param {Object} [options] Options indicating how the tab bar should be shown: - * - \c height integer indicating the height of the tab bar (default: \c 49) - * - \c position specifies whether the tab bar will be placed at the \c top or \c bottom of the screen (default: \c bottom) - */ -UIControls.prototype.showTabBar = function(options) {}; - -/** - * Hide a tab bar. The tab bar has to be created first. - */ -UIControls.prototype.hideTabBar = function(animate) {}; - -/** - * Create a new tab bar item for use on a previously created tab bar. Use ::showTabBarItems to show the new item on the tab bar. - * - * If the supplied image name is one of the labels listed below, then this method will construct a tab button - * using the standard system buttons. Note that if you use one of the system images, that the \c title you supply will be ignored. - * - * Tab Buttons - * - tabButton:More - * - tabButton:Favorites - * - tabButton:Featured - * - tabButton:TopRated - * - tabButton:Recents - * - tabButton:Contacts - * - tabButton:History - * - tabButton:Bookmarks - * - tabButton:Search - * - tabButton:Downloads - * - tabButton:MostRecent - * - tabButton:MostViewed - * @param {String} name internal name to refer to this tab by - * @param {String} [title] title text to show on the tab, or null if no text should be shown - * @param {String} [image] image filename or internal identifier to show, or null if now image should be shown - * @param {Object} [options] Options for customizing the individual tab item - * - \c badge value to display in the optional circular badge on the item; if null or unspecified, the badge will be hidden - */ -UIControls.prototype.createTabBarItem = function(name, label, image, options) {}; - -/** - * Update an existing tab bar item to change its badge value. - * @param {String} name internal name used to represent this item when it was created - * @param {Object} options Options for customizing the individual tab item - * - \c badge value to display in the optional circular badge on the item; if null or unspecified, the badge will be hidden - */ -UIControls.prototype.updateTabBarItem = function(name, options) {}; - -/** - * Show previously created items on the tab bar - * @param {String} arguments... the item names to be shown - * @param {Object} [options] dictionary of options, notable options including: - * - \c animate indicates that the items should animate onto the tab bar - * @see createTabBarItem - * @see createTabBar - */ -UIControls.prototype.showTabBarItems = function(tabs, options) {}; - -/** - * Manually select an individual tab bar item, or nil for deselecting a currently selected tab bar item. - * @param {String} tabName the name of the tab to select, or null if all tabs should be deselected - * @see createTabBarItem - * @see showTabBarItems - */ -UIControls.prototype.selectTabBarItem = function(tab) {}; - -/** - * Function called when a tab bar item has been selected. - * @param {Number} tag the tag number for the item that has been selected - */ -UIControls.prototype.tabBarItemSelected = function(tag) { - if (typeof(this.tabBarCallbacks[tag]) == 'function') - this.tabBarCallbacks[tag](); -}; - -/** - * Create a toolbar. - */ -UIControls.prototype.createToolBar = function() {}; - -/** - * Function called when a tab bar item has been selected. - * @param {String} title the title to set within the toolbar - */ -UIControls.prototype.setToolBarTitle = function(title) {}; - -PhoneGap.addConstructor(function() { - window.uicontrols = new UIControls(); -}); -/* - * This is because strings are not exposed - * - */ -var Device = { - - platform: "", - version: "", - uuid: "", - - init: function() { - Device.platform = DroidGap.getPlatform(); - Device.version = Droidap.getVersion(); - Device.uuid = DroidGap.getUuid(); - }, - vibrate: function(mills) - { - DroidGap.vibrate(mills); - }, - beep: function() - { - DroidGap.beep(); - } -======= -function Position(coords, timestamp) { - this.coords = coords; - this.timestamp = new Date().getTime(); -} - -function Coordinates(lat, lng, alt, acc, 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 direction the device is moving at the position. - */ - this.heading = head; - /** - * The velocity with which the device is moving at the position. - */ - this.speed = vel; -} - -/** - * 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) { - ->>>>>>> 4c08b34a81e55a3146e67a8ad2282b7082b640e0:android/assets/www/phonegap.js -} - -PhoneGap.addConstructor(function() { - 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) { - -} - -PhoneGap.addConstructor(function() { - if (typeof navigator.telephony == "undefined") navigator.telephony = new Telephony(); -}); -/** - * This class exposes mobile phone interface controls to JavaScript, such as - * native tab and tool bars, etc. - * @constructor - */ -function UIControls() { - this.tabBarTag = 0; - this.tabBarCallbacks = {}; -} - -/** - * Create a native tab bar that can have tab buttons added to it which can respond to events. - */ -UIControls.prototype.createTabBar = function() {}; - -/** - * Show a tab bar. The tab bar has to be created first. - * @param {Object} [options] Options indicating how the tab bar should be shown: - * - \c height integer indicating the height of the tab bar (default: \c 49) - * - \c position specifies whether the tab bar will be placed at the \c top or \c bottom of the screen (default: \c bottom) - */ -UIControls.prototype.showTabBar = function(options) {}; - -/** - * Hide a tab bar. The tab bar has to be created first. - */ -UIControls.prototype.hideTabBar = function(animate) {}; - -/** - * Create a new tab bar item for use on a previously created tab bar. Use ::showTabBarItems to show the new item on the tab bar. - * - * If the supplied image name is one of the labels listed below, then this method will construct a tab button - * using the standard system buttons. Note that if you use one of the system images, that the \c title you supply will be ignored. - * - * Tab Buttons - * - tabButton:More - * - tabButton:Favorites - * - tabButton:Featured - * - tabButton:TopRated - * - tabButton:Recents - * - tabButton:Contacts - * - tabButton:History - * - tabButton:Bookmarks - * - tabButton:Search - * - tabButton:Downloads - * - tabButton:MostRecent - * - tabButton:MostViewed - * @param {String} name internal name to refer to this tab by - * @param {String} [title] title text to show on the tab, or null if no text should be shown - * @param {String} [image] image filename or internal identifier to show, or null if now image should be shown - * @param {Object} [options] Options for customizing the individual tab item - * - \c badge value to display in the optional circular badge on the item; if null or unspecified, the badge will be hidden - */ -UIControls.prototype.createTabBarItem = function(name, label, image, options) {}; - -/** - * Update an existing tab bar item to change its badge value. - * @param {String} name internal name used to represent this item when it was created - * @param {Object} options Options for customizing the individual tab item - * - \c badge value to display in the optional circular badge on the item; if null or unspecified, the badge will be hidden - */ -UIControls.prototype.updateTabBarItem = function(name, options) {}; - -/** - * Show previously created items on the tab bar - * @param {String} arguments... the item names to be shown - * @param {Object} [options] dictionary of options, notable options including: - * - \c animate indicates that the items should animate onto the tab bar - * @see createTabBarItem - * @see createTabBar - */ -UIControls.prototype.showTabBarItems = function(tabs, options) {}; - -/** - * Manually select an individual tab bar item, or nil for deselecting a currently selected tab bar item. - * @param {String} tabName the name of the tab to select, or null if all tabs should be deselected - * @see createTabBarItem - * @see showTabBarItems - */ -UIControls.prototype.selectTabBarItem = function(tab) {}; - -/** - * Function called when a tab bar item has been selected. - * @param {Number} tag the tag number for the item that has been selected - */ -UIControls.prototype.tabBarItemSelected = function(tag) { - if (typeof(this.tabBarCallbacks[tag]) == 'function') - this.tabBarCallbacks[tag](); -}; - -/** - * Create a toolbar. - */ -UIControls.prototype.createToolBar = function() {}; - -/** - * Function called when a tab bar item has been selected. - * @param {String} title the title to set within the toolbar - */ -UIControls.prototype.setToolBarTitle = function(title) {}; - -PhoneGap.addConstructor(function() { - window.uicontrols = new UIControls(); -}); -/* - * 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) -{ -<<<<<<< HEAD:android/assets/www/phonegap.js - var position = Geo.getCurrentPosition(); -======= - var position = Geo.getCurrentLocation(); ->>>>>>> 4c08b34a81e55a3146e67a8ad2282b7082b640e0:android/assets/www/phonegap.js - this.global_success = successCallback; - this.fail = errorCallback; -} - - -// Run the global callback -<<<<<<< HEAD:android/assets/www/phonegap.js -Geolocation.prototype.gotCurrentPosition = function(lat, lng) -======= -Geolocation.prototype.gotCurrentPosition = function(lat, lng, alt, altacc, head, vel, stamp) ->>>>>>> 4c08b34a81e55a3146e67a8ad2282b7082b640e0:android/assets/www/phonegap.js -{ - if (lat == 0 || lng == 0) - { - this.fail(); - } - else - { -<<<<<<< HEAD:android/assets/www/phonegap.js - var p = { "lat" : lat, "lng": lng }; - this.global_success(p); -======= - coords = new Coordinates(lat, lng, alt, altacc, head, vel); - loc = new Position(coords, stamp); - this.global_success(loc); ->>>>>>> 4c08b34a81e55a3146e67a8ad2282b7082b640e0:android/assets/www/phonegap.js - } -} - -/* - * 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 - * - */ -<<<<<<< HEAD:android/assets/www/phonegap.js -Geolocation.prototype.success(key, lat, lng) -======= -Geolocation.prototype.success = function(key, lat, lng, alt, altacc, head, vel, stamp) ->>>>>>> 4c08b34a81e55a3146e67a8ad2282b7082b640e0:android/assets/www/phonegap.js -{ - var coords = new Coordinates(lat, lng, alt, altacc, head, vel); - var loc = new Position(coords, stamp); - this.listeners[key].success(loc); -} - -Geolocation.prototype.fail(key) -{ - this.listeners[key].fail(); -} - -Geolocation.prototype.clearWatch = function(watchId) -{ - Geo.stop(watchId); -} - -<<<<<<< HEAD:android/assets/www/phonegap.js - -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.notify(); -} -======= - -Notification.prototype.vibrate = function(mills) -{ - DroidGap.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) -{ - DroidGap.beep(count); -} -// Need to define these for android -_accel = {} -_accel.x = 0; -_accel.y = 0; -_accel.z = 0; - -function gotAccel(x, y, z) -{ - _accel.x = x; - _accel.y = y; - _accel.z = z; -} - -/** - * 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) { - // TODO: add the interval id to a list so we can clear all watches - var frequency = (options != undefined)? options.frequency : 10000; - - Accel.start(frequency); - 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) { - Accel.stop(); - clearInterval(watchId); -} - -PhoneGap.addConstructor(function() { - if (typeof navigator.accelerometer == "undefined") navigator.accelerometer = new Accelerometer(); -}); ->>>>>>> 4c08b34a81e55a3146e67a8ad2282b7082b640e0:android/assets/www/phonegap.js diff --git a/src/com/phonegap/demo/CompassListener.java b/src/com/phonegap/demo/CompassListener.java new file mode 100644 index 00000000..afd6b7be --- /dev/null +++ b/src/com/phonegap/demo/CompassListener.java @@ -0,0 +1,54 @@ +package com.phonegap.demo; + +import java.util.List; + +import android.hardware.Sensor; +import android.hardware.SensorEvent; +import android.hardware.SensorEventListener; +import android.hardware.SensorManager; +import android.content.Context; +import android.webkit.WebView; + +public class CompassListener implements SensorEventListener{ + WebView mAppView; + Context mCtx; + Sensor mSensor; + + private SensorManager sensorManager; + + CompassListener(Context ctx, WebView appView) + { + mCtx = ctx; + mAppView = appView; + sensorManager = (SensorManager) mCtx.getSystemService(Context.SENSOR_SERVICE); + } + + + public void start() + { + List list = this.sensorManager.getSensorList(Sensor.TYPE_ORIENTATION); + if (list.size() > 0) + { + this.mSensor = list.get(0); + this.sensorManager.registerListener(this, this.mSensor, SensorManager.SENSOR_DELAY_NORMAL); + } + + } + + public void stop() + { + this.sensorManager.unregisterListener(this); + } + + public void onAccuracyChanged(Sensor sensor, int accuracy) { + // TODO Auto-generated method stub + + } + + + public void onSensorChanged(SensorEvent event) { + // We only care about the orientation as far as it refers to Magnetic North + float heading = event.values[0]; + mAppView.loadUrl("javascript:gotBearing(" + heading + ")"); + } +}