Sensores de Android con ejemplo

En nuestra infancia, todos hemos jugado muchos juegos de Android como Moto Racing y Temple Run en los que al inclinar el teléfono cambia la posición del personaje. Entonces, todo esto sucede debido a los sensores presentes en su dispositivo Android. La mayoría de los dispositivos con Android tienen sensores integrados que miden el movimiento, la orientación y diversas condiciones ambientales. Los sensores de Android se pueden usar para monitorear el movimiento tridimensional del dispositivo o el cambio en el entorno del dispositivo, como la luz, la proximidad, la rotación, los movimientos, los campos magnéticos y mucho más.

Tipos de sensores

  1. Sensores de movimiento: estos sensores miden las fuerzas de aceleración y las fuerzas de rotación a lo largo de tres ejes. Esta categoría incluye acelerómetros, sensores de gravedad, giroscopios y sensores de vectores rotacionales.
  2. Sensores de posición: estos sensores miden la posición física de un dispositivo. Esta categoría incluye sensores de orientación y magnetómetros.
  3. Sensores ambientales: estos sensores miden varios parámetros ambientales, como la temperatura y la presión del aire ambiental, la iluminación y la humedad. Esta categoría incluye barómetros, fotómetros y termómetros.

API de sensores de Android

Podemos recopilar datos de sensores sin procesar mediante el uso de Android Sensor API. La API del sensor de Android proporciona muchas clases e interfaces. Algunas de las clases e interfaces importantes son:

  1. Clase SensorManager: El administrador de sensores se utiliza para acceder a varios sensores presentes en el dispositivo.
  2. Clase de sensor: la clase de sensor se utiliza para obtener información sobre el sensor, como el nombre del sensor, el tipo de sensor, la resolución del sensor, el tipo de sensor, etc.
  3. Clase SensorEvent: esta clase se utiliza para encontrar información sobre el sensor.
  4. Interfaz SensorEventListener: se utiliza para realizar alguna acción cuando cambia la precisión del sensor.

Ejemplo: aplicación de sensor de luz

Esta aplicación nos mostrará la intensidad de la luz en nuestra habitación con la ayuda de un sensor de luz presente en nuestro teléfono.

Implementación paso a paso 

Paso 1: crea un nuevo proyecto en tu estudio de Android

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.

Paso 2: trabajar con el archivo XML

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. 

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
      <!-- Textview to show light sensor reading -->
    <TextView
        android:id="@+id/tv_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Light Sensor"
        android:textSize="20sp"
        android:textColor="@color/black"
        android:layout_centerInParent="true" />
 
</RelativeLayout>

Paso 3: trabajar con MainActivity.kt

Vaya al archivo MainActivity.kt y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.kt . Se agregan comentarios dentro del código para comprender el código con más detalle.

Kotlin

package com.mrtechy.gfg_sensor
 
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatDelegate
 
class MainActivity : AppCompatActivity(), SensorEventListener {
 
      // Initialised sensorManager & two variables
      // for storing brightness value
    private lateinit var sensorManager: SensorManager
    private var brightness: Sensor? = null
    private lateinit var text: TextView
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
         
        // Set default nightmode
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
 
        // searched our textview id and stored it
        text = findViewById(R.id.tv_text)
 
        // setupSensor Called
        setUpSensor()
    }
 
    // Declared setupSensor function
    private fun setUpSensor() { 
      sensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
      brightness = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT)
    }
 
    // These are two methods from sensorEventListner Interface
    override fun onSensorChanged(event: SensorEvent?) {
        if (event?.sensor?.type == Sensor.TYPE_LIGHT) {
            val light1 = event.values[0]
 
            text.text = "Sensor: $light1\n${brightness(light1)}"
        }
    }
    override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {
        return
    }
     
    // Created a function to show messages according to the brightness
    private fun brightness(brightness: Float): String {
 
        return when (brightness.toInt()) {
            0 -> "Pitch black"
            in 1..10 -> "Dark"
            in 11..50 -> "Grey"
            in 51..5000 -> "Normal"
            in 5001..25000 -> "Incredibly bright"
            else -> "This light will blind you"
        }
    }
 
    // This is onResume function of our app
    override fun onResume() {
        super.onResume()
        sensorManager.registerListener(this, brightness, SensorManager.SENSOR_DELAY_NORMAL)
    }
 
    // This is onPause function of our app
    override fun onPause() {
        super.onPause()
        sensorManager.unregisterListener(this)
    }
}

Producción:

Nota: la aplicación de esos sensores de uso solo funcionará en dispositivos Android físicos, no en ningún emulador.

Publicación traducida automáticamente

Artículo escrito por iamabhijha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *