Comparteix a través de


Acceso a sensores del dispositivo

Browse sample. Examinar el ejemplo

Los dispositivos tienen todo tipo de sensores a tu disposición. Algunos sensores pueden detectar movimiento, otros cambios en el entorno, como la luz. El seguimiento y la reacción a estos sensores hacen que la aplicación se adapte dinámicamente a cómo se usa el dispositivo. También puedes responder a los cambios en los sensores y alertar al usuario. En este artículo se proporciona una breve introducción a los sensores comunes compatibles con .NET Multi-platform App UI (.NET MAUI).

Los tipos relacionados con el sensor de dispositivo están disponibles en el espacio de nombres Microsoft.Maui.Devices.Sensors.

Velocidad del sensor

La velocidad del sensor establece la velocidad en la que un sensor devolverá datos a la aplicación. Cuando se inicia un sensor, se proporciona la velocidad deseada del sensor con la enumeración SensorSpeed:

  • Fastest
    Obtener los datos del sensor lo más rápido posible (no se garantiza la devolución en el subproceso de interfaz de usuario).

  • Game
    Velocidad adecuada para juegos (no se garantiza la devolución en el subproceso de interfaz de usuario).

  • UI
    Velocidad adecuada para la interfaz de usuario general.

  • Default
    Velocidad predeterminada adecuada para los cambios de orientación de pantalla.

Advertencia

El seguimiento de demasiados sensores a la vez puede afectar a los datos del sensor de velocidad que se devuelven a la aplicación.

En .NET 8, los intervalos SensorSpeed son idénticos en todas las plataformas:

  • Default usa un intervalo de 200 ms.
  • UI usa un intervalo de 60 ms.
  • Game usa un intervalo de 20 ms.
  • Fastest usa un intervalo de 5 ms.

Controladores de eventos del sensor

No se garantiza que los controladores de eventos agregados a los sensores con velocidades Game o Fastest se ejecuten en el subproceso de la interfaz de usuario. Si el controlador de eventos debe acceder a los elementos de la interfaz de usuario, el método MainThread.BeginInvokeOnMainThread debe ejecutar ese código en el subproceso de la interfaz de usuario.

Acelerómetro

El sensor acelerómetro informa de la aceleración del dispositivo a través de sus tres ejes. Los datos notificados por el sensor representan cómo el usuario mueve el dispositivo.

La interfaz IAccelerometer proporciona acceso al sensor y está disponible a través de la propiedad Accelerometer.Default. Tanto la interfaz IAccelerometer como la clase Accelerometer están contenidas en el espacio de nombres Microsoft.Maui.Devices.Sensors.

Introducción

Para acceder a la funcionalidad de acelerómetro, puede requerirse la siguiente configuración específica para la plataforma:

Si la aplicación tiene como destino Android 12+ (API 31+), el sistema coloca un límite de 200 Hz en la frecuencia de actualización de datos de este sensor. Si la aplicación necesita recopilar datos del sensor mediante la velocidad del sensor Fastest, debes declarar el permiso HIGH_SAMPLING_RATE_SENSORS. Puedes establecer el permiso de las maneras siguientes:

  • Agrega el permiso basado en ensamblados:

    Abre el archivo Platforms/Android/MainApplication.cs y agrega el siguiente atributo de ensamblado después using de las directivas:

    [assembly: UsesPermission(Android.Manifest.Permission.HighSamplingRateSensors)]
    

    - o -

  • Actualiza el manifiesto de Android:

    Abre el archivo Platforms/Android/AndroidManifest.xml y agrega la siguiente línea en el nodo manifest:

    <uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
    

    - o -

  • Actualiza el manifiesto de Android en el editor de manifiestos:

    En Visual Studio, haz doble clic en el archivo Platforms/Android/AndroidManifest.xml para abrir el editor de manifiestos de Android. Después, en Permisos necesarios , comprueba el permiso de HIGH_SAMPLING_RATE_SENSORS. Esto actualizará automáticamente el archivo AndroidManifest.xml.

Nota:

Si un usuario desactiva el acceso al micrófono mediante los botones de alternancia del dispositivo, los sensores de movimiento y posición siempre están limitados a la velocidad, independientemente de si declara el permiso HIGH_SAMPLING_RATE_SENSORS.

Supervisión del sensor de acelerómetro

