Share via


Acessando sensores de dispositivos

Browse sample. Navegue pelo exemplo

Os dispositivos têm todos os tipos de sensores que estão disponíveis para você. Alguns sensores podem detectar movimento, outros mudanças no ambiente, como a luz. Monitorar e reagir a esses sensores torna seu aplicativo dinâmico na adaptação à forma como o dispositivo está sendo usado. Você também pode responder a mudanças nos sensores e alertar o usuário. Este artigo fornece uma breve visão geral dos sensores comuns suportados pelo .NET Multi-platform App UI (.NET MAUI).

Os tipos relacionados ao sensor de dispositivo estão disponíveis no Microsoft.Maui.Devices.Sensors namespace.

Velocidade do sensor

A velocidade do sensor define a velocidade na qual um sensor retornará dados ao seu aplicativo. Ao iniciar um sensor, você fornece a velocidade desejada do sensor com a SensorSpeed enumeração:

  • Fastest
    Obtenha os dados do sensor o mais rápido possível (não é garantido que retornem no thread da interface do usuário).

  • Game
    Taxa adequada para jogos (não é garantido que retorne no thread da interface do usuário).

  • UI
    Taxa adequada para interface de usuário geral.

  • Default
    Taxa padrão adequada para alterações de orientação da tela.

Aviso

O monitoramento de muitos sensores ao mesmo tempo pode afetar a taxa de dados do sensor que é retornada ao seu aplicativo.

No .NET 8, SensorSpeed os intervalos são idênticos em todas as plataformas:

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

Manipuladores de eventos do sensor

Os manipuladores de eventos adicionados aos sensores com as Game velocidades ou Fastest não têm garantia de execução no thread da interface do usuário. Se o manipulador de eventos precisar acessar elementos da interface do usuário, use o método para executar esse código no thread da interface do MainThread.BeginInvokeOnMainThread usuário.

Acelerômetro

O sensor do acelerômetro mede a aceleração do dispositivo ao longo de seus três eixos. Os dados relatados pelo sensor representam como o usuário está movendo o dispositivo.

A IAccelerometer interface fornece acesso ao sensor, e está disponível através da Accelerometer.Default propriedade. A interface e Accelerometer a IAccelerometer classe estão contidas no Microsoft.Maui.Devices.Sensors namespace.

Introdução

Para acessar a funcionalidade do acelerômetro, talvez seja necessária a seguinte configuração específica da plataforma:

Se o seu aplicativo tem como alvo o Android 12+ (API 31+), o sistema coloca um limite de 200 Hz na taxa de atualização dos dados desse sensor. Se seu aplicativo precisar coletar dados do sensor usando a velocidade do sensor, você deverá declarar a FastestHIGH_SAMPLING_RATE_SENSORS permissão. Você pode configurar a permissão das seguintes maneiras:

  • Adicione a permissão baseada em assembly:

    Abra o arquivo Platforms/Android/MainApplication.cs e adicione o seguinte atributo assembly após using as diretivas:

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

    - ou -

  • Atualize o manifesto do Android:

    Abra o arquivo Platforms/Android/AndroidManifest.xml e adicione a seguinte linha no manifest nó:

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

    - ou -

  • Atualize o manifesto do Android no editor de manifesto:

    No Visual Studio, clique duas vezes no arquivo Platforms/Android/AndroidManifest.xml para abrir o editor de manifesto do Android. Em seguida, em Permissões necessárias, verifique a permissão HIGH_SAMPLING_RATE_SENSORS. Isso atualizará automaticamente o arquivo AndroidManifest.xml.

Observação

Se um usuário desativar o acesso ao microfone usando os botões de alternância do dispositivo, os sensores de movimento e posição serão sempre limitados à taxa, independentemente de você declarar a HIGH_SAMPLING_RATE_SENSORS permissão.

Monitorar o sensor do acelerômetro

