You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by an...@apache.org on 2012/04/28 02:27:55 UTC

[16/17] bada-wac commit: adding initial compass support

adding initial compass support


Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-bada-wac/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-bada-wac/commit/628e8ea6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-bada-wac/tree/628e8ea6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-bada-wac/diff/628e8ea6

Branch: refs/heads/master
Commit: 628e8ea626b5b24eba56f03c483fcd48dd32e177
Parents: c0b0889
Author: Anis Kadri <an...@gmail.com>
Authored: Tue Apr 3 16:41:29 2012 -0700
Committer: Anis Kadri <an...@gmail.com>
Committed: Tue Apr 3 16:41:29 2012 -0700

----------------------------------------------------------------------
 Res/index.html          |   13 +++++++++
 Res/js/accelerometer.js |    7 ++---
 Res/js/compass.js       |   49 +++++++++++++++++++++++----------
 Res/js/sample.js        |   61 ++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 111 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-bada-wac/blob/628e8ea6/Res/index.html
----------------------------------------------------------------------
diff --git a/Res/index.html b/Res/index.html
index 4c8b5a8..750f182 100644
--- a/Res/index.html
+++ b/Res/index.html
@@ -58,8 +58,21 @@ button.btn {
 				<span id="geolocation"></span>
 			</div>
 		</li>
+		<li>
+			<h3>Compass</h3>
+			<div>
+				<button type="button" class="btn" onclick="getCurrentHeading();">getCurrentHeading</button>
+			</div>
+			<div>
+				<button type="button" class="btn" id="compassBtn" onclick="toggleCompass();">watchHeading</button>
+			</div>
+			<div>
+				<span id="heading"></span>
+			</div>
+		</li>
 	</ul>
 <script type="text/javascript" src="./js/accelerometer.js"></script>
+<script type="text/javascript" src="./js/compass.js"></script>
 <script type="text/javascript" src="./js/device.js"></script>
 <script type="text/javascript" src="./js/sample.js"></script>
 </body>

http://git-wip-us.apache.org/repos/asf/incubator-cordova-bada-wac/blob/628e8ea6/Res/js/accelerometer.js
----------------------------------------------------------------------
diff --git a/Res/js/accelerometer.js b/Res/js/accelerometer.js
index 692a5b4..1f729be 100644
--- a/Res/js/accelerometer.js
+++ b/Res/js/accelerometer.js
@@ -39,10 +39,9 @@ navigator.accelerometer = {
 				
 				errorCallback(err);
 			};
-			var watchID = deviceapis.accelerometer.watchAcceleration(success, error);
-			return watchID;
+			return deviceapis.accelerometer.watchAcceleration(success, error);
 		},