Para empezar a supervisar el sensor de acelerómetro, llama al método IAccelerometer.Start. .NET MAUI envía los cambios de los datos del acelerómetro a la aplicación mediante la generación del evento IAccelerometer.ReadingChanged. Usa el método IAccelerometer.Stop para detener la supervisión del sensor. Puedes detectar el estado de supervisión del acelerómetro con la propiedad IAccelerometer.IsMonitoring, que será true si se inició el acelerómetro y se está supervisando actualmente.

En el ejemplo de código siguiente se muestra cómo supervisar el acelerómetro para ver los cambios:

public void ToggleAccelerometer()
{
    if (Accelerometer.Default.IsSupported)
    {
        if (!Accelerometer.Default.IsMonitoring)
        {
            // Turn on accelerometer
            Accelerometer.Default.ReadingChanged += Accelerometer_ReadingChanged;
            Accelerometer.Default.Start(SensorSpeed.UI);
        }
        else
        {
            // Turn off accelerometer
            Accelerometer.Default.Stop();
            Accelerometer.Default.ReadingChanged -= Accelerometer_ReadingChanged;
        }
    }    
}

private void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
{
    // Update UI Label with accelerometer state
    AccelLabel.TextColor = Colors.Green;
    AccelLabel.Text = $"Accel: {e.Reading}";
}

Las lecturas del acelerómetro se notifican en G. Una G es una unidad de fuerza gravitacional igual a la ejercida por el campo gravitatorio de la Tierra $(9,81 m/s^2)$.

El sistema de coordenadas se define con respecto a la pantalla del dispositivo en orientación predeterminada. Cuando cambia la orientación de pantalla del dispositivo no se intercambian los ejes.

El eje X es horizontal y apunta a la derecha, el Yes vertical y apunta hacia arriba y el Z apunta hacia el exterior de la parte frontal de la pantalla. En este sistema, las coordenadas de detrás de la pantalla tienen valores de Z negativo.

Ejemplos:

  • Cuando el dispositivo se encuentra plano sobre una mesa y se mueve desde el lado izquierdo hacia la derecha, el valor de aceleración de X es positivo.

  • Cuando el dispositivo se encuentra plano sobre una mesa, el valor de aceleración es + 1,00 G o $(+ 9,81 m/s^2)$, que corresponden a la aceleración del dispositivo $(0 m/s^2)$ menos la fuerza de la gravedad $(- 9,81 m/s^2)$ y normalizada en G.

  • Cuando el dispositivo se encuentra plano sobre una mesa y se mueve hacia el cielo con una aceleración de A m/s^2, el valor de la aceleración es igual a $A+ 9,81$, que corresponde a la aceleración del dispositivo $(+ A m/s^2)$ menos la fuerza de la gravedad $(- 9,81 m/s^2)$ y normalizada en G.

Información específica de la plataforma (acelerómetro)

No hay información específica de la plataforma relacionada con el sensor de acelerómetro.

Barometer

El sensor de barómetro mide la presión del aire ambiente. Los datos notificados por el sensor representan la presión del aire actual. Estos datos se notifican la primera vez que inicias la supervisión del sensor y, después, cada vez que cambia la presión.

La interfaz IBarometer proporciona acceso al sensor y está disponible a través de la propiedad Barometer.Default. Tanto la interfaz IBarometer como la clase Barometer están contenidas en el espacio de nombres Microsoft.Maui.Devices.Sensors.

Para empezar a supervisar el sensor de barómetro, llama al método IBarometer.Start. .NET MAUI envía lecturas de presión del aire a la aplicación mediante la generación del evento IBarometer.ReadingChanged. Usa el método IBarometer.Stop para detener la supervisión del sensor. Puedes detectar el estado de supervisión del barómetro con la propiedad IBarometer.IsMonitoring, que será true si el barómetro se está supervisando actualmente.

La lectura de presión se representa en hectopascales.

En el ejemplo de código siguiente se muestra cómo supervisar el barómetro para ver los cambios:

public void ToggleBarometer()
{
    if (Barometer.Default.IsSupported)
    {
        if (!Barometer.Default.IsMonitoring)
        {
            // Turn on barometer
            Barometer.Default.ReadingChanged += Barometer_ReadingChanged;
            Barometer.Default.Start(SensorSpeed.UI);
        }
        else
        {
            // Turn off barometer
            Barometer.Default.Stop();
            Barometer.Default.ReadingChanged -= Barometer_ReadingChanged;
        }
    }
}

private void Barometer_ReadingChanged(object sender, BarometerChangedEventArgs e)
{
    // Update UI Label with barometer state
    BarometerLabel.TextColor = Colors.Green;
    BarometerLabel.Text = $"Barometer: {e.Reading}";
}

