Android Gyroscope versículo Acelerómetro

Estoy construyendo un juego para Android y quiero averiguar si el usuario inclina el dispositivo a la izquierda oa la derecha (Similar a cómo funciona Temple Run cuando se mueve al hombre de lado a lado).

He leído muchos tutoriales y ejemplos y he hecho aplicaciones de muestra, pero la cantidad de datos que recibo de ambos el giroscopio y el acelerómetro son abrumadoras. ¿Necesitaría ambos conjuntos de hardware para averiguar si el usuario inclina el dispositivo y en qué dirección?

Mi aplicación actual es detectar cada movimiento leve y que obviamente no es correcto.

public class Main extends Activity { private SensorManager mSensorManager; private float mAccel; // acceleration apart from gravity private float mAccelCurrent; // current acceleration including gravity private float mAccelLast; // last acceleration including gravity private RelativeLayout background; private Boolean isleft = true; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.background = (RelativeLayout) findViewById(R.id.RelativeLayout1); mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); mAccel = 0.00f; mAccelCurrent = SensorManager.GRAVITY_EARTH; mAccelLast = SensorManager.GRAVITY_EARTH; /* float x1, x2, y1, y2; String direction; switch(event.getAction()) { case(MotionEvent.ACTION_DOWN): x1 = event.getX(); y1 = event.getY(); break; case(MotionEvent.ACTION_UP) { x2 = event.getX(); y2 = event.getY(); float dx = x2-x1; float dy = y2-y1; // Use dx and dy to determine the direction if(Math.abs(dx) > Math.abs(dy)) { if(dx>0) directiion = "right"; else direction = "left"; } else { if(dy>0) direction = "down"; else direction = "up"; } } }*/ } private final SensorEventListener mSensorListener = new SensorEventListener() { public void onSensorChanged(SensorEvent se) { float x = se.values[0]; float y = se.values[1]; float z = se.values[2]; if((mAccelLast<mAccelCurrent)&&(isleft == true)){ background.setBackgroundResource(R.drawable.bg_right); isleft = false; } if((mAccelLast>mAccelCurrent)&&(isleft == false)){ background.setBackgroundResource(R.drawable.bg_left); isleft = true; } mAccelLast = mAccelCurrent; mAccelCurrent = (float) Math.sqrt((double) (x*x + y*y + z*z)); float delta = mAccelCurrent - mAccelLast; Log.d("FB", "delta : "+delta); mAccel = mAccel * 0.9f + delta; // perform low-cut filter // Log.d("FB", "mAccel : "+mAccel); } 

¿Sería mejor usar el acelerómetro, sólo el giroscopio o necesitaría ambos?

Este post enlaza con las diferencias entre los dos: Android acelerómetro y giroscopio

http://diydrones.com/profiles/blogs/faq-whats-the-difference

http://answers.oreilly.com/topic/1751-mobile-accelerometers-and-gyroscopes-explained/

La documentación también ayudará: http://developer.android.com/guide/topics/sensors/sensors_motion.html

De mi experiencia MUY limitada, el girocompás mide constantemente la rotación x, y, z y se mantiene actualizando. Útil para dirigir un coche / avión / personaje en un juego. El acelerómetro es un poco más parecido a un wii-mote, para moverse o agitar un gesto.

De mi experiencia con el acelerómetro usando el método de la gravedad, usted puede utilizarlo para la rotación de x, y y z. Sólo tienes que escribir en google "acelerómetro de método vectorial". He utilizado este método con una brújula para corregir las coordenadas debido a la inclinación.

  • Valor de Android: Sensor.getResolution ()
  • Dibujo en el aire con el teléfono Android
  • Cuándo usar acelerómetro o giroscopio en Android
  • Ejemplos de giroscopios Android?
  • Combine giroscopio con acelerómetro para obtener el rumbo
  • Sensor de movimiento vertical
  • Sistema de Posicionamiento Interior basado en Giroscopio y Acelerómetro
  • Problemas relacionados con el giroscopio con la orientación del dispositivo
  • Android detecta giroscopio disponible
  • Gyro Sensor drift y Estimación de ángulo correcto
  • Manera correcta de usar SOLO Giroscopio y Acelerómetro para obtener el ángulo de corriente fiable en cualquier eje de ANDROID
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.