Para começar a monitorar o sensor do acelerômetro, chame o IAccelerometer.Start método. O .NET MAUI envia alterações de dados do acelerômetro para seu aplicativo aumentando o IAccelerometer.ReadingChanged evento. Use o método para parar de monitorar o IAccelerometer.Stop sensor. Você pode detectar o estado de monitoramento do acelerômetro com a IAccelerometer.IsMonitoring propriedade, que será true se o acelerômetro foi iniciado e está sendo monitorado no momento.

O exemplo de código a seguir demonstra o monitoramento do acelerômetro para alterações:

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}";
}

As leituras do acelerômetro são relatadas em G. Um G é uma unidade de força gravitacional igual à gravidade exercida pelo campo gravitacional da Terra $(9,81 m/s^2)$.

O sistema de coordenadas é definido em relação à tela do dispositivo em sua orientação padrão. Os eixos não são trocados quando a orientação da tela do dispositivo muda.

O eixo X é horizontal e aponta para a direita, o eixo Y é vertical e aponta para cima e o eixo Z aponta para o exterior da face frontal da tela. Neste sistema, as coordenadas atrás da tela têm valores Z negativos.

Exemplos:

  • Quando o dispositivo fica apoiado em uma mesa e é empurrado do lado esquerdo para a direita, o valor de aceleração X é positivo.

  • Quando o dispositivo fica plano sobre uma mesa, o valor de aceleração é +1,00 G ou $(+9,81 m/s^2)$, que corresponde à aceleração do dispositivo $(0 m/s^2)$ menos a força da gravidade $(-9,81 m/s^2)$ e normalizado como em G.

  • Quando o dispositivo fica deitado sobre uma mesa e é empurrado em direção ao céu com uma aceleração de A $m/s^2$, o valor de aceleração é igual a $A+9.81$ que corresponde à aceleração do dispositivo $(+A m/s^2)$ menos a força da gravidade $(-9.81 m/s^2)$ e normalizado em G.

Informações específicas da plataforma (Acelerômetro)

Não há informações específicas da plataforma relacionadas ao sensor do acelerômetro.

Barometer

O sensor barômetro mede a pressão do ar ambiente. Os dados informados pelo sensor representam a pressão do ar atual. Esses dados são relatados na primeira vez que você começa a monitorar o sensor e, em seguida, cada vez que a pressão muda.

A IBarometer interface fornece acesso ao sensor, e está disponível através da Barometer.Default propriedade. A interface e Barometer a IBarometer classe estão contidas no Microsoft.Maui.Devices.Sensors namespace.

Para começar a monitorar o sensor do barômetro, chame o IBarometer.Start método. O .NET MAUI envia leituras de pressão de ar para seu aplicativo aumentando o IBarometer.ReadingChanged evento. Use o método para parar de monitorar o IBarometer.Stop sensor. Você pode detectar o estado de monitoramento do barômetro com a IBarometer.IsMonitoring propriedade, que será true se o barômetro está sendo monitorado no momento.

A leitura da pressão é representada em hectopascals.

O exemplo de código a seguir demonstra o monitoramento do barômetro para alterações:

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}";
}

Informações específicas da plataforma (Barômetro)

Esta seção descreve detalhes de implementação específicos da plataforma relacionados ao sensor barômetro.

Sem detalhes da implementação específica da plataforma.

Compass

O sensor da bússola monitora a direção norte magnética do dispositivo.

A ICompass interface fornece acesso ao sensor, e está disponível através da Compass.Default propriedade. A interface e Compass a ICompass classe estão contidas no Microsoft.Maui.Devices.Sensors namespace.

Para começar a monitorar o sensor de bússola, chame o ICompass.Start método. O .NET MAUI gera o evento quando o ICompass.ReadingChanged cabeçalho da bússola é alterado. Use o método para parar de monitorar o ICompass.Stop sensor. Você pode detectar o estado de monitoramento da bússola com a propriedade, que será true se a ICompass.IsMonitoring bússola estiver sendo monitorada no momento.

O exemplo de código a seguir demonstra o monitoramento da bússola para alterações:

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}";
}

Informações específicas da plataforma (Bússola)

Esta seção descreve detalhes de implementação específicos da plataforma relacionados ao recurso de bússola.

