Compartir a través de


Sensors

Los sensores permiten a la aplicación conocer la relación entre un dispositivo y el mundo físico que lo rodea. Los sensores pueden indicar a la aplicación la dirección, la orientación y el movimiento del dispositivo. Estos sensores pueden ayudar a que el juego, la aplicación de realidad aumentada o la aplicación de utilidad sean más útiles e interactivas proporcionando una forma única de entrada, como el uso del movimiento del dispositivo para organizar los personajes en la pantalla o simular estar en una cabina y usar el dispositivo como volante.

Como regla general, decida desde el principio si la aplicación dependerá exclusivamente de los sensores o si los sensores solo ofrecerán un mecanismo de control adicional. Por ejemplo, un juego de conducción que usa un dispositivo como volante virtual podría controlarse alternativamente a través de una GUI en pantalla: de esta manera, la aplicación funciona independientemente de los sensores disponibles en el sistema. Por otro lado, un laberinto de inclinación de mármol podría codificarse para que solo funcione en sistemas que tengan los sensores adecuados. Debe elegir estratégicamente si debe confiar plenamente en los sensores. Tenga en cuenta que un esquema de control táctil/mouse intercambia la inmersión para un mayor control.

Tema Descripción
Calibrar sensores Los sensores de un dispositivo basado en el magnetómetro (la brújula, el inclinómetro y el sensor de orientación) pueden necesitar calibración debido a factores ambientales. La enumeración MagnetometerAccuracy puede ayudar a determinar un curso de acción cuando el dispositivo necesita calibración.
Orientación del sensor Los datos del sensor de las clases OrientationSensor se definen mediante sus ejes de referencia. Estos ejes se definen mediante la orientación horizontal del dispositivo y giran con el dispositivo a medida que el usuario lo convierte.
Usar el acelerómetro Aprenda a usar el acelerómetro para responder al movimiento del usuario.
Usar la brújula Aprenda a usar la brújula para determinar el encabezado actual.
Usar el girómetro Aprenda a usar el girómetro para detectar cambios en el movimiento del usuario.
Usar el inclinómetro Aprenda a usar el inclinómetro para determinar el tono, el rollo y el giro.
Uso del sensor de luz Aprenda a usar el sensor de luz ambiente para detectar cambios en la iluminación.
Uso del sensor de orientación Obtenga información sobre cómo usar los sensores de orientación para determinar la orientación del dispositivo.

Procesamiento por lotes de sensores

Algunos sensores admiten el concepto de procesamiento por lotes. Esto variará en función del sensor individual disponible. Cuando un sensor implementa el procesamiento por lotes, recopila varios puntos de datos durante un intervalo de tiempo especificado y, a continuación, transfiere todos esos datos a la vez. Esto es diferente del comportamiento normal en el que un sensor notifica sus hallazgos tan pronto como realiza una lectura. Tenga en cuenta el siguiente diagrama que muestra cómo se recopilan los datos y luego se entregan, primero con entrega normal y, a continuación, con entrega por lotes.

Recopilación por lotes del sensor

La principal ventaja para el procesamiento por lotes de sensores es prolongar la duración de la batería. Cuando los datos no se envían inmediatamente, que se guarda en la potencia del procesador e impide que los datos deban procesarse inmediatamente. Las partes del sistema pueden dormir hasta que sean necesarias, lo que genera un ahorro de energía significativo.

Puede influir en la frecuencia con la que el sensor envía lotes ajustando la latencia. Por ejemplo, el sensor Accelerometer tiene la propiedad ReportLatency. Cuando se establece esta propiedad para una aplicación, el sensor enviará datos después de la cantidad de tiempo especificada. Puede controlar la cantidad de datos que se acumulan en una latencia determinada estableciendo la propiedad ReportInterval.

Hay un par de advertencias que se deben tener en cuenta con respecto a establecer la latencia. La primera advertencia es que cada sensor tiene un MaxBatchSize que puede admitir en función del propio sensor. Este es el número de eventos que el sensor puede almacenar en caché antes de que se obligue a enviarlos. Si multiplica MaxBatchSize por ReportInterval, determina el valor máximo de ReportLatency. Si especifica un valor mayor que este, se usará la latencia máxima para que no pierda datos. Además, varias aplicaciones pueden establecer una latencia deseada. Para satisfacer las necesidades de todas las aplicaciones, se usará el período de latencia más corto. Debido a estos hechos, es posible que la latencia establecida en la aplicación no coincida con la latencia observada.

Si un sensor usa informes por lotes, la llamada a GetCurrentReading borrará el lote actual de datos e iniciará un nuevo período de latencia.

Acelerómetro

