- Posts del Foro: 8
6 jun. 2019 23:08:58 vía Web
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.
Contenido editorial recomendado
Con su consentimiento, aquí se cargan contenidos externos.
Al hacer clic en el botón anterior, acepta que se le muestren contenidos externos. En el proceso pueden transmitirse datos personales a terceros proveedores. Encontrará más información al respecto en nuestro Política de privacidad.