Guia Rapida Sensores Android Java

En esta guia sobre sensores en adroid vamos a ver como obtener los dato de los diferentes sensores de los dispositivos android por ejemplo acelerometro y bateria.

Leer Valores del Acelerometro

El acelerometro es un sensor que permite conocer la posición X,Y,Z en que tenemos un dispositivo, esta posición sirve para aplicaciones y juegos.

La posición X,Y,Z equivale a una coordenada en 3d debido a que el dispositivo/celular/tablet lo podemos tener en cualquier posición.

Bueno vamos a leer los valores del acelerometro usando código en java y android studio.

Código

Parte 1

Lo primero seria importar las librerías necesarias.

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

Al definir la clase principal es importante implementar la clase SensorEventListener.

public class MainActivity extends AppCompatActivity implements SensorEventListener

Ahora vamos a obtener el servicio del sensor, del servicio de sensores seleccionaremos el tipo acelerometro TYPE_ACCELEROMETER y después vamos a registrar el Listener.

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

Al registrar el listener, el primer parámetro es la clase SensorEventListener, la clase que tenemos actualmente implementa esta clase, por ello usamos this.

Adicional agregamos un par de métodos como parte de SensorEventListener: onSensorChanged y onAccuracyChanged.

En este ejemplo solo usaremos onSensorChanged, que se ocupa de actualizar los valores del sensor.

    public void onSensorChanged(SensorEvent event) {
        Sensor mySensor = event.sensor;

        if (event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
            if (mySensor.getType() == Sensor.TYPE_ACCELEROMETER) {
                float x = event.values[0];
                float y = event.values[1];
                float z = event.values[2];
                textview1 = findViewById(R.id.textview1);
                textview1.setText("X: " + x + " - Y: "+ y +" - Z:"+z );
            }
        }
    }

Ahora obtenemos el sensor, verificamos que el sensor sea el acelerometro, después obtenemos los valores:

  • Eje X: event.values[0]
  • Eje Y: event.values[1]
  • Eje Z: event.values[2]

Al actualizar los datos, los mostramos en un TextView en la vista de la aplicación.

Obtener Nivel de Bateria

Para obtener el nivel de batería vamos a usar las clases IntentFilter, Intent y BateryManager.

El nivel de batería lo calcularemos dividiendo (level / scale) y después lo multiplicaremos por 100 para obtener el porcentaje.

TextView tv ;
tv = (TextView)findViewById(R.id.hola);

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = registerReceiver(null, ifilter);

int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);

float battery = (level / (float)scale)*100;

tv.setText("Nivel de bateria: " + battery + "%");

En el código también usamos un TextView para mostrar el texto “Nivel de bateria: XX%”

Debemos notar que para obtener el nivel de batería no es necesario ningún permiso adicional.

Resultado

Este es el resultado al ejecutar la aplicación.

Si requieren el APK me lo solicitan para enviárselos.

Leave a Comment

Your email address will not be published. Required fields are marked *