El sensor acelerómetro mide los valores de fuerza G a lo largo de los ejes X, Y y Z del dispositivo y es ideal para aplicaciones sencillas basadas en movimiento. Tenga en cuenta que los valores de fuerza G incluyen la aceleración debido a la gravedad. Si el dispositivo tiene la SimpleOrientation de FaceUp en una tabla, el acelerómetro leería -1 G en el eje Z. Por lo tanto, los acelerómetros no miden necesariamente solo la aceleración de coordenadas: la tasa de cambio de velocidad. Al usar un acelerómetro, asegúrese de diferenciar entre el vector vectorial de gravedad y el vector de aceleración lineal del movimiento. Tenga en cuenta que el vector vectorial debe normalizarse a 1 para un dispositivo estacionario.

Los diagramas siguientes muestran:

  • V1 = Vector 1 = Fuerza debido a la gravedad
  • V2 = Vector 2 = -Z eje del chasis del dispositivo (señala fuera de la pantalla)
  • Θi = ángulo de inclinación (inclinación) = ángulo entre el eje Z del chasis del dispositivo y el vector de gravedad

AcelerómetroMedición del acelerómetro

Las aplicaciones que pueden usar el sensor acelerómetro incluyen un juego en el que una canica en la pantalla se gira en la dirección en la que inclina el dispositivo (vector vectorial). Este tipo de funcionalidad refleja estrechamente el del Inclinometer y también se puede hacer con ese sensor mediante una combinación de tono y rollo. El uso del vector de gravedad del acelerómetro simplifica esto un poco proporcionando un vector fácilmente manipulado matemáticamente para la inclinación del dispositivo. Otro ejemplo sería una aplicación que hace que el sonido descifrado de un látigo cuando el usuario parpadee el dispositivo a través del aire (vector de aceleración lineal).

Para obtener una implementación de ejemplo, consulte el ejemplo de acelerómetro.

Sensor de actividad

El sensor de actividad determina el estado actual del dispositivo conectado al sensor. Este sensor se usa con frecuencia en aplicaciones de fitness para realizar un seguimiento de cuándo un usuario que lleva un dispositivo está en funcionamiento o caminando. Consulte ActivityType para obtener una lista de las posibles actividades que puede detectar esta API de sensor.

Para obtener un ejemplo de implementación, consulte el ejemplo del sensor de actividad.

Altímetro

El sensor Altimeter devuelve un valor que indica la altitud del sensor. Esto le permite realizar un seguimiento de un cambio en la altitud en términos de metros del nivel del mar. Un ejemplo de una aplicación que podría usar esto sería una aplicación en ejecución que realiza un seguimiento de los cambios de elevación durante una ejecución para calcular las calorías quemadas. En este caso, estos datos del sensor se podrían combinar con el sensor de actividad para proporcionar información de seguimiento más precisa.

Para obtener una implementación de ejemplo, consulte el ejemplo de temporizador.

Barometer

El sensor Barometer permite a una aplicación obtener lecturas barométricas. Una aplicación meteorológica podría usar esta información para proporcionar la presión atmosférica actual. Esto podría usarse para proporcionar información más detallada y predecir posibles cambios meteorológicos.

Para ver una implementación de ejemplo, consulte el ejemplo de barómetro.

Compass

El sensor Compass devuelve un encabezado 2D con respecto al norte magnético basado en el plano horizontal de la tierra. El sensor de brújula no debe usarse para determinar la orientación específica del dispositivo ni para representar nada en el espacio 3D. Las características geográficas pueden causar declinación natural en el encabezado, por lo que algunos sistemas admiten HeadingMagneticNorth y HeadingTrueNorth. Piense en cuál prefiere la aplicación, pero recuerde que no todos los sistemas notificarán un valor norte verdadero. Los sensores girómetro y magnetómetro (un dispositivo que mide la magnitud de la fuerza magnética) combinan sus datos para producir el encabezado de brújula, que tiene el efecto neto de estabilizar los datos (la fuerza del campo magnético es muy inestable debido a los componentes del sistema eléctrico).

Lecturas de brújula en relación con el polo norte magnético

Las aplicaciones que quieran mostrar una rosa de brújula o navegar por un mapa normalmente usarían el sensor de brújula.

Para obtener un ejemplo de implementación, consulte el ejemplo de brújula.

Gyrometer

El sensor Gyrometer mide las velocidades angulares a lo largo de los ejes X, Y y Z. Son muy útiles en aplicaciones sencillas basadas en movimiento que no se preocupan por la orientación del dispositivo, sino que se preocupan por el dispositivo girando a diferentes velocidades. Los girómetros pueden sufrir ruido en los datos o un sesgo constante a lo largo de uno o varios de los ejes. Debes consultar el acelerómetro para comprobar si el dispositivo se está moviendo para determinar si el girómetro sufre un sesgo y, a continuación, compensar en consecuencia en la aplicación.

Girómetro con inclinación, rollo y guiñada

