Android Open Source - droidengine2d Accelerometer Values Listener






From Project

Back to project page droidengine2d.

License

The source code is released under:

Apache License

If you think the Android project droidengine2d listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*   Copyright 2013-2014 Miguel Vicente Linares
 *//from   www .  jav a  2  s . c o m
 *  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.
 */
package com.miviclin.droidengine2d.input.sensor;

import android.app.Activity;
import android.content.res.Configuration;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;

import com.miviclin.droidengine2d.util.ActivityUtilities;

/**
 * AccelerometerValuesListener.
 * 
 * @author Miguel Vicente Linares
 * 
 */
public class AccelerometerValuesListener implements SensorEventListener {

  private volatile float lowPassFilterAttenuation;
  private volatile float[] accelerometerValues;

  private boolean useCoordinateSystemOfDisplay;
  private Activity activity;
  private int defaultOrientationOfDevice;

  /**
   * Creates an AccelerometerValuesListener that uses the default coordinate system of the device.
   * 
   * @param activity Activity.
   * @param lowPassFilterAttenuation Low pass filter attenuation value.
   */
  public AccelerometerValuesListener(Activity activity, float lowPassFilterAttenuation) {
    this.lowPassFilterAttenuation = lowPassFilterAttenuation;
    this.accelerometerValues = new float[3];
    this.useCoordinateSystemOfDisplay = false;
    this.activity = activity;
    this.defaultOrientationOfDevice = ActivityUtilities.getDefaultOrientationOfDevice(activity);
  }

  @Override
  public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
      SensorUtilities.lowPassFilter(event.values, accelerometerValues, 3, lowPassFilterAttenuation);
    }
  }

  @Override
  public void onAccuracyChanged(Sensor sensor, int accuracy) {
  }

  /**
   * After this method is called, the values returned by {@link #getX()}, {@link #getY()} and {@link #getZ()} will be
   * in the default coordinate system of the device. The coordinate system is defined relative to the screen of the
   * device when the device is held in its default orientation. When a device is held in its default orientation, the
   * X axis is horizontal and points to the right, the Y axis is vertical and points up, and the Z axis points toward
   * the outside of the screen face. In this system, coordinates behind the screen have negative Z values.
   */
  public void useDefaultCoordinateSystemOfDevice() {
    this.useCoordinateSystemOfDisplay = false;
  }

  /**
   * After this method is called, the values returned by {@link #getX()}, {@link #getY()} and {@link #getZ()} will be
   * in the current coordinate system of the display. If the current orientation is
   * {@link Configuration#ORIENTATION_PORTRAIT} and the device is held in portrait orientation, or if the current
   * orientation is {@link Configuration#ORIENTATION_LANDSCAPE} and the device is held in landscape orientation, the X
   * axis is horizontal and points to the right, the Y axis is vertical and points up, and the Z axis points toward
   * the outside of the gameState face. In this system, coordinates behind the gameState have negative Z values.
   */
  public void useCoordinateSystemOfDisplay() {
    this.useCoordinateSystemOfDisplay = true;
  }

  /**
   * Returns the X component of the vector read from the accelerometer.<br>
   * The vector will be in the current coordinate system of this AccelerometerValuesListener. Call
   * {@link #useDefaultCoordinateSystemOfDevice()} or {@link #useCoordinateSystemOfDisplay()} to set the coordinate
   * system to be used.
   * 
   * @return X
   */
  public float getX() {
    if (useCoordinateSystemOfDisplay) {
      int currentOrientationOfDisplay = activity.getResources().getConfiguration().orientation;
      if (currentOrientationOfDisplay != defaultOrientationOfDevice) {
        return -accelerometerValues[1];
      }
    }
    return accelerometerValues[0];
  }

  /**
   * Returns the Y component of the vector read from the accelerometer.<br>
   * The vector will be in the current coordinate system of this AccelerometerValuesListener. Call
   * {@link #useDefaultCoordinateSystemOfDevice()} or {@link #useCoordinateSystemOfDisplay()} to set the coordinate
   * system to be used.
   * 
   * @return Y
   */
  public float getY() {
    if (useCoordinateSystemOfDisplay) {
      int currentOrientationOfDisplay = activity.getResources().getConfiguration().orientation;
      if (currentOrientationOfDisplay != defaultOrientationOfDevice) {
        return accelerometerValues[0];
      }
    }
    return accelerometerValues[1];
  }

  /**
   * Returns the Z component of the vector read from the accelerometer.<br>
   * The vector will be in the current coordinate system of this AccelerometerValuesListener. Call
   * {@link #useDefaultCoordinateSystemOfDevice()} or {@link #useCoordinateSystemOfDisplay()} to set the coordinate
   * system to be used.
   * 
   * @return Z
   */
  public float getZ() {
    return accelerometerValues[2];
  }

  /**
   * Returns the attenuation value of the low pass filter.
   * 
   * @return the attenuation value of the low pass filter
   */
  public float getLowPassFilterAttenuation() {
    return lowPassFilterAttenuation;
  }

  /**
   * Sets the attenuation value of the low pass filter
   * 
   * @param lowPassFilterAttenuation New value.
   */
  public void setLowPassFilterAttenuation(float lowPassFilterAttenuation) {
    this.lowPassFilterAttenuation = lowPassFilterAttenuation;
  }

}




