code: function(func) {
              this._deviceMotionCallback = func;
              if (Crafty.support.devicemotion) {
                  if (window.DeviceMotionEvent) {
                      // Listen for the devicemotion event and handle DeviceMotionEvent object
                      Crafty.addEvent(
                          this,
                          window,
                          "devicemotion",
                          this._normalizeDeviceMotion
                      );
                  }
              }
          }
docs: @
  #Crafty.device.deviceMotion
  @comp Crafty.device
  @kind Method
  
  @sign public Crafty.device.deviceMotion(Function callback)
  @param callback - Callback method executed once as soon as device motion is change
  
  Do something with normalized device motion data:
  ~~~
  {
  acceleration : 'Grab the acceleration including gravity from the results',
  rawAcceleration : 'Display the raw acceleration data',
  facingUp : 'Z is the acceleration in the Z axis, and if the device is facing up or down',
  tiltLR : 'Convert the value from acceleration to degrees. acceleration.x is the acceleration according to gravity, we'll assume we're on Earth and divide by 9.81 (earth gravity) to get a percentage value, and then multiply that by 90 to convert to degrees.',
  tiltFB : 'Convert the value from acceleration to degrees.'
  }
  ~~~
  
  @example
  ~~~
  // Get DeviceMotion event normalized data.
  Crafty.device.deviceMotion(function(data){
  Crafty.log('data.moAccel : '+data.rawAcceleration+', data.moCalcTiltLR : '+Math.round(data.tiltLR)+', data.moCalcTiltFB : '+Math.round(data.tiltFB)+'');
  });
  ~~~
  
  See browser support at http://caniuse.com/#search=motion.