Un ejemplo de una aplicación que podría usar el sensor del girómetro es un juego que gira una rueda de ruleta basada en una rotación rápida del dispositivo.

Para obtener una implementación de ejemplo, consulte el ejemplo de girómetro.

Inclinometer

El sensor Inclinometer especifica los valores de rotación, inclinación y rotación de un dispositivo y funciona mejor con las aplicaciones que se preocupan por cómo se encuentra el dispositivo en el espacio. La rotación y la rotación se derivan tomando el vector de gravedad del acelerómetro e integrando los datos del girómetro. Yaw se establece a partir de los datos del magnetómetro y el girómetro (similar al encabezado de brújula). Los inclinómetros ofrecen datos de orientación avanzados de una manera fácil de entender y digerible. Use inclinómetros cuando necesite orientación del dispositivo, pero no necesite manipular los datos del sensor.

Inclinómetro con datos de inclinación, rotación y giro

Las aplicaciones que cambian su vista para que coincidan con la orientación del dispositivo pueden usar el sensor de inclinómetro. Además, una aplicación que muestra un avión que coincide con el giro, el tono y el rollo del dispositivo también usarían las lecturas del inclinómetro.

Para obtener una implementación de ejemplo, vea el ejemplo de inclinómetro https://github.com/Microsoft/Windows-universal-samples/tree/main/Samples/Inclinometer.

Sensor de luz

El sensor light es capaz de determinar la luz ambiental que rodea el sensor. Esto permite a una aplicación determinar cuándo ha cambiado la configuración de luz que rodea a un dispositivo. Por ejemplo, un usuario con un dispositivo de pizarra podría caminar de interior a exterior en un día soleado. Una aplicación inteligente podría usar este valor para aumentar el contraste entre el fondo y la fuente que se representa. Eso haría que el contenido todavía se pueda leer en la configuración exterior más brillante.

Para obtener un ejemplo de implementación, consulte la muestra del sensor de luz.

Sensor de orientación

La orientación del dispositivo se expresa a través de cuaternión y una matriz de rotación. OrientationSensor ofrece un alto grado de precisión para determinar cómo se encuentra el dispositivo en el espacio con respecto al encabezado absoluto. Los datos orientationSensor se derivan del acelerómetro, el girómetro y el magnetómetro. Por lo tanto, tanto el inclinómetro como los sensores de brújula se pueden derivar de los valores de cuaternión. Los cuaterniones y las matrices de rotación se prestan bien a la manipulación matemática avanzada y a menudo se usan en la programación gráfica. Las aplicaciones que usan manipulación compleja deben favorecer el sensor de orientación, ya que muchas transformaciones se basan en cuaterniones y matrices de rotación.

Datos del sensor de orientación

El sensor de orientación se usa a menudo en aplicaciones avanzadas de realidad aumentada que pintan una superposición en su entorno en función de la dirección en la que apunta la parte posterior del dispositivo.

Para obtener una implementación de ejemplo, consulte el ejemplo del sensor de orientación.

Podómetro

El sensor Pedometer realiza un seguimiento del número de pasos realizados por el usuario que lleva el dispositivo conectado. El sensor está configurado para realizar un seguimiento del número de pasos durante un período de tiempo determinado. Varias aplicaciones de fitness como realizar un seguimiento del número de pasos realizados para ayudar al usuario a establecer y alcanzar diversos objetivos. Esta información se puede recopilar y almacenar para mostrar el progreso a lo largo del tiempo.

Para ver un ejemplo de implemenation, consulte la muestra de pedómetro.

Sensor de proximidad

El sensor de proximidad se puede usar para indicar si el sensor detecta o no objetos. Además de determinar si un objeto está dentro del intervalo del dispositivo, el sensor de proximidad también puede determinar la distancia al objeto detectado. Un ejemplo en el que podría usarse es con una aplicación que quiere surgir de un estado de suspensión cuando un usuario entra dentro de un intervalo especificado. El dispositivo podría estar en un estado de suspensión de baja potencia hasta que el sensor de proximidad detecte un objeto y, a continuación, podría entrar en un estado más activo.

Para obtener un ejemplo de implementación, consulte el ejemplo de sensor de proximidad.

Orientación simple

El Elemento SimpleOrientationSensor detecta la orientación cuadrante actual del dispositivo especificado o su cara hacia arriba o hacia abajo. Tiene seis posibles estados SimpleOrientation (NotRotated, Rotated90, Rotated180, Rotated270, FaceUp, FaceDown).

Una aplicación de lector que cambia su pantalla en función del dispositivo que se mantiene en paralelo o perpendicular al suelo usaría los valores de SimpleOrientationSensor para determinar cómo se mantiene el dispositivo.

Para obtener una implementación de ejemplo, consulte el ejemplo de sensor de orientación simple.