An extremely good resource for being able to interface with device hardware. So many applications for this. Using a device orientation can help in developing games or utilities. Applications that…
Accessing device orientation in HTML5
An extremely good resource for being able to interface with device hardware. So many applications for this.
Using a device orientation can help in developing games or utilities. Applications that access hardware can add functionality to applications. In the near future, applications will be expected to control hardware like cameras, accelerometers, keyboards, etc.
Check for device support
if (window.DeviceOrientationEvent) { console.log("DeviceOrientation is supported"); } else if (window.OrientationEvent) { console.log("MozOrientation is supported"); }
Display the orientation data and then apply that information as a CSS3 transform to an image.
Device Orientation
Event Supported Tilt Left/Right [tiltLR] Tilt Front/Back [tiltFB] Direction [direction] Motion Up/Down
Add the event listeners
if (window.DeviceOrientationEvent) { // Listen for the deviceorientation event and handle DeviceOrientationEvent object window.addEventListener('deviceorientation', devOrientHandler, false); } else if (window.OrientationEvent) { // Listen for the MozOrientation event and handle OrientationData object window.addEventListener('MozOrientation', mozDevOrientHandler, false); }
Confirm the data structure (normalization)
The HTML5 DeviceOrientation event returns three pieces of data:
alpha : the direction the device is facing according to the compass
beta : the angle in degrees the device is tilted front-to-back
gamma : the angle in degrees the device is tilted left-to-right.
The angle values increase as you tilt the device to the right or towards you.
if (window.DeviceOrientationEvent) { document.getElementById("doEvent").innerHTML = "DeviceOrientation"; // Listen for the deviceorientation event and handle the raw data window.addEventListener('deviceorientation', function(eventData) { // gamma is the left-to-right tilt in degrees, where right is positive var tiltLR = eventData.gamma; // beta is the front-to-back tilt in degrees, where front is positive var tiltFB = eventData.beta; // alpha is the compass direction the device is facing in degrees var dir = eventData.alpha // deviceorientation does not provide this data var motUD = null; // call our orientation event handler deviceOrientationHandler(tiltLR, tiltFB, dir, motUD); }, false); } else if (window.OrientationEvent) { document.getElementById("doEvent").innerHTML = "MozOrientation"; window.addEventListener('MozOrientation', function(eventData) { // x is the left-to-right tilt from -1 to +1, so we need to convert to degrees var tiltLR = eventData.x * 90; // y is the front-to-back tilt from -1 to +1, so we need to convert to degrees // We also need to invert the value so tilting the device towards us (forward) // results in a positive value. var tiltFB = eventData.y * -90; // MozOrientation does not provide this data var dir = null; // z is the vertical acceleration of the device var motUD = eventData.z; // call our orientation event handler deviceOrientationHandler(tiltLR, tiltFB, dir, motUD); }, false); } else { document.getElementById("doEvent").innerHTML = "Not supported on your device or browser." }
Create event handler and display it in the table from above.
document.getElementById("doTiltLR").innerHTML = Math.round(tiltLR); document.getElementById("doTiltFB").innerHTML = Math.round(tiltFB); document.getElementById("doDirection").innerHTML = Math.round(dir); document.getElementById("doMotionUD").innerHTML = motionUD; // Apply the transform to the image document.getElementById("imgLogo").style.webkitTransform = "rotate(" + tiltLR + "deg) rotate3d(1,0,0, " + (tiltFB * -1) + "deg)"; document.getElementById("imgLogo").style.MozTransform = "rotate(" + tiltLR + "deg)"; document.getElementById("imgLogo").style.transform = "rotate(" + tiltLR + "deg) rotate3d(1,0,0, " + (tiltFB * -1) + "deg)";