Java Source Code List

com.miviclin.droidengine2d.AbstractGame.java
com.miviclin.droidengine2d.EngineActivity.java
com.miviclin.droidengine2d.EngineLock.java
com.miviclin.droidengine2d.Engine.java
com.miviclin.droidengine2d.GameThread.java
com.miviclin.droidengine2d.Game.java
com.miviclin.droidengine2d.audio.MusicPlayer.java
com.miviclin.droidengine2d.audio.SoundManager.java
com.miviclin.droidengine2d.gamestate.GameStateAdapter.java
com.miviclin.droidengine2d.gamestate.GameStateManager.java
com.miviclin.droidengine2d.gamestate.GameStateNotRegisteredException.java
com.miviclin.droidengine2d.gamestate.GameState.java
com.miviclin.droidengine2d.gamestate.OnGameStateChangeListener.java
com.miviclin.droidengine2d.graphics.Color.java
com.miviclin.droidengine2d.graphics.DefaultRenderer.java
com.miviclin.droidengine2d.graphics.EngineRenderer.java
com.miviclin.droidengine2d.graphics.GLDebugger.java
com.miviclin.droidengine2d.graphics.GLRenderer.java
com.miviclin.droidengine2d.graphics.GLView.java
com.miviclin.droidengine2d.graphics.Graphics.java
com.miviclin.droidengine2d.graphics.animation.AnimationFrame.java
com.miviclin.droidengine2d.graphics.animation.AnimationStateAdapter.java
com.miviclin.droidengine2d.graphics.animation.AnimationStateListener.java
com.miviclin.droidengine2d.graphics.animation.Animation.java
com.miviclin.droidengine2d.graphics.cameras.Camera.java
com.miviclin.droidengine2d.graphics.cameras.OrthographicCamera.java
com.miviclin.droidengine2d.graphics.material.BlendingOptions.java
com.miviclin.droidengine2d.graphics.material.ColorMaterial.java
com.miviclin.droidengine2d.graphics.material.Material.java
com.miviclin.droidengine2d.graphics.material.TextureColorMaterial.java
com.miviclin.droidengine2d.graphics.material.TextureHsvMaterial.java
com.miviclin.droidengine2d.graphics.material.TextureMaterial.java
com.miviclin.droidengine2d.graphics.material.TransparentTextureMaterial.java
com.miviclin.droidengine2d.graphics.material.UnsupportedMaterialException.java
com.miviclin.droidengine2d.graphics.mesh.ColorMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.Geometry.java
com.miviclin.droidengine2d.graphics.mesh.GraphicsBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.RectangleBatchGeometry.java
com.miviclin.droidengine2d.graphics.mesh.RectangleBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TextureColorMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TextureHsvMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TextureMaterialBatchRendererBase.java
com.miviclin.droidengine2d.graphics.mesh.TextureMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TransparentTextureMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.shader.ShaderProgramException.java
com.miviclin.droidengine2d.graphics.shader.ShaderProgram.java
com.miviclin.droidengine2d.graphics.shader.ShaderVars.java
com.miviclin.droidengine2d.graphics.text.BitmapFont.java
com.miviclin.droidengine2d.graphics.text.FontChar.java
com.miviclin.droidengine2d.graphics.text.Font.java
com.miviclin.droidengine2d.graphics.text.UndefinedCharacterException.java
com.miviclin.droidengine2d.graphics.texture.TextureAtlas.java
com.miviclin.droidengine2d.graphics.texture.TextureManager.java
com.miviclin.droidengine2d.graphics.texture.TexturePackerAtlas.java
com.miviclin.droidengine2d.graphics.texture.TextureRegion.java
com.miviclin.droidengine2d.graphics.texture.Texture.java
com.miviclin.droidengine2d.input.DefaultKeyEventProcessor.java
com.miviclin.droidengine2d.input.GameInputManager.java
com.miviclin.droidengine2d.input.GameStateInputManager.java
com.miviclin.droidengine2d.input.KeyEventInfo.java
com.miviclin.droidengine2d.input.KeyEventProcessor.java
com.miviclin.droidengine2d.input.KeyProcessor.java
com.miviclin.droidengine2d.input.MotionEventProcessor.java
com.miviclin.droidengine2d.input.TouchProcessor.java
com.miviclin.droidengine2d.input.sensor.AccelerometerValuesListener.java
com.miviclin.droidengine2d.input.sensor.Accelerometer.java
com.miviclin.droidengine2d.input.sensor.SensorUtilities.java
com.miviclin.droidengine2d.resources.AssetsLoader.java
com.miviclin.droidengine2d.util.ActivityUtilities.java
com.miviclin.droidengine2d.util.MutexLock.java
com.miviclin.droidengine2d.util.PrimitiveTypeSize.java
com.miviclin.droidengine2d.util.TransformUtilities.java
com.miviclin.droidengine2d.util.Transform.java
com.miviclin.droidengine2d.util.math.Matrix4.java
com.miviclin.droidengine2d.util.math.MatrixFix.java
com.miviclin.droidengine2d.util.math.Vector2.java
com.miviclin.droidengine2d.util.math.Vector3.java
com.miviclin.droidengine2d.util.time.TimeConstants.java
com.miviclin.droidengine2d.util.time.TimeCounter.java