Información específica de la plataforma (barómetro)

En esta sección se describen los detalles de implementación específicos de la plataforma relacionados con el sensor de barómetro.

Sin detalles de implementación específicos para la plataforma.

Brújula

El sensor de la brújula permite supervisar la dirección del norte magnético del dispositivo.

La interfaz ICompass proporciona acceso al sensor y está disponible a través de la propiedad Compass.Default. Tanto la interfaz ICompass como la clase Compass están contenidas en el espacio de nombres Microsoft.Maui.Devices.Sensors.

Para empezar a supervisar el sensor de brújula, llama al método ICompass.Start. .NET MAUI genera el evento ICompass.ReadingChanged cuando cambia la dirección de la brújula. Usa el método ICompass.Stop para detener la supervisión del sensor. Puedes detectar el estado de supervisión de la brújula con la propiedad ICompass.IsMonitoring, que será true si la brújula se está supervisando actualmente.

En el ejemplo de código siguiente cómo supervisar la brújula para ver si hay cambios:

private void ToggleCompass()
{
    if (Compass.Default.IsSupported)
    {
        if (!Compass.Default.IsMonitoring)
        {
            // Turn on compass
            Compass.Default.ReadingChanged += Compass_ReadingChanged;
            Compass.Default.Start(SensorSpeed.UI);
        }
        else
        {
            // Turn off compass
            Compass.Default.Stop();
            Compass.Default.ReadingChanged -= Compass_ReadingChanged;
        }
    }
}

private void Compass_ReadingChanged(object sender, CompassChangedEventArgs e)
{
    // Update UI Label with compass state
    CompassLabel.TextColor = Colors.Green;
    CompassLabel.Text = $"Compass: {e.Reading}";
}

Información específica de la plataforma (Brújula)

En esta sección se describen los detalles de implementación específicos de la plataforma relacionados con la característica de brújula.

Android no proporciona una API para recuperar el rumbo de la brújula. .NET MAUI usa los sensores del acelerómetro y el magnetómetro para calcular el rumbo de norte magnético, recomendado por Google.

En casos poco habituales, es posible que vea resultados incoherentes porque es necesario calibrar los sensores. La recalibración de la brújula en Android varía según el modelo de teléfono y la versión de Android. Deberás buscar en Internet sobre cómo volver a calibrar la brújula. Estos son dos vínculos que pueden ayudarte a recalibrar la brújula:

La ejecución simultánea de varios sensores desde la aplicación puede perjudicar la velocidad del sensor.

Filtro de paso bajo

Debido a la forma de calcular y actualizar los valores de la brújula de Android, es posible que sea necesario suavizarlos. Se puede aplicar un filtro de paso bajo que calcula el promedio de los valores de seno y coseno de los ángulos y que se puede activar si se sobrecarga el método Start, que acepta el parámetro bool applyLowPassFilter:

Compass.Default.Start(SensorSpeed.UI, applyLowPassFilter: true);

Esto solo se aplica a la plataforma Android; el parámetro se ignora en iOS y Windows. Para más información, consulte este comentario de un problema de GitHub.

Sacudir

Aunque en este artículo se menciona la agitación como un sensor, no lo es. El acelerómetro se usa para detectar cuándo se agita el dispositivo.

La interfaz IAccelerometer proporciona acceso al sensor y está disponible a través de la propiedad Accelerometer.Default. Tanto la interfaz IAccelerometer como la clase Accelerometer están contenidas en el espacio de nombres Microsoft.Maui.Devices.Sensors.

Nota:

Si la aplicación necesita recopilar datos del sensor de acelerómetro mediante la velocidad del sensor Fastest, debe declarar el permiso HIGH_SAMPLING_RATE_SENSORS. Para obtener más información, consulta Acelerómetro.

La API para la detección de agitaciones usa lecturas sin procesar del acelerómetro para calcular la aceleración. Utiliza un mecanismo de cola simple para detectar si tres cuartos de los eventos recientes del acelerómetro se han producido durante el último medio segundo. La aceleración se calcula agregando el cuadrado de las lecturas X, Y y Z ($x^2+y^2+z^2$) del acelerómetro y comparándolo con un umbral determinado.

Para empezar a supervisar el sensor de acelerómetro, llama al método IAccelerometer.Start. Cuando se detecta un agitación, se genera el evento IAccelerometer.ShakeDetected. Usa el método IAccelerometer.Stop para detener la supervisión del sensor. Puedes detectar el estado de supervisión del acelerómetro con la propiedad IAccelerometer.IsMonitoring, que será true si se inició el acelerómetro y se está supervisando actualmente.

