Escolhendo os sensores corretos a serem usados (HTML)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

Os sensores permitem ao seu aplicativo identificar a relação entre um dispositivo e o mundo físico ao redor dele. Os sensores podem informar ao aplicativo a direção, a orientação e o movimento do dispositivo. Esses sensores podem ajudar a melhorar a utilidade e a interatividade de jogos, aplicativos de realidade aumentada e aplicativos utilitários, fornecendo uma forma exclusiva de entrada – por exemplo, uso do movimento do dispositivo para organizar os caracteres na tela ou para simular que o usuário está em uma cabine e usando o dispositivo como o volante.

Como regra geral, decida desde o princípio se o seu aplicativo irá depender exclusivamente dos sensores ou se os sensores apenas oferecerão um mecanismo de controle adicional ao aplicativo. Por exemplo, um jogo de corrida usando um dispositivo como um volante virtual pode, alternativamente, ser controlado pela GUI na tela. Desse modo, o aplicativo funciona independentemente de os sensores estarem disponíveis no sistema. Por outro lado, um jogo do tipo marble tilt maze pode ser codificado para funcionar somente em sistemas que tenham os sensores apropriados. Você precisa decidir estrategicamente se irá depender dos sensores. Observe que um esquema de controle de mouse/toque lida com imersão para proporcionar um controle maior.

Envio em lote de sensor

Alguns sensores oferecem suporte ao conceito de envio em lote. Isso varia dependendo do sensor individual disponível. Quando um sensor implementa o envio em lote, ele coleta vários pontos de dados durante um intervalo de tempo especificado e transfere todos esses dados de uma só vez. Isso é diferente do comportamento normal em que um sensor relata suas conclusões assim que executa uma leitura. Considere o diagrama a seguir, que mostra como os dados são coletados e entregues, primeiro com entrega normal e depois com entrega em lote.

Coleta em lote de sensor

A principal vantagem do envio em lote de sensor é o prolongamento da vida útil da bateria. Quando os dados não são enviados imediatamente, isso economiza energia do processador e acaba com a necessidade de processar os dados imediatamente. Partes do sistema podem ficar em suspensão até que sejam necessárias, o que gera uma economia significativa de energia.

Você pode influenciar a frequência com que o sensor envia lotes ajustando a latência. Por exemplo, o sensor Accelerometer tem a propriedade ReportLatency. Quando essa propriedade é definida para um aplicativo, o sensor envia dados após o período de tempo especificado. Você pode controlar a quantidade de dados que é acumulada durante uma determinada latência definindo a propriedade ReportInterval.

Há algumas limitações que devem ser consideradas em relação à definição da latência. A primeira limitação é que cada sensor tem um MaxBatchSize ao qual ele pode oferecer suporte com base no próprio sensor. Este é o número de eventos que o sensor pode armazenar em cache antes que ele seja forçado a enviá-los. Multiplique MaxBatchSize por ReportInterval para determinar o valor máximo de ReportLatency. Se você especificar um valor maior que esse, a latência máxima será usada para que você não perca dados. Além disso, vários aplicativos podem, cada um, definir uma latência desejada. Para atender às necessidades de todos os aplicativos, o período mais curto de latência será usado. Devido a esses fatos, a latência definida em seu aplicativo pode não corresponder à latência observada.

Se um sensor estiver usando relatório em lote, chamar GetCurrentReading limpará o lote atual de dados e iniciará um novo período de latência.

Acelerômetro

O sensor Accelerometer mede os valores da força G nos eixos X, Y e Z do dispositivo e é excelente para aplicativos simples baseados em movimento. Observe que os valores de força G incluem aceleração devido à gravidade. Se o dispositivo tiver SimpleOrientation de FaceUp em uma tabela, o acelerômetro lerá -1 G no eixo Z. Portanto, os acelerômetros não necessariamente medem apenas a aceleração coordenada – a taxa de alteração de velocidade. Ao usar um acelerômetro, lembre-se de diferenciar o vetor gravitacional da gravidade e o vetor de aceleração linear do movimento. Observe que o vetor gravitacional deve normalizar em 1 para um dispositivo imóvel.

O diagrama a seguir ilustra:

  • V1 = Vetor 1 = Força devido a gravidade
  • V2 = Vetor 2 = Eixo -Z do chassi do dispositivo (pontos da parte traseira da tela)
  • Θi = Ângulo de inclinação = ângulo entre o eixo –Z axis do chassi do dispositivo e o vetor de gravidade

AcelerômetroMedição do acelerômetro