O Android não fornece uma API para recuperar o cabeçalho da bússola. O .NET MAUI usa os sensores do acelerômetro e do magnetômetro para calcular a direção norte magnética, o que é recomendado pelo Google.

Em casos raros, você pode ver resultados inconsistentes porque os sensores precisam ser calibrados. A recalibragem da bússola no Android varia de acordo com o modelo do telefone e a versão do Android. Você precisará pesquisar na internet sobre como recalibrar a bússola. Aqui estão dois links que podem ajudar na recalibragem da bússola:

Executar vários sensores do seu aplicativo ao mesmo tempo pode prejudicar a velocidade do sensor.

Filtro passa-baixa

Devido à forma como os valores da bússola do Android são atualizados e calculados, pode haver a necessidade de suavizar os valores. Um filtro passa-baixa pode ser aplicado que faz a média dos valores de seno e cosseno dos ângulos e pode ser ativado usando o método overload, que aceita o bool applyLowPassFilterStart parâmetro:

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

Isso é aplicado apenas na plataforma Android, e o parâmetro é ignorado no iOS e no Windows. Saiba mais neste o comentário do problema desse GitHub.

Tremer

Mesmo que este artigo esteja listando o shake como um sensor, não é. O acelerômetro é usado para detectar quando o dispositivo é agitado.

A IAccelerometer interface fornece acesso ao sensor, e está disponível através da Accelerometer.Default propriedade. A interface e Accelerometer a IAccelerometer classe estão contidas no Microsoft.Maui.Devices.Sensors namespace.

Observação

Se seu aplicativo precisar coletar dados do sensor do acelerômetro usando a velocidade do sensor, você deverá declarar a FastestHIGH_SAMPLING_RATE_SENSORS permissão. Para obter mais informações, consulte Acelerômetro.

A API de detecção de movimento usa leituras brutas do acelerômetro para calcular a aceleração. Ela usa um mecanismo de fila simples para detectar se 3/4 dos eventos recentes do acelerômetro ocorreram na última metade do segundo. A aceleração é calculada adicionando o quadrado das leituras X, Y e Z ($x^2+y^2+z^2$) do acelerômetro e comparando-o com um limiar específico.

Para começar a monitorar o sensor do acelerômetro, chame o IAccelerometer.Start método. Quando um tremor é detectado, o IAccelerometer.ShakeDetected evento é gerado. Use o método para parar de monitorar o IAccelerometer.Stop sensor. Você pode detectar o estado de monitoramento do acelerômetro com a IAccelerometer.IsMonitoring propriedade, que será true se o acelerômetro foi iniciado e está sendo monitorado no momento.

Recomenda-se usar Game ou mais rápido para o SensorSpeed.

O exemplo de código a seguir demonstra o monitoramento do acelerômetro para o ShakeDetected evento:

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";
}

Informações específicas da plataforma (Shake)

Não há informações específicas da plataforma relacionadas ao sensor do acelerômetro.

Giroscópio

O sensor do giroscópio mede a velocidade de rotação angular em torno dos três eixos principais do dispositivo.

A IGyroscope interface fornece acesso ao sensor, e está disponível através da Gyroscope.Default propriedade. A interface e Gyroscope a IGyroscope classe estão contidas no Microsoft.Maui.Devices.Sensors namespace.

Introdução

Para acessar a funcionalidade do giroscópio, talvez seja necessária a seguinte configuração específica da plataforma:

Se o seu aplicativo tem como alvo o Android 12+ (API 31+), o sistema coloca um limite de 200 Hz na taxa de atualização dos dados desse sensor. Se seu aplicativo precisar coletar dados do sensor usando a velocidade do sensor, você deverá declarar a FastestHIGH_SAMPLING_RATE_SENSORS permissão. Você pode configurar a permissão das seguintes maneiras:

  • Adicione a permissão baseada em assembly:

    Abra o arquivo Platforms/Android/MainApplication.cs e adicione o seguinte atributo assembly após using as diretivas:

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

    - ou -

  • Atualize o manifesto do Android:

    Abra o arquivo Platforms/Android/AndroidManifest.xml e adicione a seguinte linha no manifest nó:

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

    - ou -

  • Atualize o manifesto do Android no editor de manifesto:

    No Visual Studio, clique duas vezes no arquivo Platforms/Android/AndroidManifest.xml para abrir o editor de manifesto do Android. Em seguida, em Permissões necessárias, verifique a permissão HIGH_SAMPLING_RATE_SENSORS. Isso atualizará automaticamente o arquivo AndroidManifest.xml.

