Return-Path: X-Original-To: apmail-cordova-commits-archive@www.apache.org Delivered-To: apmail-cordova-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 8D790F617 for ; Fri, 25 Apr 2014 18:12:38 +0000 (UTC) Received: (qmail 8109 invoked by uid 500); 25 Apr 2014 18:12:38 -0000 Delivered-To: apmail-cordova-commits-archive@cordova.apache.org Received: (qmail 8086 invoked by uid 500); 25 Apr 2014 18:12:38 -0000 Mailing-List: contact commits-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cordova.apache.org Delivered-To: mailing list commits@cordova.apache.org Received: (qmail 8079 invoked by uid 99); 25 Apr 2014 18:12:37 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 25 Apr 2014 18:12:37 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 8BA72951EBE; Fri, 25 Apr 2014 18:12:37 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: ian@apache.org To: commits@cordova.apache.org Message-Id: <61071ceb9b5d4320a6fe111e161b913a@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: git commit: CB-6521: Remove development branch Date: Fri, 25 Apr 2014 18:12:37 +0000 (UTC) Repository: cordova-plugin-device-motion Updated Branches: refs/heads/dev 68a046747 -> faa0259be CB-6521: Remove development branch Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/commit/faa0259b Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/tree/faa0259b Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/diff/faa0259b Branch: refs/heads/dev Commit: faa0259be8fc4450b1253b18076ba5d26a00de30 Parents: 68a0467 Author: Ian Clelland Authored: Fri Apr 25 14:09:46 2014 -0400 Committer: Ian Clelland Committed: Fri Apr 25 14:09:46 2014 -0400 ---------------------------------------------------------------------- LICENSE | 202 ---------------------- NOTICE | 5 - README.md | 2 + RELEASENOTES.md | 63 ------- doc/index.md | 156 ----------------- plugin.xml | 151 ---------------- src/android/AccelListener.java | 295 -------------------------------- src/blackberry10/index.js | 45 ----- src/firefoxos/accelerometer.js | 41 ----- src/ios/CDVAccelerometer.h | 39 ----- src/ios/CDVAccelerometer.m | 138 --------------- src/tizen/AccelerometerProxy.js | 51 ------ src/ubuntu/accelerometer.cpp | 58 ------- src/ubuntu/accelerometer.h | 55 ------ src/windows8/AccelerometerProxy.js | 70 -------- src/wp/Accelerometer.cs | 196 --------------------- www/Acceleration.js | 29 ---- www/accelerometer.js | 169 ------------------ 18 files changed, 2 insertions(+), 1763 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/LICENSE ---------------------------------------------------------------------- diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 7a4a3ea..0000000 --- a/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/NOTICE ---------------------------------------------------------------------- diff --git a/NOTICE b/NOTICE deleted file mode 100644 index 8ec56a5..0000000 --- a/NOTICE +++ /dev/null @@ -1,5 +0,0 @@ -Apache Cordova -Copyright 2012 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/README.md ---------------------------------------------------------------------- diff --git a/README.md b/README.md index d0cba9b..346c00b 100644 --- a/README.md +++ b/README.md @@ -20,3 +20,5 @@ # org.apache.cordova.device-motion Plugin documentation: [doc/index.md](doc/index.md) + +This is `dev` - the deprecated development branch of this plugin; development of this plugin has moved to the `master` branch http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/RELEASENOTES.md ---------------------------------------------------------------------- diff --git a/RELEASENOTES.md b/RELEASENOTES.md deleted file mode 100644 index 1044990..0000000 --- a/RELEASENOTES.md +++ /dev/null @@ -1,63 +0,0 @@ - -# Release Notes - -### 0.2.2 (Sept 25, 2013) -* CB-4889 bumping&resetting version -* [windows8] commandProxy was moved -* CB-4889 -* CB-4889 renaming core inside windows8 -* CB-4889 renaming org.apache.cordova.core.device-motion to org.apache.cordova.device-motion -* Rename CHANGELOG.md -> RELEASENOTES.md -* [CB-4752] Incremented plugin version on dev branch. - -### 0.2.3 (Oct 28, 2013) -* tweak scoping -* fixed the scope -* properly stop watching... -* adding timestamp to the response -* fix acceleromter for firefox os -* update firefoxos integration -* fixed callbacks -* accelerometer registers, but is not responding -* fxos added, not working -* CB-5128: added repo + issue tag to plugin.xml for device motion -* CB-5012 ensure result is returned -* [CB-4825] Add CoreMotion.framework to plugin.xml -* [CB-4825] avoid retain cycle in update block -* [CB-4825] use CoreMotion framework for accelerometer -* [CB-4915] Incremented plugin version on dev branch. - -### 0.2.4 (Dec 4, 2013) -* add ubuntu platform -* 1. Added amazon-fireos platform. 2. Change to use amazon-fireos as the platform if the user agent string contains 'cordova-amazon-fireos' - -### 0.2.5 (Jan 02, 2014) -* CB-5658 Add doc/index.md for Device Motion plugin - -### 0.2.6 (Feb 05, 2014) -* Add Tizen support - -### 0.2.7 (Apr 17, 2014) -* CB-6422: [windows8] use cordova/exec/proxy -* CB-6460: Update license headers -* CB-6465: Add license headers to Tizen code -* Add NOTICE file http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/doc/index.md ---------------------------------------------------------------------- diff --git a/doc/index.md b/doc/index.md deleted file mode 100644 index 79d3b47..0000000 --- a/doc/index.md +++ /dev/null @@ -1,156 +0,0 @@ - - -# org.apache.cordova.device-motion - -This plugin provides access to the device's accelerometer. The accelerometer is -a motion sensor that detects the change (_delta_) in movement relative to the -current device orientation, in three dimensions along the _x_, _y_, and _z_ -axis. - -## Installation - - cordova plugin add org.apache.cordova.device-motion - -## Supported Platforms - -- Amazon Fire OS -- Android -- BlackBerry 10 -- iOS -- Tizen -- Windows Phone 7 and 8 -- Windows 8 - -## Methods - -- navigator.accelerometer.getCurrentAcceleration -- navigator.accelerometer.watchAcceleration -- navigator.accelerometer.clearWatch - -## Objects - -- Acceleration - -## navigator.accelerometer.getCurrentAcceleration - -Get the current acceleration along the _x_, _y_, and _z_ axes. - -These acceleration values are returned to the `accelerometerSuccess` -callback function. - - navigator.accelerometer.getCurrentAcceleration(accelerometerSuccess, accelerometerError); - - -### Example - - function onSuccess(acceleration) { - alert('Acceleration X: ' + acceleration.x + '\n' + - 'Acceleration Y: ' + acceleration.y + '\n' + - 'Acceleration Z: ' + acceleration.z + '\n' + - 'Timestamp: ' + acceleration.timestamp + '\n'); - }; - - function onError() { - alert('onError!'); - }; - - navigator.accelerometer.getCurrentAcceleration(onSuccess, onError); - -### iOS Quirks - -- iOS doesn't recognize the concept of getting the current acceleration at any given point. - -- You must watch the acceleration and capture the data at given time intervals. - -- Thus, the `getCurrentAcceleration` function yields the last value reported from a `watchAccelerometer` call. - -## navigator.accelerometer.watchAcceleration - -Retrieves the device's current `Acceleration` at a regular interval, executing -the `accelerometerSuccess` callback function each time. Specify the interval in -milliseconds via the `acceleratorOptions` object's `frequency` parameter. - -The returned watch ID references the accelerometer's watch interval, -and can be used with `navigator.accelerometer.clearWatch` to stop watching the -accelerometer. - - var watchID = navigator.accelerometer.watchAcceleration(accelerometerSuccess, - accelerometerError, - [accelerometerOptions]); - -- __accelerometerOptions__: An object with the following optional keys: - - __frequency__: How often to retrieve the `Acceleration` in milliseconds. _(Number)_ (Default: 10000) - - -### Example - - function onSuccess(acceleration) { - alert('Acceleration X: ' + acceleration.x + '\n' + - 'Acceleration Y: ' + acceleration.y + '\n' + - 'Acceleration Z: ' + acceleration.z + '\n' + - 'Timestamp: ' + acceleration.timestamp + '\n'); - }; - - function onError() { - alert('onError!'); - }; - - var options = { frequency: 3000 }; // Update every 3 seconds - - var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options); - -### iOS Quirks - -The API calls the success callback function at the interval requested, -but restricts the range of requests to the device between 40ms and -1000ms. For example, if you request an interval of 3 seconds, -(3000ms), the API requests data from the device every 1 second, but -only executes the success callback every 3 seconds. - -## navigator.accelerometer.clearWatch - -Stop watching the `Acceleration` referenced by the `watchID` parameter. - - navigator.accelerometer.clearWatch(watchID); - -- __watchID__: The ID returned by `navigator.accelerometer.watchAcceleration`. - -### Example - - var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options); - - // ... later on ... - - navigator.accelerometer.clearWatch(watchID); - -## Acceleration - -Contains `Accelerometer` data captured at a specific point in time. -Acceleration values include the effect of gravity (9.81 m/s^2), so that when a -device lies flat and facing up, _x_, _y_, and _z_ values returned should be -`0`, `0`, and `9.81`. - -### Properties - -- __x__: Amount of acceleration on the x-axis. (in m/s^2) _(Number)_ -- __y__: Amount of acceleration on the y-axis. (in m/s^2) _(Number)_ -- __z__: Amount of acceleration on the z-axis. (in m/s^2) _(Number)_ -- __timestamp__: Creation timestamp in milliseconds. _(DOMTimeStamp)_ - http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/plugin.xml ---------------------------------------------------------------------- diff --git a/plugin.xml b/plugin.xml deleted file mode 100644 index 36032b1..0000000 --- a/plugin.xml +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - Device Motion - Cordova Device Motion Plugin - Apache 2.0 - cordova,device,motion - https://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion.git - https://issues.apache.org/jira/browse/CB/component/12320636 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/src/android/AccelListener.java ---------------------------------------------------------------------- diff --git a/src/android/AccelListener.java b/src/android/AccelListener.java deleted file mode 100755 index 94479fd..0000000 --- a/src/android/AccelListener.java +++ /dev/null @@ -1,295 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. -*/ -package org.apache.cordova.devicemotion; - -import java.util.List; - -import org.apache.cordova.CordovaWebView; -import org.apache.cordova.CallbackContext; -import org.apache.cordova.CordovaInterface; -import org.apache.cordova.CordovaPlugin; -import org.apache.cordova.PluginResult; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import android.content.Context; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; - -import android.os.Handler; -import android.os.Looper; - -/** - * This class listens to the accelerometer sensor and stores the latest - * acceleration values x,y,z. - */ -public class AccelListener extends CordovaPlugin implements SensorEventListener { - - public static int STOPPED = 0; - public static int STARTING = 1; - public static int RUNNING = 2; - public static int ERROR_FAILED_TO_START = 3; - - private float x,y,z; // most recent acceleration values - private long timestamp; // time of most recent value - private int status; // status of listener - private int accuracy = SensorManager.SENSOR_STATUS_UNRELIABLE; - - private SensorManager sensorManager; // Sensor manager - private Sensor mSensor; // Acceleration sensor returned by sensor manager - - private CallbackContext callbackContext; // Keeps track of the JS callback context. - - private Handler mainHandler=null; - private Runnable mainRunnable =new Runnable() { - public void run() { - AccelListener.this.timeout(); - } - }; - - /** - * Create an accelerometer listener. - */ - public AccelListener() { - this.x = 0; - this.y = 0; - this.z = 0; - this.timestamp = 0; - this.setStatus(AccelListener.STOPPED); - } - - /** - * Sets the context of the Command. This can then be used to do things like - * get file paths associated with the Activity. - * - * @param cordova The context of the main Activity. - * @param webView The associated CordovaWebView. - */ - @Override - public void initialize(CordovaInterface cordova, CordovaWebView webView) { - super.initialize(cordova, webView); - this.sensorManager = (SensorManager) cordova.getActivity().getSystemService(Context.SENSOR_SERVICE); - } - - /** - * Executes the request. - * - * @param action The action to execute. - * @param args The exec() arguments. - * @param callbackId The callback id used when calling back into JavaScript. - * @return Whether the action was valid. - */ - public boolean execute(String action, JSONArray args, CallbackContext callbackContext) { - if (action.equals("start")) { - this.callbackContext = callbackContext; - if (this.status != AccelListener.RUNNING) { - // If not running, then this is an async call, so don't worry about waiting - // We drop the callback onto our stack, call start, and let start and the sensor callback fire off the callback down the road - this.start(); - } - } - else if (action.equals("stop")) { - if (this.status == AccelListener.RUNNING) { - this.stop(); - } - } else { - // Unsupported action - return false; - } - - PluginResult result = new PluginResult(PluginResult.Status.NO_RESULT, ""); - result.setKeepCallback(true); - callbackContext.sendPluginResult(result); - return true; - } - - /** - * Called by AccelBroker when listener is to be shut down. - * Stop listener. - */ - public void onDestroy() { - this.stop(); - } - - //-------------------------------------------------------------------------- - // LOCAL METHODS - //-------------------------------------------------------------------------- - // - /** - * Start listening for acceleration sensor. - * - * @return status of listener - */ - private int start() { - // If already starting or running, then just return - if ((this.status == AccelListener.RUNNING) || (this.status == AccelListener.STARTING)) { - return this.status; - } - - this.setStatus(AccelListener.STARTING); - - // Get accelerometer from sensor manager - List list = this.sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER); - - // If found, then register as listener - if ((list != null) && (list.size() > 0)) { - this.mSensor = list.get(0); - this.sensorManager.registerListener(this, this.mSensor, SensorManager.SENSOR_DELAY_UI); - this.setStatus(AccelListener.STARTING); - } else { - this.setStatus(AccelListener.ERROR_FAILED_TO_START); - this.fail(AccelListener.ERROR_FAILED_TO_START, "No sensors found to register accelerometer listening to."); - return this.status; - } - - // Set a timeout callback on the main thread. - stopTimeout(); - mainHandler = new Handler(Looper.getMainLooper()); - mainHandler.postDelayed(mainRunnable, 2000); - - return this.status; - } - private void stopTimeout() { - if(mainHandler!=null){ - mainHandler.removeCallbacks(mainRunnable); - } - } - /** - * Stop listening to acceleration sensor. - */ - private void stop() { - stopTimeout(); - if (this.status != AccelListener.STOPPED) { - this.sensorManager.unregisterListener(this); - } - this.setStatus(AccelListener.STOPPED); - this.accuracy = SensorManager.SENSOR_STATUS_UNRELIABLE; - } - - /** - * Returns an error if the sensor hasn't started. - * - * Called two seconds after starting the listener. - */ - private void timeout() { - if (this.status == AccelListener.STARTING) { - this.setStatus(AccelListener.ERROR_FAILED_TO_START); - this.fail(AccelListener.ERROR_FAILED_TO_START, "Accelerometer could not be started."); - } - } - - /** - * Called when the accuracy of the sensor has changed. - * - * @param sensor - * @param accuracy - */ - public void onAccuracyChanged(Sensor sensor, int accuracy) { - // Only look at accelerometer events - if (sensor.getType() != Sensor.TYPE_ACCELEROMETER) { - return; - } - - // If not running, then just return - if (this.status == AccelListener.STOPPED) { - return; - } - this.accuracy = accuracy; - } - - /** - * Sensor listener event. - * - * @param SensorEvent event - */ - public void onSensorChanged(SensorEvent event) { - // Only look at accelerometer events - if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER) { - return; - } - - // If not running, then just return - if (this.status == AccelListener.STOPPED) { - return; - } - this.setStatus(AccelListener.RUNNING); - - if (this.accuracy >= SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM) { - - // Save time that event was received - this.timestamp = System.currentTimeMillis(); - this.x = event.values[0]; - this.y = event.values[1]; - this.z = event.values[2]; - - this.win(); - } - } - - /** - * Called when the view navigates. - */ - @Override - public void onReset() { - if (this.status == AccelListener.RUNNING) { - this.stop(); - } - } - - // Sends an error back to JS - private void fail(int code, String message) { - // Error object - JSONObject errorObj = new JSONObject(); - try { - errorObj.put("code", code); - errorObj.put("message", message); - } catch (JSONException e) { - e.printStackTrace(); - } - PluginResult err = new PluginResult(PluginResult.Status.ERROR, errorObj); - err.setKeepCallback(true); - callbackContext.sendPluginResult(err); - } - - private void win() { - // Success return object - PluginResult result = new PluginResult(PluginResult.Status.OK, this.getAccelerationJSON()); - result.setKeepCallback(true); - callbackContext.sendPluginResult(result); - } - - private void setStatus(int status) { - this.status = status; - } - private JSONObject getAccelerationJSON() { - JSONObject r = new JSONObject(); - try { - r.put("x", this.x); - r.put("y", this.y); - r.put("z", this.z); - r.put("timestamp", this.timestamp); - } catch (JSONException e) { - e.printStackTrace(); - } - return r; - } -} http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/src/blackberry10/index.js ---------------------------------------------------------------------- diff --git a/src/blackberry10/index.js b/src/blackberry10/index.js deleted file mode 100644 index 47abe42..0000000 --- a/src/blackberry10/index.js +++ /dev/null @@ -1,45 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -var callback; - -module.exports = { - start: function (success, fail, args, env) { - var result = new PluginResult(args, env); - window.removeEventListener("devicemotion", callback); - callback = function (motion) { - var info = { - x: motion.accelerationIncludingGravity.x, - y: motion.accelerationIncludingGravity.y, - z: motion.accelerationIncludingGravity.z, - timestamp: motion.timestamp - }; - result.callbackOk(info, true); - }; - window.addEventListener("devicemotion", callback); - result.noResult(true); - }, - stop: function (success, fail, args, env) { - var result = new PluginResult(args, env); - window.removeEventListener("devicemotion", callback); - result.ok("removed"); - } -}; http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/src/firefoxos/accelerometer.js ---------------------------------------------------------------------- diff --git a/src/firefoxos/accelerometer.js b/src/firefoxos/accelerometer.js deleted file mode 100644 index c0152ad..0000000 --- a/src/firefoxos/accelerometer.js +++ /dev/null @@ -1,41 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -function listener(success, ev) { - var acc = ev.accelerationIncludingGravity; - acc.timestamp = new Date().getTime(); - success(acc); -} - -var Accelerometer = { - start: function start(success, error) { - return window.addEventListener('devicemotion', function(ev) { - listener(success, ev); - }, false); - }, - - stop: function stop() { - window.removeEventListener('devicemotion', listener, false); - } -}; - -module.exports = Accelerometer; -require('cordova/firefoxos/commandProxy').add('Accelerometer', Accelerometer); http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/src/ios/CDVAccelerometer.h ---------------------------------------------------------------------- diff --git a/src/ios/CDVAccelerometer.h b/src/ios/CDVAccelerometer.h deleted file mode 100755 index ee1664f..0000000 --- a/src/ios/CDVAccelerometer.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -#import -#import - -@interface CDVAccelerometer : CDVPlugin -{ - double x; - double y; - double z; - NSTimeInterval timestamp; -} - -@property (readonly, assign) BOOL isRunning; -@property (nonatomic, strong) NSString* callbackId; - -- (CDVAccelerometer*)init; - -- (void)start:(CDVInvokedUrlCommand*)command; -- (void)stop:(CDVInvokedUrlCommand*)command; - -@end http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/src/ios/CDVAccelerometer.m ---------------------------------------------------------------------- diff --git a/src/ios/CDVAccelerometer.m b/src/ios/CDVAccelerometer.m deleted file mode 100755 index e98aacd..0000000 --- a/src/ios/CDVAccelerometer.m +++ /dev/null @@ -1,138 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. - */ - -#import -#import "CDVAccelerometer.h" - -@interface CDVAccelerometer () {} -@property (readwrite, assign) BOOL isRunning; -@property (readwrite, assign) BOOL haveReturnedResult; -@property (readwrite, strong) CMMotionManager* motionManager; -@end - -@implementation CDVAccelerometer - -@synthesize callbackId, isRunning; - -// defaults to 10 msec -#define kAccelerometerInterval 10 -// g constant: -9.81 m/s^2 -#define kGravitationalConstant -9.81 - -- (CDVAccelerometer*)init -{ - self = [super init]; - if (self) { - x = 0; - y = 0; - z = 0; - timestamp = 0; - self.callbackId = nil; - self.isRunning = NO; - self.haveReturnedResult = YES; - self.motionManager = nil; - } - return self; -} - -- (void)dealloc -{ - [self stop:nil]; -} - -- (void)start:(CDVInvokedUrlCommand*)command -{ - self.haveReturnedResult = NO; - self.callbackId = command.callbackId; - - if (!self.motionManager) - { - self.motionManager = [[CMMotionManager alloc] init]; - } - - if ([self.motionManager isAccelerometerAvailable] == YES) { - // Assign the update interval to the motion manager and start updates - [self.motionManager setAccelerometerUpdateInterval:kAccelerometerInterval/1000]; // expected in seconds - __weak CDVAccelerometer* weakSelf = self; - [self.motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) { - x = accelerometerData.acceleration.x; - y = accelerometerData.acceleration.y; - z = accelerometerData.acceleration.z; - timestamp = ([[NSDate date] timeIntervalSince1970] * 1000); - [weakSelf returnAccelInfo]; - }]; - - if (!self.isRunning) { - self.isRunning = YES; - } - } - -} - -- (void)onReset -{ - [self stop:nil]; -} - -- (void)stop:(CDVInvokedUrlCommand*)command -{ - if ([self.motionManager isAccelerometerAvailable] == YES) { - if (self.haveReturnedResult == NO){ - // block has not fired before stop was called, return whatever result we currently have - [self returnAccelInfo]; - } - [self.motionManager stopAccelerometerUpdates]; - } - self.isRunning = NO; -} - -- (void)returnAccelInfo -{ - // Create an acceleration object - NSMutableDictionary* accelProps = [NSMutableDictionary dictionaryWithCapacity:4]; - - [accelProps setValue:[NSNumber numberWithDouble:x * kGravitationalConstant] forKey:@"x"]; - [accelProps setValue:[NSNumber numberWithDouble:y * kGravitationalConstant] forKey:@"y"]; - [accelProps setValue:[NSNumber numberWithDouble:z * kGravitationalConstant] forKey:@"z"]; - [accelProps setValue:[NSNumber numberWithDouble:timestamp] forKey:@"timestamp"]; - - CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:accelProps]; - [result setKeepCallback:[NSNumber numberWithBool:YES]]; - [self.commandDelegate sendPluginResult:result callbackId:self.callbackId]; - self.haveReturnedResult = YES; -} - -// TODO: Consider using filtering to isolate instantaneous data vs. gravity data -jm - -/* - #define kFilteringFactor 0.1 - - // Use a basic low-pass filter to keep only the gravity component of each axis. - grav_accelX = (acceleration.x * kFilteringFactor) + ( grav_accelX * (1.0 - kFilteringFactor)); - grav_accelY = (acceleration.y * kFilteringFactor) + ( grav_accelY * (1.0 - kFilteringFactor)); - grav_accelZ = (acceleration.z * kFilteringFactor) + ( grav_accelZ * (1.0 - kFilteringFactor)); - - // Subtract the low-pass value from the current value to get a simplified high-pass filter - instant_accelX = acceleration.x - ( (acceleration.x * kFilteringFactor) + (instant_accelX * (1.0 - kFilteringFactor)) ); - instant_accelY = acceleration.y - ( (acceleration.y * kFilteringFactor) + (instant_accelY * (1.0 - kFilteringFactor)) ); - instant_accelZ = acceleration.z - ( (acceleration.z * kFilteringFactor) + (instant_accelZ * (1.0 - kFilteringFactor)) ); - - - */ -@end http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/src/tizen/AccelerometerProxy.js ---------------------------------------------------------------------- diff --git a/src/tizen/AccelerometerProxy.js b/src/tizen/AccelerometerProxy.js deleted file mode 100644 index b534422..0000000 --- a/src/tizen/AccelerometerProxy.js +++ /dev/null @@ -1,51 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -(function(win) { - var cordova = require('cordova'), - Acceleration = require('org.apache.cordova.device-motion.Acceleration'), - accelerometerCallback = null; - - module.exports = { - start: function (successCallback, errorCallback) { - if (accelerometerCallback) { - win.removeEventListener("devicemotion", accelerometerCallback, true); - } - - accelerometerCallback = function (motion) { - successCallback({ - x: motion.accelerationIncludingGravity.x, - y: motion.accelerationIncludingGravity.y, - z: motion.accelerationIncludingGravity.z, - timestamp: new Date().getTime() - }); - }; - win.addEventListener("devicemotion", accelerometerCallback, true); - }, - - stop: function (successCallback, errorCallback) { - win.removeEventListener("devicemotion", accelerometerCallback, true); - accelerometerCallback = null; - } - }; - - require("cordova/tizen/commandProxy").add("Accelerometer", module.exports); -}(window)); http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/src/ubuntu/accelerometer.cpp ---------------------------------------------------------------------- diff --git a/src/ubuntu/accelerometer.cpp b/src/ubuntu/accelerometer.cpp deleted file mode 100644 index 8d39174..0000000 --- a/src/ubuntu/accelerometer.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -#include -#include "accelerometer.h" - -DeviceMotion::DeviceMotion(Cordova *cordova): CPlugin(cordova), _scId(0), _ecId(0) { - _accelerometerSource = QSharedPointer(new QAccelerometer()); - _sensorAvaliable = _accelerometerSource->start(); - connect(_accelerometerSource.data(), SIGNAL(readingChanged()), SLOT(updateSensor())); -} - -void DeviceMotion::start(int scId, int ecId) { - assert(_ecId == 0); - assert(_scId == 0); - - _ecId = ecId; - _scId = scId; - - if (!_sensorAvaliable) { - this->cb(ecId); - return; - } -} - -void DeviceMotion::stop(int, int) { - _scId = 0; - _ecId = 0; -} - -void DeviceMotion::updateSensor() { - QAccelerometerReading *accelerometer = _accelerometerSource->reading(); - - QVariantMap obj; - obj.insert("x", accelerometer->x()); - obj.insert("y", accelerometer->y()); - obj.insert("z", accelerometer->z()); - // accelerometer->timestamp() is not sutiable. - // Timestamps values are microseconds since _a_ fixed point(depend on backend). - obj.insert("timestamp", QDateTime::currentDateTime().toMSecsSinceEpoch()); - - if (_scId) - this->cb(_scId, obj); -} http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/src/ubuntu/accelerometer.h ---------------------------------------------------------------------- diff --git a/src/ubuntu/accelerometer.h b/src/ubuntu/accelerometer.h deleted file mode 100644 index 3f36a16..0000000 --- a/src/ubuntu/accelerometer.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -#ifndef ACCELEROMETER_H -#define ACCELEROMETER_H - -#include -#include -#include - -class DeviceMotion: public CPlugin { - Q_OBJECT -public: - explicit DeviceMotion(Cordova *cordova); - - virtual const QString fullName() override { - return DeviceMotion::fullID(); - } - - virtual const QString shortName() override { - return "Accelerometer"; - } - - static const QString fullID() { - return "Accelerometer"; - } - -public slots: - void start(int scId, int ecId); - void stop(int scId, int ecId); - -protected slots: - void updateSensor(); - -private: - int _scId, _ecId; - bool _sensorAvaliable; - QSharedPointer _accelerometerSource; -}; - -#endif http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/src/windows8/AccelerometerProxy.js ---------------------------------------------------------------------- diff --git a/src/windows8/AccelerometerProxy.js b/src/windows8/AccelerometerProxy.js deleted file mode 100644 index 0b41ba7..0000000 --- a/src/windows8/AccelerometerProxy.js +++ /dev/null @@ -1,70 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -/*global Windows:true */ - -var cordova = require('cordova'), - Acceleration = require('org.apache.cordova.device-motion.Acceleration'); - -/* This is the actual implementation part that returns the result on Windows 8 -*/ - -module.exports = { - onDataChanged:null, - start:function(win,lose){ - - var accel = Windows.Devices.Sensors.Accelerometer.getDefault(); - if(!accel) { - lose && lose("No accelerometer found"); - } - else { - var self = this; - accel.reportInterval = Math.max(16,accel.minimumReportInterval); - - // store our bound function - this.onDataChanged = function(e) { - var a = e.reading; - win(new Acceleration(a.accelerationX,a.accelerationY,a.accelerationZ)); - }; - accel.addEventListener("readingchanged",this.onDataChanged); - - setTimeout(function(){ - var a = accel.getCurrentReading(); - win(new Acceleration(a.accelerationX,a.accelerationY,a.accelerationZ)); - },0); // async do later - } - }, - stop:function(win,lose){ - win = win || function(){}; - var accel = Windows.Devices.Sensors.Accelerometer.getDefault(); - if(!accel) { - lose && lose("No accelerometer found"); - } - else { - accel.removeEventListener("readingchanged",this.onDataChanged); - this.onDataChanged = null; - accel.reportInterval = 0; // back to the default - win(); - } - } -}; - -require("cordova/exec/proxy").add("Accelerometer",module.exports); http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/src/wp/Accelerometer.cs ---------------------------------------------------------------------- diff --git a/src/wp/Accelerometer.cs b/src/wp/Accelerometer.cs deleted file mode 100644 index cba911c..0000000 --- a/src/wp/Accelerometer.cs +++ /dev/null @@ -1,196 +0,0 @@ -/* - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - - -using System; -using System.Collections.Generic; -using System.Runtime.Serialization; -using System.Threading; -using Microsoft.Devices.Sensors; -using System.Globalization; -using System.Diagnostics; - -namespace WPCordovaClassLib.Cordova.Commands -{ - /// - /// Captures device motion in the x, y, and z direction. - /// - public class Accelerometer : BaseCommand - { - #region AccelerometerOptions class - /// - /// Represents Accelerometer options. - /// - [DataContract] - public class AccelerometerOptions - { - /// - /// How often to retrieve the Acceleration in milliseconds - /// - [DataMember(IsRequired = false, Name = "frequency")] - public int Frequency { get; set; } - - /// - /// Watcher id - /// - [DataMember(IsRequired = false, Name = "id")] - public string Id { get; set; } - - /// - /// Creates options object with default parameters - /// - public AccelerometerOptions() - { - this.SetDefaultValues(new StreamingContext()); - } - - /// - /// Initializes default values for class fields. - /// Implemented in separate method because default constructor is not invoked during deserialization. - /// - /// - [OnDeserializing()] - public void SetDefaultValues(StreamingContext context) - { - this.Frequency = 10000; - } - } - - #endregion - - #region Status codes and Constants - - public const int Stopped = 0; - public const int Starting = 1; - public const int Running = 2; - public const int ErrorFailedToStart = 3; - - public const double gConstant = -9.81; - - #endregion - - #region Static members - - /// - /// Status of listener - /// - private static int currentStatus; - - /// - /// Accelerometer - /// - private static Microsoft.Devices.Sensors.Accelerometer accelerometer = new Microsoft.Devices.Sensors.Accelerometer(); - - private static DateTime StartOfEpoch = new DateTime(1970, 1, 1, 0, 0, 0); - - #endregion - - /// - /// Sensor listener event - /// - private void accelerometer_CurrentValueChanged(object sender, SensorReadingEventArgs e) - { - this.SetStatus(Running); - - PluginResult result = new PluginResult(PluginResult.Status.OK, GetCurrentAccelerationFormatted()); - result.KeepCallback = true; - DispatchCommandResult(result); - } - - /// - /// Starts listening for acceleration sensor - /// - /// status of listener - public void start(string options) - { - if ((currentStatus == Running) || (currentStatus == Starting)) - { - return; - } - try - { - lock (accelerometer) - { - accelerometer.CurrentValueChanged += accelerometer_CurrentValueChanged; - accelerometer.Start(); - this.SetStatus(Starting); - } - - long timeout = 2000; - while ((currentStatus == Starting) && (timeout > 0)) - { - timeout = timeout - 100; - Thread.Sleep(100); - } - - if (currentStatus != Running) - { - this.SetStatus(ErrorFailedToStart); - DispatchCommandResult(new PluginResult(PluginResult.Status.IO_EXCEPTION, ErrorFailedToStart)); - return; - } - } - catch (Exception) - { - this.SetStatus(ErrorFailedToStart); - DispatchCommandResult(new PluginResult(PluginResult.Status.IO_EXCEPTION, ErrorFailedToStart)); - return; - } - PluginResult result = new PluginResult(PluginResult.Status.NO_RESULT); - result.KeepCallback = true; - DispatchCommandResult(result); - } - - public void stop(string options) - { - if (currentStatus == Running) - { - lock (accelerometer) - { - accelerometer.CurrentValueChanged -= accelerometer_CurrentValueChanged; - accelerometer.Stop(); - this.SetStatus(Stopped); - } - } - DispatchCommandResult(new PluginResult(PluginResult.Status.OK)); - } - - /// - /// Formats current coordinates into JSON format - /// - /// Coordinates in JSON format - private string GetCurrentAccelerationFormatted() - { - // convert to unix timestamp - // long timestamp = ((accelerometer.CurrentValue.Timestamp.DateTime - StartOfEpoch).Ticks) / 10000; - // Note: Removed timestamp, to let the JS side create it using (new Date().getTime()) -jm - // this resolves an issue with inconsistencies between JS dates and Native DateTime - string resultCoordinates = String.Format("\"x\":{0},\"y\":{1},\"z\":{2}", - (accelerometer.CurrentValue.Acceleration.X * gConstant).ToString("0.00000", CultureInfo.InvariantCulture), - (accelerometer.CurrentValue.Acceleration.Y * gConstant).ToString("0.00000", CultureInfo.InvariantCulture), - (accelerometer.CurrentValue.Acceleration.Z * gConstant).ToString("0.00000", CultureInfo.InvariantCulture)); - return "{" + resultCoordinates + "}"; - } - - /// - /// Sets current status - /// - /// current status - private void SetStatus(int status) - { - currentStatus = status; - } - } -} - http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/www/Acceleration.js ---------------------------------------------------------------------- diff --git a/www/Acceleration.js b/www/Acceleration.js deleted file mode 100644 index d1669b5..0000000 --- a/www/Acceleration.js +++ /dev/null @@ -1,29 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -var Acceleration = function(x, y, z, timestamp) { - this.x = x; - this.y = y; - this.z = z; - this.timestamp = timestamp || (new Date()).getTime(); -}; - -module.exports = Acceleration; http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/faa0259b/www/accelerometer.js ---------------------------------------------------------------------- diff --git a/www/accelerometer.js b/www/accelerometer.js deleted file mode 100644 index b6e9f97..0000000 --- a/www/accelerometer.js +++ /dev/null @@ -1,169 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ - -/** - * This class provides access to device accelerometer data. - * @constructor - */ -var argscheck = require('cordova/argscheck'), - utils = require("cordova/utils"), - exec = require("cordova/exec"), - Acceleration = require('./Acceleration'); - -// Is the accel sensor running? -var running = false; - -// Keeps reference to watchAcceleration calls. -var timers = {}; - -// Array of listeners; used to keep track of when we should call start and stop. -var listeners = []; - -// Last returned acceleration object from native -var accel = null; - -// Tells native to start. -function start() { - exec(function(a) { - var tempListeners = listeners.slice(0); - accel = new Acceleration(a.x, a.y, a.z, a.timestamp); - for (var i = 0, l = tempListeners.length; i < l; i++) { - tempListeners[i].win(accel); - } - }, function(e) { - var tempListeners = listeners.slice(0); - for (var i = 0, l = tempListeners.length; i < l; i++) { - tempListeners[i].fail(e); - } - }, "Accelerometer", "start", []); - running = true; -} - -// Tells native to stop. -function stop() { - exec(null, null, "Accelerometer", "stop", []); - running = false; -} - -// Adds a callback pair to the listeners array -function createCallbackPair(win, fail) { - return {win:win, fail:fail}; -} - -// Removes a win/fail listener pair from the listeners array -function removeListeners(l) { - var idx = listeners.indexOf(l); - if (idx > -1) { - listeners.splice(idx, 1); - if (listeners.length === 0) { - stop(); - } - } -} - -var accelerometer = { - /** - * Asynchronously acquires 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. (OPTIONAL) - * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL) - */ - getCurrentAcceleration: function(successCallback, errorCallback, options) { - argscheck.checkArgs('fFO', 'accelerometer.getCurrentAcceleration', arguments); - - var p; - var win = function(a) { - removeListeners(p); - successCallback(a); - }; - var fail = function(e) { - removeListeners(p); - errorCallback && errorCallback(e); - }; - - p = createCallbackPair(win, fail); - listeners.push(p); - - if (!running) { - start(); - } - }, - - /** - * Asynchronously acquires 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. (OPTIONAL) - * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL) - * @return String The watch id that must be passed to #clearWatch to stop watching. - */ - watchAcceleration: function(successCallback, errorCallback, options) { - argscheck.checkArgs('fFO', 'accelerometer.watchAcceleration', arguments); - // Default interval (10 sec) - var frequency = (options && options.frequency && typeof options.frequency == 'number') ? options.frequency : 10000; - - // Keep reference to watch id, and report accel readings as often as defined in frequency - var id = utils.createUUID(); - - var p = createCallbackPair(function(){}, function(e) { - removeListeners(p); - errorCallback && errorCallback(e); - }); - listeners.push(p); - - timers[id] = { - timer:window.setInterval(function() { - if (accel) { - successCallback(accel); - } - }, frequency), - listeners:p - }; - - if (running) { - // If we're already running then immediately invoke the success callback - // but only if we have retrieved a value, sample code does not check for null ... - if (accel) { - successCallback(accel); - } - } else { - start(); - } - - return id; - }, - - /** - * Clears the specified accelerometer watch. - * - * @param {String} id The id of the watch returned from #watchAcceleration. - */ - clearWatch: function(id) { - // Stop javascript timer & remove from timer list - if (id && timers[id]) { - window.clearInterval(timers[id].timer); - removeListeners(timers[id].listeners); - delete timers[id]; - } - } -}; -module.exports = accelerometer;