Se recomienda usar Game o más rápido para SensorSpeed.

En el ejemplo de código siguiente se muestra cómo supervisar el acelerómetro para el evento ShakeDetected:

private void ToggleShake()
{
    if (Accelerometer.Default.IsSupported)
    {
        if (!Accelerometer.Default.IsMonitoring)
        {
            // Turn on accelerometer
            Accelerometer.Default.ShakeDetected += Accelerometer_ShakeDetected;
            Accelerometer.Default.Start(SensorSpeed.Game);
        }
        else
        {
            // Turn off accelerometer
            Accelerometer.Default.Stop();
            Accelerometer.Default.ShakeDetected -= Accelerometer_ShakeDetected;
        }
    }
}

private void Accelerometer_ShakeDetected(object sender, EventArgs e)
{
    // Update UI Label with a "shaked detected" notice, in a randomized color
    ShakeLabel.TextColor = new Color(Random.Shared.Next(256), Random.Shared.Next(256), Random.Shared.Next(256));
    ShakeLabel.Text = $"Shake detected";
}

Información específica de la plataforma (agitación)

No hay información específica de la plataforma relacionada con el sensor de acelerómetro.

Giroscopio

El sensor giroscopio mide la velocidad de rotación angular alrededor de los tres ejes principales del dispositivo.

La interfaz IGyroscope proporciona acceso al sensor y está disponible a través de la propiedad Gyroscope.Default. Tanto la interfaz IGyroscope como la clase Gyroscope están contenidas en el espacio de nombres Microsoft.Maui.Devices.Sensors.

Introducción

Para acceder a la funcionalidad de giroscopio, se requiere la siguiente configuración específica de la plataforma.

Si la aplicación tiene como destino Android 12+ (API 31+), el sistema coloca un límite de 200 Hz en la frecuencia de actualización de datos de este sensor. Si la aplicación necesita recopilar datos del sensor mediante la velocidad del sensor Fastest, debes declarar el permiso HIGH_SAMPLING_RATE_SENSORS. Puedes establecer el permiso de las maneras siguientes:

  • Agrega el permiso basado en ensamblados:

    Abre el archivo Platforms/Android/MainApplication.cs y agrega el siguiente atributo de ensamblado después using de las directivas:

    [assembly: UsesPermission(Android.Manifest.Permission.HighSamplingRateSensors)]
    

    - o -

  • Actualiza el manifiesto de Android:

    Abre el archivo Platforms/Android/AndroidManifest.xml y agrega la siguiente línea en el nodo manifest:

    <uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
    

    - o -

  • Actualiza el manifiesto de Android en el editor de manifiestos:

    En Visual Studio, haz doble clic en el archivo Platforms/Android/AndroidManifest.xml para abrir el editor de manifiestos de Android. Después, en Permisos necesarios , comprueba el permiso de HIGH_SAMPLING_RATE_SENSORS. Esto actualizará automáticamente el archivo AndroidManifest.xml.

Nota:

Si un usuario desactiva el acceso al micrófono mediante los botones de alternancia del dispositivo, los sensores de movimiento y posición siempre están limitados a la velocidad, independientemente de si declara el permiso HIGH_SAMPLING_RATE_SENSORS.

Supervisión del sensor de giroscopio

Para empezar a supervisar el sensor de giroscopio, llama al método IGyroscope.Start. .NET MAUI envía cambios de datos giroscopios a la aplicación mediante la generación del evento IGyroscope.ReadingChanged. Los datos proporcionados por este evento se miden en rad/s (radian por segundo). Usa el método IGyroscope.Stop para detener la supervisión del sensor. Puede detectar el estado de supervisión del giroscopio con la propiedad IGyroscope.IsMonitoring, que será true si se inició el giroscopio y se está supervisando actualmente.

En el ejemplo de código siguiente se muestra cómo supervisar el giroscopio:

private void ToggleGyroscope()
{
    if (Gyroscope.Default.IsSupported)
    {
        if (!Gyroscope.Default.IsMonitoring)
        {
            // Turn on gyroscope
            Gyroscope.Default.ReadingChanged += Gyroscope_ReadingChanged;
            Gyroscope.Default.Start(SensorSpeed.UI);
        }
        else
        {
            // Turn off gyroscope
            Gyroscope.Default.Stop();
            Gyroscope.Default.ReadingChanged -= Gyroscope_ReadingChanged;
        }
    }
}