Observação

Se um usuário desativar o acesso ao microfone usando os botões de alternância do dispositivo, os sensores de movimento e posição serão sempre limitados à taxa, independentemente de você declarar a HIGH_SAMPLING_RATE_SENSORS permissão.

Monitore o sensor do giroscópio

Para começar a monitorar o sensor do giroscópio, chame o IGyroscope.Start método. O .NET MAUI envia alterações de dados do giroscópio para seu aplicativo aumentando o IGyroscope.ReadingChanged evento. Os dados fornecidos por este evento são medidos em rad/s (radiano por segundo). Use o método para parar de monitorar o IGyroscope.Stop sensor. Você pode detectar o estado de monitoramento do giroscópio com a IGyroscope.IsMonitoring propriedade, que será true se o giroscópio foi iniciado e está sendo monitorado no momento.

O exemplo de código a seguir demonstra o monitoramento do giroscópio:

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}";
}

Informações específicas da plataforma (Giroscópio)

Não há informações específicas da plataforma relacionadas ao sensor do giroscópio.

Magnetometer

O sensor do magnetômetro indica a orientação do dispositivo em relação ao campo magnético da Terra.

A IMagnetometer interface fornece acesso ao sensor, e está disponível através da Magnetometer.Default propriedade. A interface e Magnetometer a IMagnetometer classe estão contidas no Microsoft.Maui.Devices.Sensors namespace.

Introdução

Para acessar a funcionalidade do magnetômetro, talvez seja necessária a seguinte configuração específica da plataforma:

Se o seu aplicativo tem como alvo o Android 12+ (API 31+), o sistema coloca um limite de 200 Hz na taxa de atualização dos dados desse sensor. Se seu aplicativo precisar coletar dados do sensor usando a velocidade do sensor, você deverá declarar a FastestHIGH_SAMPLING_RATE_SENSORS permissão. Você pode configurar a permissão das seguintes maneiras:

  • Adicione a permissão baseada em assembly:

    Abra o arquivo Platforms/Android/MainApplication.cs e adicione o seguinte atributo assembly após using as diretivas:

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

    - ou -

  • Atualize o manifesto do Android:

    Abra o arquivo Platforms/Android/AndroidManifest.xml e adicione a seguinte linha no manifest nó:

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

    - ou -

  • Atualize o manifesto do Android no editor de manifesto:

    No Visual Studio, clique duas vezes no arquivo Platforms/Android/AndroidManifest.xml para abrir o editor de manifesto do Android. Em seguida, em Permissões necessárias, verifique a permissão HIGH_SAMPLING_RATE_SENSORS. Isso atualizará automaticamente o arquivo AndroidManifest.xml.

Observação

Se um usuário desativar o acesso ao microfone usando os botões de alternância do dispositivo, os sensores de movimento e posição serão sempre limitados à taxa, independentemente de você declarar a HIGH_SAMPLING_RATE_SENSORS permissão.

Monitore o sensor do magnetômetro

Para começar a monitorar o sensor do magnetômetro, chame o IMagnetometer.Start método. O .NET MAUI envia alterações de dados do magnetômetro para seu aplicativo aumentando o IMagnetometer.ReadingChanged evento. Os dados fornecidos por este evento são medidos em $μT$ (microteslas). Use o método para parar de monitorar o IMagnetometer.Stop sensor. Você pode detectar o estado de monitoramento do magnetômetro com a IMagnetometer.IsMonitoring propriedade, que será true se o magnetômetro foi iniciado e está sendo monitorado no momento.

O exemplo de código a seguir demonstra o monitoramento do 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}";
}

