Angulo de inclinación en el Eje Z

  • Respuestas:0
Edgar Martinez
  • Posts del Foro: 8

6 jun. 2019 23:08:58 vía Web

Buenos días. Les quiero compartir un poco de código de como obtener el grado de inclinación de su android. Las pruebas las hice en un emulador en el cual el primer parámetro del valor del sensor acelerometro es el eje "Z". En muchas páginas manejan que el eje "Z" estaría en el tercer valor.

public class MainActivity extends AppCompatActivity implements SensorEventListener {
...
La clase donde vamos a usar el acelerometro, debe implementar SensorEventListener, lo cual nos solicitará que se implementen los métodos :
- @Override
public void onSensorChanged(SensorEvent sensorEvent) {
..
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
...

En el método onCreate del Avtivity, deberás solicitar el acceso a los sensores y especificar al sensor acelerometro:

   SensorManager sensorManager=(SensorManager) 

getSystemService(Context.SENSOR_SERVICE);
Sensor accelerometro = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(this, accelerometro, SensorManager.SENSOR_DELAY_NORMAL);

En el evento onSensorChanged, obtener el vector de valores de los ejes X, Y y Z:

    float[] g = new float[3];
    g = sensorEvent.values.clone();

Por último, obtenemos la inclinación del eje "Z": (insisto, mi emulador recoge Z en la posicion 0)
int inclinacion = (int) Math.round(Math.toDegrees(Math.acos(g[0])));

A partir de aquí, es a consideración del programador lo que va a realizar con el resultado.
String string = "Movimiento en Z:" + inclinación;
Log.d("Valores", string);

Espero que a alguien le sirva. En lo personal estoy desarrollando una aplicación en el cual estoy programando mi propio "Gauge" para mover una linea en una serie de 3 arcos consecutivos, similar a la de un sensor de temperatura de los autos (gráficamente).

Agradezco su atención.

Contesta el/la primero/a