Os aplicativos que possivelmente usem um acelerômetro incluem um jogo em que uma bola de gude rola na tela, na direção em que o dispositivo é inclinado (vetor gravitacional). Esse tipo de funcionalidade espelha bastante bem a funcionalidade do Inclinometer e também pode ser usada com esse sensor, por meio de uma combinação de rotação e rolagem. O uso do vetor de gravidade do acelerômetro simplifica um pouco isso ao fornecer um vetor manipulado matemática e facilmente para a inclinação do dispositivo. Outro exemplo é um aplicativo que faz um som de estalo de chicote quando o usuário sacode o dispositivo no ar (vetor de aceleração linear).

Girômetro

O sensor Gyrometer mede as velocidades angulares ao longo dos eixos X, Y e Z. Eles são muito úteis em aplicativos baseados em movimento simples que não levam em consideração a orientação do dispositivo, e sim a rotação do dispositivo em diferentes velocidades. Os girômetros podem ser afetados por ruídos nos dados ou por uma tendência constante ao longo de um ou mais eixos. Você deve consultar o acelerômetro para verificar se o dispositivo está se movimentando e assim determinar se o girômetro é afetado por uma tendência; então, faça a devida compensação no aplicativo.

Girômetro com rotação sobre o eixo x, rolagem e rotação sobre o eixo y

Um exemplo de aplicativo que poderia usar o sensor girômetro é um jogo que gira uma roleta com base em uma rápida sacudida rotacional do dispositivo.

Bússola

O sensor Compass retorna uma direção 2D em relação ao Norte magnético, baseado no plano horizontal da terra. O sensor da bússola não deve ser usado para determinar a orientação específica do dispositivo ou para fazer representações no espaço 3D. Os recursos geográficos podem causar declinação na direção, então alguns sistemas dão suporte para ambos HeadingMagneticNorth e HeadingTrueNorth . Pense em qual é a preferencial para o seu aplicativo, mas lembre-se de que nem todos os sistemas irão reportar o valor de Norte verdadeiro. Os sensores do girômetro e o magnetômetro (um dispositivo que mede a amplitude da força magnética) combina seus dados para produzir a direção da bússola, que tem um efeito líquido de estabilização dos dados (a força do campo magnético é muito instável, devido aos componentes do sistema elétrico).

As leituras da bússola com relação ao Polo Norte magnético

Os aplicativos que devem exibir uma bússola ou navegar em um mapa geralmente usam um sensor de bússola.

Inclinômetro

O sensor Inclinometer especifica que os valores de rotação sobre o eixo vertical, rolagem e rotação sobre o eixo x de um dispositivo e funciona melhor com aplicativos que levam em consideração como o dispositivo está situado no espaço. A rotação sobre o eixo x e a rolagem são derivadas ao se tomar o vetor de gravidade do acelerômetro e ao integrar os dados do girômetro. A rotação sobre o eixo y é estabelecida a partir dos dados do magnetômetro e do girômetro (semelhante à direção da bússola). Os inclinômetros oferecem dados de orientação avançados de uma maneira fácil e compreensível. Usar inclinômetros quando precisar da orientação do dispositivo, mas não precisar manipular os dados do sensor.

Inclinômetro com rotação sobre o eixo x, rolagem e rotação sobre o eixo y

Os aplicativos que alteram sua exibição para corresponder à orientação do dispositivo podem usar o sensor do inclinômetro. Além disso, um aplicativo que exibe um avião que corresponde à rotação sobre o eixo x, rotação sobre o eixo vertical e rolagem do dispositivo devem usar também as leituras do inclinômetro.

Sensor de orientação

A orientação do dispositivo é expressa através das matrizes de quaternião e rotação. O OrientationSensor oferece um alto grau de precisão na determinação de como o dispositivo está situado no espaço com relação à direção absoluta. Os dados de OrientationSensor são derivados do acelerômetro, girômetro e magnetômetro. Assim, ambos os sensores de bússola e inclinômetro podem ser derivados dos valores de quaternião. As matrizes de quaternião e rotação se prestam muito bem à manipulação matemática avançada e são frequentemente usados na programação gráfica. Aplicativos que usam manipulação complexa devem se beneficiar do sensor de orientação, pois muitas transformações são extraídas das matrizes de quaternião e rotação.

Dados do sensor de orientação

O sensor de orientação é geralmente usado nos aplicativos de realidade aumentada que criam uma sobreposição no ambiente ao redor, com base na direção apontada pela parte traseira do dispositivo.

Orientação simples

O SimpleOrientationSensor detecta a orientação quadrante atual do dispositivo especificado ou seu enquadramento de frente ou enquadramento para baixo. Há seis possíveis estados do SimpleOrientation (NotRotated, Rotated90, Rotated180, Rotated270, FaceUp, FaceDown).

Um aplicativo de leitura que altera sua exibição com base no dispositivo sendo segurado em paralelo ou perpendicular ao chão usará os valores de SimpleOrientationSensor para determinar como o dispositivo está sendo segurado.

Tópicos relacionados

Dados do sensor e orientação de exibição