private void Gyroscope_ReadingChanged(object sender, GyroscopeChangedEventArgs e)
{
    // Update UI Label with gyroscope state
    GyroscopeLabel.TextColor = Colors.Green;
    GyroscopeLabel.Text = $"Gyroscope: {e.Reading}";
}

Información específica de la plataforma (Gyroscope)

No hay información específica sobre la plataforma relacionada con el sensor de giroscopio.

Magnetometer

El sensor magnetómetro indica la orientación del dispositivo con respecto al campo magnético de la Tierra.

La interfaz IMagnetometer proporciona acceso al sensor y está disponible a través de la propiedad Magnetometer.Default. Tanto la interfaz IMagnetometer como la clase Magnetometer están contenidas en el espacio de nombres Microsoft.Maui.Devices.Sensors.

Introducción

Para acceder a la función del magnetómetro, se requiere la siguiente configuración específica para la plataforma.

Si la aplicación tiene como destino Android 12+ (API 31+), el sistema coloca un límite de 200 Hz en la frecuencia de actualización de datos de este sensor. Si la aplicación necesita recopilar datos del sensor mediante la velocidad del sensor Fastest, debes declarar el permiso HIGH_SAMPLING_RATE_SENSORS. Puedes establecer el permiso de las maneras siguientes:

  • Agrega el permiso basado en ensamblados:

    Abre el archivo Platforms/Android/MainApplication.cs y agrega el siguiente atributo de ensamblado después using de las directivas:

    [assembly: UsesPermission(Android.Manifest.Permission.HighSamplingRateSensors)]
    

    - o -

  • Actualiza el manifiesto de Android:

    Abre el archivo Platforms/Android/AndroidManifest.xml y agrega la siguiente línea en el nodo manifest:

    <uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
    

    - o -

  • Actualiza el manifiesto de Android en el editor de manifiestos:

    En Visual Studio, haz doble clic en el archivo Platforms/Android/AndroidManifest.xml para abrir el editor de manifiestos de Android. Después, en Permisos necesarios , comprueba el permiso de HIGH_SAMPLING_RATE_SENSORS. Esto actualizará automáticamente el archivo AndroidManifest.xml.

Nota:

Si un usuario desactiva el acceso al micrófono mediante los botones de alternancia del dispositivo, los sensores de movimiento y posición siempre están limitados a la velocidad, independientemente de si declara el permiso HIGH_SAMPLING_RATE_SENSORS.

Supervisión del sensor del magnetómetro

Para empezar a supervisar el sensor del magnetómetro, llama al método IMagnetometer.Start. .NET MAUI envía los cambios en los datos del magnetómetro a la aplicación mediante la generación del evento IMagnetometer.ReadingChanged. Los datos proporcionados por este evento se miden en $μT$ (microteslas). Usa el método IMagnetometer.Stop para detener la supervisión del sensor. Puedes detectar el estado de supervisión del magnetómetro con la propiedad IMagnetometer.IsMonitoring, que será true si se inició el magnetómetro y se está supervisando actualmente.

En el ejemplo de código siguiente se muestra cómo supervisar el magnetómetro:

private void ToggleMagnetometer()
{
    if (Magnetometer.Default.IsSupported)
    {
        if (!Magnetometer.Default.IsMonitoring)
        {
            // Turn on magnetometer
            Magnetometer.Default.ReadingChanged += Magnetometer_ReadingChanged;
            Magnetometer.Default.Start(SensorSpeed.UI);
        }
        else
        {
            // Turn off magnetometer
            Magnetometer.Default.Stop();
            Magnetometer.Default.ReadingChanged -= Magnetometer_ReadingChanged;
        }
    }
}

private void Magnetometer_ReadingChanged(object sender, MagnetometerChangedEventArgs e)
{
    // Update UI Label with magnetometer state
    MagnetometerLabel.TextColor = Colors.Green;
    MagnetometerLabel.Text = $"Magnetometer: {e.Reading}";
}

Información específica de la plataforma (magnetómetro)

No hay información específica de la plataforma relacionada con el sensor del magnetómetro.

Orientación

El sensor de orientación supervisa la orientación de un dispositivo en un espacio tridimensional.

Nota:

Este sensor no se usa para determinar si la pantalla de vídeo del dispositivo está en modo vertical o horizontal. Utilice la propiedad DeviceDisplay.Current.MainDisplayInfo.Orientation en su lugar. Para obtener más información, consulta Información de pantalla del dispositivo.