Informações específicas da plataforma (Magnetômetro)

Não há informações específicas da plataforma relacionadas ao sensor do magnetômetro.

Orientação

O sensor de orientação monitora a orientação de um dispositivo no espaço 3D.

Observação

Esse sensor não é usado para determinar se a tela de vídeo do dispositivo está no modo retrato ou paisagem. Use a propriedade DeviceDisplay.Current.MainDisplayInfo.Orientation. Para obter mais informações, consulte Informações de exibição do dispositivo.

A IOrientationSensor interface fornece acesso ao sensor, e está disponível através da OrientationSensor.Default propriedade. A interface e OrientationSensor a IOrientationSensor classe estão contidas no Microsoft.Maui.Devices.Sensors namespace.

Para começar a monitorar o sensor de orientação, chame o IOrientationSensor.Start método. O .NET MAUI envia alterações de dados de orientação para seu aplicativo aumentando o IOrientationSensor.ReadingChanged evento. Use o método para parar de monitorar o IOrientationSensor.Stop sensor. Você pode detectar o estado de monitoramento da orientação com a propriedade, que será true se a IOrientationSensor.IsMonitoring orientação foi iniciada e está sendo monitorada no momento.

O exemplo de código a seguir demonstra o monitoramento do sensor de orientação:

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}";
}

As leituras IOrientationSensor são apresentadas na forma de um Quaternion que descreve a orientação do dispositivo com base em dois sistemas de coordenadas 3D:

O dispositivo (geralmente um telefone ou tablet) possui um sistema de coordenadas 3D com os seguintes eixos:

  • O eixo X positivo aponta para a direita da tela no modo retrato.
  • O eixo Y positivo aponta para a parte superior do dispositivo no modo retrato.
  • O eixo Z positivo aponta para fora da tela.

O sistema de coordenadas 3D da Terra tem os seguintes eixos:

  • O eixo X positivo é tangente à superfície da Terra e aponta para leste.
  • O eixo Y positivo também é tangente à superfície da Terra e aponta para o norte.
  • O eixo Z positivo é perpendicular à superfície da Terra e aponta para cima.

O Quaternion descreve a rotação do sistema de coordenadas do dispositivo em relação ao sistema de coordenadas da Terra.

Um Quaternion valor está intimamente relacionado à rotação em torno de um eixo. Se um eixo de rotação é o vetor normalizado ($a_x, a_y, a_z$), e o ângulo de rotação é $\theta$, então os componentes (X, Y, Z, W) do quaternião são:

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

Estes são sistemas de coordenadas à direita, portanto, com o polegar da mão direita apontado na direção positiva do eixo de rotação, a curva dos dedos indica a direção da rotação para ângulos positivos.

Exemplos:

  • Os dois sistemas de coordenadas estarão alinhados quando o dispositivo estiver em uma mesa com a tela voltada para cima e a parte superior do dispositivo (no modo retrato) estiver apontando para norte. O valor Quaternion representa o quatérnio da identidade (0, 0, 0, 1). Todas as rotações podem ser analisadas em relação a essa posição.

  • O valor Quaternion será (0, 0, 0.707, 0.707) quando dispositivo estiver em uma mesa com a tela voltada para cima e a parte superior do dispositivo (no modo retrato) estiver apontando para oeste. O dispositivo girou 90 graus em torno do eixo Z da Terra.

  • O dispositivo terá girado 90 graus ao redor do eixo X quando for colocado na posição vertical de modo que a parte superior (no modo retrato) aponte para o céu e a parte de trás do dispositivo fique voltada para norte. O valor Quaternion é (0.707, 0, 0, 0.707).

  • Se o dispositivo estiver posicionado de forma que sua borda esquerda esteja em uma mesa e a parte superior aponte para o norte, o dispositivo foi girado -90 graus em torno do eixo Y (ou 90 graus em torno do eixo Y negativo). O valor Quaternion é (0, -0.707, 0, 0.707).

Informações específicas da plataforma (Orientação)

Não há informações específicas da plataforma relacionadas ao sensor de orientação.