-		clearWatch: function(watchId) {
-			deviceapis.accelerometer.clearWatch(watchId);
+		clearWatch: function(watchID) {
+			deviceapis.accelerometer.clearWatch(watchID);
 		}
 };
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cordova-bada-wac/blob/628e8ea6/Res/js/compass.js
----------------------------------------------------------------------
diff --git a/Res/js/compass.js b/Res/js/compass.js
index 2bac4cc..599f01d 100644
--- a/Res/js/compass.js
+++ b/Res/js/compass.js
@@ -1,34 +1,53 @@
-function CompassHeading(magneticHeading, trueHeading, headingAccuracy, timestamp) {
+function CompassHeading(magneticHeading, trueHeading, headingAccuracy) {
 	this.magneticHeading = magneticHeading;
 	this.trueHeading = trueHeading;
 	this.headingAccuracy = headingAccuracy;
-	this.timestamp = timestamp;
+	this.timestamp = new Date();
 }
 
 navigator.compass = {
 		getCurrentHeading: function(compassSuccess, compassError, compassOptions) {
+			if(deviceapis.orientation == undefined) { 
+				console.log("navigator.compass.getCurrentHeading", "Operation not supported!")
+				return -1;
+			}
 			var success = function(orientation) {
-				var compassHeading = new CompassHeading(orientation.alpha);
+				var compassHeading = new CompassHeading(orientation.alpha, orientation.alpha, 0);
+				compassSuccess(compassHeading);
 			};
-			var error = function(orientation) {
-				
+			var error = function(error) {
+				compassError(error);
 			};
-			if(deviceapis.orientation) {
-				deviceapis.orientation.getCurrentOrientation(success);
-			} else {
-				console.log("navigator.compass.getCurrentHeading", "Orientation not supported!");
-			}
+			deviceapis.orientation.getCurrentOrientation(success, error);
 		},
-		watchHeading: function() {
+		watchHeading: function(compassSuccess, compassError, compassOptions) {
+			if(deviceapis.orientation == undefined) { 
+				console.log("navigator.compass.watchHeading", "Operation not supported!")
+				return -1; 
+			}
+			var success = function(orientation) {
+				var compassHeading = new CompassHeading(orientation.alpha, orientation.alpha, 0);
+				compassSuccess(compassHeading);
+			};
+			var error = function(error) {
+				compassError(error);
+			};
+			var orientationOptions = null;
 			
+			if (compassOptions != undefined) {
+				orientationOptions = {
+						minNotificationInterval: compassOptions.frequency || 100
+				};
+			}
+			return deviceapis.orientation.watchOrientation(success, error, orientationOptions);
 		},
-		clearWatch : function() {
-			
+		clearWatch : function(watchID) {
+			deviceapis.orientation.clearWatch(watchID);
 		},
 		watchHeadingFilter: function() {
-			
+			console.log("navigator.compass.watchHeadingFilter", "Operation not supported!");
 		},
 		clearWatchFilter: function() {
-			
+			console.log("navigator.compass.clearWatchFilter", "Operation not supported!");
 		}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cordova-bada-wac/blob/628e8ea6/Res/js/sample.js
----------------------------------------------------------------------
diff --git a/Res/js/sample.js b/Res/js/sample.js
index 639b3af..f8774dc 100644
--- a/Res/js/sample.js
+++ b/Res/js/sample.js
@@ -104,4 +104,65 @@ function clearPositionWatch() {
 		document.getElementById("geolocation").innerHTML = "";
 		console.log("clearPositionWatch");
 	}
+}
+
+/*
+ * Compass
+ */
+
+var compassWatchID = null;
+
+function getCurrentHeading() {
+	var successCallback = function(heading) {
+		var headingEm = document.getElementById("heading");
+		headingEm.innerHTML = "magnetic Heading: "+ heading.magneticHeading + 
+		                      " true Heading: " + heading.trueHeading +
+		                      " heading accuracy: " + heading.headingAccuracy +
+		                      " heading timestamp " + heading.timestamp;
+	};
+	
+	var errorCallback = function(error) {
+		console.log(error);
+		var headingEm = document.getElementById("heading");
+		headingEm.innerHTML = "ERROR";
+	};
+	navigator.compass.getCurrentHeading(successCallback, errorCallback);
+}
+
+function toggleCompass() {
+	var geoBtn = document.getElementById("compassBtn");
+	if(geoBtn.innerHTML == "watchHeading") {
+		watchHeading();
+		compassBtn.innerHTML = "clearWatch";
+	} else {
+		clearHeadingWatch();
+		compassBtn.innerHTML = "watchHeading";
+	}
+}
+
+function watchHeading() {
+	var successCallback = function(heading) {
+		console.log("watchHeading::successCallback");
+		var headingEm = document.getElementById("heading");
+		headingEm.innerHTML = "magnetic Heading: "+ heading.magneticHeading + 
+		" true Heading: " + heading.trueHeading +
+		" heading accuracy: " + heading.headingAccuracy +
+		" heading timestamp " + heading.timestamp;
+	};
+	
+	var errorCallback = function(error) {
+		console.log(error);
+		var headingEm = document.getElementById("heading");
+		headingEm.innerHTML = "ERROR";
+	};
+	compassWatchID = navigator.compass.watchHeading(successCallback, errorCallback);
+	console.log("watchHeading "+compassWatchID);
+}
+function clearHeadingWatch() {
+	if(compassWatchID != null) {
+		navigator.compass.clearWatch(compassWatchID);
+		compassWatchID = null;
+		document.getElementById("heading").innerHTML = "";
+		console.log("clearHeadingWatch");
+	}
 }
\ No newline at end of file