La interfaz IOrientationSensor proporciona acceso al sensor y está disponible a través de la propiedad OrientationSensor.Default. Tanto la interfaz IOrientationSensor como la clase OrientationSensor están contenidas en el espacio de nombres Microsoft.Maui.Devices.Sensors.

Para empezar a supervisar el sensor de orientación, llama al método IOrientationSensor.Start. .NET MAUI envía los cambios en los datos de orientación a la aplicación mediante la generación del evento IOrientationSensor.ReadingChanged. Usa el método IOrientationSensor.Stop para detener la supervisión del sensor. Puedes detectar el estado de supervisión de la orientación con la propiedad IOrientationSensor.IsMonitoring, que será true si se inició la orientación y se está supervisando actualmente.

En el ejemplo de código siguiente se muestra cómo supervisar el sensor de orientación:

private void ToggleOrientation()
{
    if (OrientationSensor.Default.IsSupported)
    {
        if (!OrientationSensor.Default.IsMonitoring)
        {
            // Turn on orientation
            OrientationSensor.Default.ReadingChanged += Orientation_ReadingChanged;
            OrientationSensor.Default.Start(SensorSpeed.UI);
        }
        else
        {
            // Turn off orientation
            OrientationSensor.Default.Stop();
            OrientationSensor.Default.ReadingChanged -= Orientation_ReadingChanged;
        }
    }
}

private void Orientation_ReadingChanged(object sender, OrientationSensorChangedEventArgs e)
{
    // Update UI Label with orientation state
    OrientationLabel.TextColor = Colors.Green;
    OrientationLabel.Text = $"Orientation: {e.Reading}";
}

Las lecturas de IOrientationSensor se informan como un Quaternion que describe la orientación del dispositivo en función de dos sistemas de coordenadas tridimensionales:

El dispositivo (generalmente un teléfono o tableta) tiene un sistema de coordenadas tridimensional con los siguientes ejes:

  • El eje X positivo apunta a la derecha de la pantalla en modo vertical.
  • El eje Y positivo apunta a la parte de arriba del dispositivo en modo vertical.
  • El eje Z positivo apunta fuera de la pantalla.

El sistema de coordenadas tridimensional de la Tierra tiene estos ejes:

  • El eje X positivo es tangente a la superficie de la Tierra y apunta al este.
  • El eje Y positivo también es tangente a la superficie de la Tierra y apunta al norte.
  • El eje Z positivo es perpendicular a la superficie de la Tierra y apunta hacia arriba.

Quaternion describe la rotación del sistema de coordenadas del dispositivo en relación con el sistema de coordenadas de la Tierra.

Un valor Quaternion está estrechamente relacionado con la rotación alrededor de un eje. Si un eje de rotación es el vector normalizado ($a_x, a_y, a_z$) y el ángulo de rotación es $\theta$, los componentes (X, Y, Z, W) del cuaternión son:

$(a_x \times \sin(\theta/2), a_y \times \sin(\theta/2), a_z \times \sin(\theta/2), \cos(\theta/2))$

Estos son los sistemas de coordenadas de la derecha por lo que, con el pulgar de la mano derecha apuntando en la dirección positiva del eje de rotación, la curva de los dedos indica la dirección de la rotación de los ángulos positivos.

Ejemplos:

  • Cuando el dispositivo está pantalla arriba sobre una mesa, con la parte superior del mismo (en el modo vertical) apuntando al norte, los dos sistemas de coordenadas están alineados. El valor Quaternion representa el cuaternión de identidad (0, 0, 0, 1). Todas las rotaciones se pueden analizar en relación con esta posición.

  • Cuando el dispositivo está pantalla arriba sobre una mesa y la parte superior del mismo (en el modo vertical) apunta al oeste, el valor de Quaternion es (0, 0, 0.707, 0.707). El dispositivo se giró 90 grados alrededor del eje Z de la Tierra.

  • Cuando el dispositivo se sostiene de manera vertical, con la parte superior (en el modo vertical) apuntando al cielo y la parte posterior orientada al norte, es porque el dispositivo se giró 90 grados alrededor del eje X. El valor de Quaternion es (0.707, 0, 0, 0.707).

  • Si el dispositivo se coloca de manera tal que el borde izquierdo esté sobre una mesa y la parte superior apunte al norte, es porque el dispositivo se giró –90 grados alrededor del eje Y (o 90 grados alrededor del eje Y negativo). El valor de Quaternion es (0, -0.707, 0, 0.707).

Información específica de la plataforma (orientación)

No hay información específica de la plataforma relacionada con el sensor de orientación.