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
- 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.
- 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.
- 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:
- Clase SensorManager: El administrador de sensores se utiliza para acceder a varios sensores presentes en el dispositivo.
- 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.
- Clase SensorEvent: esta clase se utiliza para encontrar información sobre el sensor.
- 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