SensorEvent.Values Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
O comprimento e o #values values conteúdo da matriz dependem de qual android.hardware.Sensor sensor tipo está sendo monitorado (consulte também SensorEvent uma definição do sistema de coordenadas usado).
[Android.Runtime.Register("values")]
public System.Collections.Generic.IList<float>? Values { get; set; }
[<Android.Runtime.Register("values")>]
member this.Values : System.Collections.Generic.IList<single> with get, set
Valor da propriedade
- Atributos
Comentários
O comprimento e o #values values conteúdo da matriz dependem de qual android.hardware.Sensor sensor tipo está sendo monitorado (consulte também SensorEvent uma definição do sistema de coordenadas usado).
<h4>android.hardware.Sensor#TYPE_ACCELEROMETER Sensor.TYPE_ACCELEROMETER:</h4> Todos os valores estão em unidades SI (m/s^2)
<ul>li values[0]: Aceleração menos Gx no eixo <x /li><valores>[1]: Aceleração menos Giro no eixo <y /li><> valores[2]: Aceleração menos Gz no eixo <z /li></ul><>
Um sensor desse tipo mede a aceleração aplicada ao dispositivo (<b Ad</b>>). Conceitualmente, ele faz isso medindo as forças aplicadas ao próprio sensor (<b>Fs</b>) usando a relação:
<b><center>Ad = - ∑ Fs/mass</center></b>
Em particular, a força da gravidade está sempre influenciando a aceleração medida:
<b><center>Ad = -g - ∑ F/mass</center></b>
Por esse motivo, quando o dispositivo está sentado em uma tabela (e obviamente não está acelerando), o acelerômetro lê uma magnitude de <b>g</b> = 9,81 m/s^2
Da mesma forma, quando o dispositivo está em queda livre e, portanto, acelerando perigosamente em direção ao solo a 9,81 m/s^2, seu acelerômetro lê uma magnitude de 0 m/s^2.
Deve ser evidente que, para medir a aceleração real do dispositivo, a contribuição da força da gravidade deve ser eliminada. Isso pode ser feito aplicando um filtro de passagem alta . Por outro lado, um filtro de passagem baixa pode ser usado para isolar a força da gravidade.
public void onSensorChanged(SensorEvent event)
{
// alpha is calculated as t / (t + dT)
// with t, the low-pass filter's time-constant
// and dT, the event delivery rate
final float alpha = 0.8;
gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
linear_acceleration[0] = event.values[0] - gravity[0];
linear_acceleration[1] = event.values[1] - gravity[1];
linear_acceleration[2] = event.values[2] - gravity[2];
}
<u>Exemplos</u>: <ul><li>Quando o dispositivo está plano em uma tabela e é empurrado para o lado esquerdo em direção à direita, o valor de aceleração x é positivo.</li>
<li>Quando o dispositivo está fixo em uma tabela, o valor de aceleração é +9,81, que corresponde à aceleração do dispositivo (0 m/s^2) menos a força da gravidade (-9,81 m/s^2).</li>
<li>Quando o dispositivo está plano em uma tabela e é empurrado para o 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).</li></ul>
<h4>android.hardware.Sensor#TYPE_MAGNETIC_FIELD Sensor.TYPE_MAGNETIC_FIELD:</h4> Todos os valores estão em micro-Tesla (uT) e medem o campo magnético ambiente no eixo X, Y e Z.
<h4>android.hardware.Sensor#TYPE_GYROSCOPE Sensor.TYPE_GYROSCOPE: </h4> Todos os valores estão em radianos/segundos e medem a taxa de rotação em torno do eixo X, Y e Z locais do dispositivo. O sistema de coordenadas é o mesmo usado para o sensor de aceleração. A rotação é positiva na direção no sentido anti-horário. Ou seja, um observador olhando de algum local positivo no eixo x, y ou z em um dispositivo posicionado na origem relataria rotação positiva se o dispositivo parecesse estar girando no sentido anti-horário. Observe que essa é a definição matemática padrão de rotação positiva e não concorda com a definição de roll fornecida anteriormente.
<ul>li values[0]: velocidade angular em torno dos valores x-axis </li<>li>[1]: velocidade angular em torno dos valores de eixo <y /li<>li>[2]: velocidade angular em torno do eixo <z /li<>/ul><>
Normalmente, a saída do giroscópio é integrada ao longo do tempo para calcular uma rotação que descreve a alteração de ângulos ao longo da etapa de tempo, por exemplo:
private static final float NS2S = 1.0f / 1000000000.0f;
private final float[] deltaRotationVector = new float[4]();
private float timestamp;
public void onSensorChanged(SensorEvent event) {
// This time step's delta rotation to be multiplied by the current rotation
// after computing it from the gyro sample data.
if (timestamp != 0) {
final float dT = (event.timestamp - timestamp) * NS2S;
// Axis of the rotation sample, not normalized yet.
float axisX = event.values[0];
float axisY = event.values[1];
float axisZ = event.values[2];
// Calculate the angular speed of the sample
float omegaMagnitude = sqrt(axisX*axisX + axisY*axisY + axisZ*axisZ);
// Normalize the rotation vector if it's big enough to get the axis
if (omegaMagnitude > EPSILON) {
axisX /= omegaMagnitude;
axisY /= omegaMagnitude;
axisZ /= omegaMagnitude;
}
// Integrate around this axis with the angular speed by the time step
// in order to get a delta rotation from this sample over the time step
// We will convert this axis-angle representation of the delta rotation
// into a quaternion before turning it into the rotation matrix.
float thetaOverTwo = omegaMagnitude * dT / 2.0f;
float sinThetaOverTwo = sin(thetaOverTwo);
float cosThetaOverTwo = cos(thetaOverTwo);
deltaRotationVector[0] = sinThetaOverTwo * axisX;
deltaRotationVector[1] = sinThetaOverTwo * axisY;
deltaRotationVector[2] = sinThetaOverTwo * axisZ;
deltaRotationVector[3] = cosThetaOverTwo;
}
timestamp = event.timestamp;
float[] deltaRotationMatrix = new float[9];
SensorManager.getRotationMatrixFromVector(deltaRotationMatrix, deltaRotationVector);
// User code should concatenate the delta rotation we computed with the current
// rotation in order to get the updated rotation.
// rotationCurrent = rotationCurrent * deltaRotationMatrix;
}
Na prática, o ruído e o deslocamento do giroscópio introduzirão alguns erros que precisam ser compensados. Isso geralmente é feito usando as informações de outros sensores, mas está além do escopo deste documento.
<h4>android.hardware.Sensor#TYPE_LIGHT Sensor.TYPE_LIGHT:</h4><ul><li>values[0]: Nível de luz ambiente em unidades <de lux si /li></ul>
<h4>android.hardware.Sensor#TYPE_PRESSURE Sensor.TYPE_PRESSURE:</h4><ul><li>values[0]: pressão atmosférica em hPa (millibar) </li></ul>
<h4>android.hardware.Sensor#TYPE_PROXIMITY Sensor.TYPE_PROXIMITY: </h4>
<ul><li>values[0]: distância do sensor de proximidade medida em centímetros </li></ul>
<b>Observação:</b> Alguns sensores de proximidade dão suporte apenas a uma medida binária próxima ou distante . Nesse caso, o sensor deve relatar seu android.hardware.Sensor#getMaximumRange() maximum range valor no estado distante e um valor menor no estado próximo .
<h4>android.hardware.Sensor#TYPE_GRAVITY Sensor.TYPE_GRAVITY:</h4>
Um vetor tridimensional que indica a direção e a magnitude da gravidade. As unidades são m/s^2. O sistema de coordenadas é o mesmo usado pelo sensor de aceleração.
<b>Observação:</b> Quando o dispositivo está em repouso, a saída do sensor de gravidade deve ser idêntica à do acelerômetro.
<h4>android.hardware.Sensor#TYPE_LINEAR_ACCELERATION Sensor.TYPE_LINEAR_ACCELERATION: </h4> Um vetor tridimensional que indica aceleração ao longo de cada eixo do dispositivo, não incluindo a gravidade. Todos os valores têm unidades de m/s^2. O sistema de coordenadas é o mesmo usado pelo sensor de aceleração.
A saída dos sensores de acelerômetro, gravidade e aceleração linear deve obedecer à seguinte relação:
<ul>acceleration = gravity + linear-acceleration</ul>
<h4>android.hardware.Sensor#TYPE_ROTATION_VECTOR Sensor.TYPE_ROTATION_VECTOR:</h4>
O vetor de rotação representa a orientação do dispositivo como uma combinação de um
Os três elementos do vetor de rotação são < x*sin(θ/2), y*sin(θ/2), z*sin(θ/2),
Os elementos do vetor de rotação são sem unidade. O eixo x,y e z são definidos da mesma forma que o sensor de aceleração.
O sistema de coordenadas de referência é definido como uma base ortomal direta, em que: </p>
<ul><li>X é definido como o produto <vetor b>Y.Z</b> (é tangencial para o chão no local atual do dispositivo e aproximadamente aponta para Leste).</li><li>Y é tangencial para o chão na localização atual do dispositivo e aponta para o norte magnético.</li><li>Z aponta para o céu e é perpendicular ao chão.</li></ul>
<center><img src=".. /.. /.. /images/axis_globe.png" alt="Diagrama do sistema de coordenadas do mundo". border="0" /></center>
<ul>li values[0]: x*sin(θ/2) </li><li> values[1]: y*sin(θ/2) </li<>li> values[2]: z*sin(&>#952/2) </li><li> values[3]: cos(θ/2) </li<>li> values[4]: precisão estimada do título (em radianos) (-1 se não estiver disponível)</li></ul><>
valores[3], originalmente opcionais, sempre estarão presentes do SDK Nível 18 em diante. values[4] é um novo valor que foi adicionado no Nível 18 do SDK.
<h4>android.hardware.Sensor#TYPE_ORIENTATION Sensor.TYPE_ORIENTATION:</h4> Todos os valores são ângulos em graus.
<ul><li> values[0]: Azimuth, ângulo entre a direção norte magnética e o eixo y, em torno do eixo z (0 a 359). 0=Norte, 90=Leste, 180=Sul, 270=Oeste </p>
values[1]: Pitch, rotação em torno do eixo x (-180 a 180), com valores positivos quando o eixo z move <b>em direção</b> ao eixo y.
values[2]: Roll, rotation around the y-axis (-90 to 90) increasing as the device moves clockwise.
</ul>
<b>Observação:</b> Essa definição é diferente de <b>yaw, pitch e roll</b> usado na aviação em que o eixo X está ao longo do lado longo do plano (cauda a nariz).
<b>Observação:</b> Esse tipo de sensor existe por motivos herdados, use android.hardware.Sensor#TYPE_ROTATION_VECTOR rotation vector sensor type e android.hardware.SensorManager#getRotationMatrix getRotationMatrix() em conjunto com android.hardware.SensorManager#remapCoordinateSystem remapCoordinateSystem() e android.hardware.SensorManager#getOrientation getOrientation() compute esses valores.
<b>Observação importante:</b> Por motivos históricos, o ângulo de rolagem é positivo no sentido horário (matematicamente falando, deve ser positivo na direção anti-horário).
<h4>android.hardware.Sensor#TYPE_RELATIVE_HUMIDITY Sensor.TYPE_RELATIVE_HUMIDITY:</h4><ul><li> values[0]: umidade relativa do ar ambiente em porcentagem </li></ul>
Quando a umidade relativa do ar ambiente e a temperatura ambiente são medidas, o ponto de reboque e a umidade absoluta podem ser calculados.
<u>Dew Point</u>
O ponto de orvalho é a temperatura para a qual uma determinada parcela de ar deve ser resfriada, sob pressão barométrica constante, para que o vapor de água se condensar na água.
<centro>
ln(RH/100%) + m·t/(T<sub>n</sub>+t)
t<sub>d</sub>(t,RH) = T<sub>n</sub> · ------------------------------
m - [ln(RH/100%) + m·t/(T<sub>n</sub>+t)]
</center><dl><dt>t<sub>d</sub></dt><dd>dew point temperature in ° C</dd><dt>t</dt><dd>temperatura real em ° C</dd><dt>RH</dt><dd>umidade relativa real em %</dd><dt>m</dt<>dd>17.62</dd><dt>T<sub>n</sub></dt><dd>243.12 ° C</dd></dl>
por exemplo:
h = Math.log(rh / 100.0) + (17.62 * t) / (243.12 + t);
td = 243.12 * h / (17.62 - h);
<u>Umidade< Absoluta/u>
A umidade absoluta é a massa de vapor de água em um volume específico de ar seco. A unidade é g/m<sup>3</sup>.
<centro>
RH/100%·A·exp(m·t/(T<sub>n</sub>+t))
d<sub>v</sub>(t,RH) = 216.7 · -------------------------
273.15 + t
</center><dl><dt>d<sub>v</sub></dt><dd>umidade absoluta em g/m<sup>3</sup></dd><dt>t</dt><dd>temperatura real em ° C</dd><dt>RH</dt><dd>umidade relativa real em %</dd><dt>m</dt<>dd>17.62</dd><dt>T<sub>n</sub></dt><dd>243.12 ° C</dd><dt>A</dt><dd>6.112 hPa</dd></dl>
por exemplo:
dv = 216.7 *
(rh / 100.0 * 6.112 * Math.exp(17.62 * t / (243.12 + t)) / (273.15 + t));
<h4>android.hardware.Sensor#TYPE_AMBIENT_TEMPERATURE Sensor.TYPE_AMBIENT_TEMPERATURE: </h4>
<ul><li> values[0]: Temperatura ambiente (ambiente) em graus Celsius</li></ul>
<h4>android.hardware.Sensor#TYPE_MAGNETIC_FIELD_UNCALIBRATED Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED:</h4> Semelhante a android.hardware.Sensor#TYPE_MAGNETIC_FIELD, mas a calibragem de ferro rígido é relatada separadamente em vez de ser incluída na medida. A calibragem de fábrica e a compensação de temperatura ainda serão aplicadas à medida "não recalibrado". Pressupõe que o campo magnético é devido aos pólos da Terra é evitado.
A matriz de valores é mostrada abaixo: <ul><li> values[0] = x_uncalib </li<>li> values[1] = y_uncalib </li><li> values[2] = z_uncalib </li<>li> values[3] = x_bias </li><li> values[4] = y_bias </li>>< values[5] = z_bias </li></ul>
x_uncalib, y_uncalib, z_uncalib são o campo magnético medido em eixos X, Y, Z. As calibrações de ferro macio e temperatura são aplicadas. Mas a calibragem de ferro rígido não é aplicada. Os valores estão em micro-Tesla (uT).
x_bias, y_bias, z_bias dar o viés de ferro estimado em eixos X, Y, Z. Cada campo é um componente da calibragem de ferro rígido estimada. Os valores estão em micro-Tesla (uT).
Ferro duro – Essas distorções surgem devido ao ferro magnetizado, aço ou ímãs permanentes no dispositivo. Ferro macio - Essas distorções surgem devido à interação com o campo magnético da Terra.
<h4>android.hardware.Sensor#TYPE_GAME_ROTATION_VECTOR Sensor.TYPE_GAME_ROTATION_VECTOR:</h4> Idêntico à android.hardware.Sensor#TYPE_ROTATION_VECTOR exceção de que ele não usa o campo geomagnético. Portanto, o eixo Y não aponta para o norte, mas, em vez disso, para alguma outra referência, essa referência tem permissão para descompassar pela mesma ordem de magnitude que o giroscópio descompasso ao redor do eixo Z.
No caso ideal, um telefone girado e retornando para a mesma orientação do mundo real relatará o mesmo vetor de rotação de jogo (sem usar o campo geomagnético da Terra). No entanto, a orientação pode derivar um pouco ao longo do tempo. Consulte android.hardware.Sensor#TYPE_ROTATION_VECTOR uma descrição detalhada dos valores. Esse sensor não terá o valor estimado de precisão do título.
<h4>android.hardware.Sensor#TYPE_GYROSCOPE_UNCALIBRATED Sensor.TYPE_GYROSCOPE_UNCALIBRATED:</h4> Todos os valores estão em radianos/segundos e medem a taxa de rotação em torno do eixo X, Y e Z. Uma estimativa da descompasso em cada eixo também é relatada.
Nenhuma compensação de gyro-drift é executada. A calibragem de fábrica e a compensação de temperatura ainda são aplicadas à taxa de rotação (velocidades angulares).
O sistema de coordenadas é o mesmo usado para a android.hardware.Sensor#TYPE_ACCELEROMETER Rotação é positivo na direção anti-horário (regra à direita). Ou seja, um observador olhando de algum local positivo no eixo x, y ou z em um dispositivo posicionado na origem relataria rotação positiva se o dispositivo parecesse estar girando no sentido anti-horário. O intervalo seria de pelo menos 17,45 rad/s (ou seja: ~1000 deg/s).
<ul>li values[0] : velocidade angular (compensação de descompasso w/o) em torno do eixo X em valores rad/s </li<>li>[1] : velocidade angular (compensação de descompasso do w/o) em torno do eixo Y em rad/s </li<>li> values[2] : velocidade angular (compensação de descompasso w/o) em torno do eixo Z em valores rad/s </li<>li>[3] : descompasso estimado em torno do eixo X em valores rad/s </li<>li>[4] :>< descompasso estimado em torno do eixo Y em valores rad/s </li><li>[5] : descompasso estimado em torno do eixo Z em rad/s </li></ul>
<b>Dica pro:</b> Sempre use o comprimento da matriz de valores ao executar operações nela. Em versões anteriores, isso costumava ser sempre 3, que foi alterado agora.
<h4>android.hardware.Sensor#TYPE_POSE_6DOF Sensor.TYPE_POSE_6DOF:</h4>
Um evento TYPE_POSE_6DOF consiste em uma rotação expressa como um quatérnio e uma tradução expressa em unidades si. O evento também contém uma rotação delta e uma tradução que mostram como a pose do dispositivo foi alterada desde a pose numerada da sequência anterior. O evento usa os eixos do Sensor Android canhão.
<ul>li values[0]: x*sin(θ/2) </li><li> values[1]: y*sin(θ/2) </li><values>[2]: z*sin(θ/2) </li<>li> values[3]: cos(θ/2) </li><>
<li> values[4]: tradução ao longo do eixo x de uma origem arbitrária. </li><li> values[5]: tradução ao longo do eixo y de uma origem arbitrária. </li><li> values[6]: tradução ao longo do eixo z de uma origem arbitrária. </li>
<li> values[7]: Rotação de quatérnio delta x*sin(θ/2) </li<>li> values[8]: Rotação de quatérnio delta y*sin(θ/2) </li<>li> values[9]: rotação de quatérnio delta z*sin(θ/2) </li<>li> values[10]: Delta quaternion rotation cos(θ/2) </li>
<li> values[11]: tradução delta ao longo do eixo x. </li><li> values[12]: tradução delta ao longo do eixo y. </li><li> values[13]: tradução delta ao longo do eixo z. </li>
<li> values[14]: número <de sequência /li>
</ul>
<h4>android.hardware.Sensor#TYPE_STATIONARY_DETECT Sensor.TYPE_STATIONARY_DETECT:</h4>
Um evento TYPE_STATIONARY_DETECT será produzido se o dispositivo estiver parado por pelo menos 5 segundos com uma latência máxima de 5 segundos adicionais. ou seja: pode levar de 5 a 10 segundos para que o dispositivo esteja em repouso para disparar esse evento.
O único valor permitido é 1,0.
<ul><li> values[0]: 1.0 </li></ul>
<h4>android.hardware.Sensor#TYPE_MOTION_DETECT Sensor.TYPE_MOTION_DETECT:</h4>
Um evento TYPE_MOTION_DETECT será produzido se o dispositivo estiver em movimento por pelo menos 5 segundos com uma latência máxima de 5 segundos adicionais. ou seja: pode levar de 5 a 10 segundos para que o dispositivo esteja em repouso para disparar esse evento.
O único valor permitido é 1,0.
<ul><li> values[0]: 1.0 </li></ul>
<h4>android.hardware.Sensor#TYPE_STEP_COUNTER Sensor.TYPE_STEP_COUNTER:</h4>
<ul><li>values[0]: número de etapas executadas pelo usuário desde a última reinicialização enquanto o sensor está ativado</li></ul>
<h4>android.hardware.Sensor#TYPE_STEP_DETECTOR Sensor.TYPE_STEP_DETECTOR:</h4>
<ul><li>values[0]: sempre definido como 1.0, representando um único evento< detectado/li></ul>
<h4>android.hardware.Sensor#TYPE_HEART_BEAT Sensor.TYPE_HEART_BEAT:</h4>
Um sensor desse tipo retorna um evento sempre que um pico de batida cardíaca é detectado.
O pico aqui corresponde, idealmente, ao pico positivo no complexo de QRS de um sinal ECG.
<ul><li> values[0]: confidence</li></ul>
Um valor de confiança de 0,0 indica incerteza completa - que um pico é tão provável que esteja no carimbo de data/hora indicado como em qualquer outro lugar. Um valor de confiança de 1,0 indica completo certamente - que um pico é completamente improvável de estar em qualquer outro lugar no complexo de QRS.
<h4>android.hardware.Sensor#TYPE_LOW_LATENCY_OFFBODY_DETECT Sensor.TYPE_LOW_LATENCY_OFFBODY_DETECT:</h4>
Um sensor desse tipo retorna um evento sempre que o dispositivo faz a transição de fora do corpo para o corpo e do corpo para fora do corpo (por exemplo, um dispositivo vestível sendo removido do pulso dispararia um evento que indica uma transição fora do corpo). O evento retornado conterá um único valor para indicar o estado fora do corpo:
<ul><li> values[0]: off-body state</li></ul>
Valores válidos para o estado fora do corpo: <ul><li> 1.0 (o dispositivo está no corpo)</li<>li> 0.0 (o dispositivo está fora do corpo)</li></ul>
Quando um sensor desse tipo é ativado, ele deve fornecer o evento inicial no corpo ou fora do corpo que representa o estado atual do dispositivo dentro de 5 segundos após a ativação do sensor.
Esse sensor deve ser capaz de detectar e relatar uma transição do corpo para fora do corpo dentro de 3 segundos após o dispositivo ser removido do corpo e deve ser capaz de detectar e relatar uma transição fora do corpo para o corpo dentro de 5 segundos após o dispositivo ser colocado novamente no corpo.
<h4>android.hardware.Sensor#TYPE_ACCELEROMETER_UNCALIBRATED Sensor.TYPE_ACCELEROMETER_UNCALIBRATED:</h4> Todos os valores estão em unidades SI (m/s^2)
Semelhante a android.hardware.Sensor#TYPE_ACCELEROMETER, a calibragem de fábrica e a compensação de temperatura ainda serão aplicadas à medida "não recalibrado".
A matriz de valores é mostrada abaixo: <ul><li> values[0] = x_uncalib without bias compensation </li<>li> values[1] = y_uncalib without bias compensation </li><li> values[2] = z_uncalib without bias compensation </li<>values>[3] = estimated x_bias </li<>li> values[4] = estimated y_bias </li><li> values[5] = estimated z_bias </li></ul>
x_uncalib, y_uncalib, z_uncalib são a aceleração medida em eixos X, Y, Z semelhantes aos android.hardware.Sensor#TYPE_ACCELEROMETEReixos , sem qualquer correção de viés (compensação de viés de fábrica e qualquer compensação de temperatura é permitida). x_bias, y_bias, z_bias são os preconceitos estimados.
<h4>android.hardware.Sensor#TYPE_HINGE_ANGLE Sensor.TYPE_HINGE_ANGLE:</h4>
Um sensor desse tipo mede o ângulo, em graus, entre duas partes integrais do dispositivo. Espera-se que o movimento de uma dobradiça medida por esse tipo de sensor altere as maneiras pelas quais o usuário pode interagir com o dispositivo, por exemplo, desdobrando ou revelando uma exibição.
<ul><li> values[0]: ângulo da dobradiça medido entre 0 e 360 graus inclusive</li></ul>
<h4>android.hardware.Sensor#TYPE_HEAD_TRACKER Sensor.TYPE_HEAD_TRACKER:</h4>
Um sensor desse tipo mede a orientação da cabeça de um usuário em relação a um quadro de referência arbitrária, bem como a taxa de rotação.
Os eventos produzidos por esse sensor seguem um quadro de coordenadas especial centrado na cabeça, em que: ul>li O eixo X cruza as orelhas do usuário, com a direção X positiva estendendo-se para fora da orelha< direita do usuário/li li<>> O eixo Y cruza da parte de trás da cabeça do usuário pelo nariz, com a direção positiva estendendo-se para fora do nariz,><< e o plano X/Y sendo nominalmente paralelo ao chão quando o usuário está ereto e olhando para frente</li li>>< O eixo Z cruza do pescoço pela parte superior da cabeça do usuário, com a direção positiva estendendo-se para fora da parte superior da cabeça</li></ul>
Os dados são fornecidos na representação de vetor Euler, que é um vetor cuja direção indica o eixo de rotação e magnitude indica o ângulo a ser girado em torno desse eixo, em radianos.
Os três primeiros elementos fornecem a transformação do quadro de referência (arbitrário, possivelmente descompasso lento) para o quadro de cabeçalho. A magnitude desse vetor está no intervalo [0, π] radianos, enquanto o valor dos eixos individuais está no intervalo [-π, π]. Os próximos três elementos, opcionalmente, fornecem a velocidade rotacional estimada da cabeça do usuário em relação a si mesmo, em radianos por segundo. Se um determinado sensor não der suporte à determinação de velocidade, esses elementos serão definidos como 0.
<ul>li values[0] : componente X do vetor Euler que representa valores de rotação</li<>li>[1] : componente Y do vetor Euler representando valores de rotação</li><li>[2] : componente Z do vetor Euler representando valores de rotação</li<>li>[3] : componente X do vetor Euler que representa a velocidade angular (se compatível, caso contrário 0)</li li><>>< values[4] : componente Y do vetor Euler que representa a velocidade angular (se houver suporte, caso contrário 0)</li><> valores[5] : componente Z do vetor Euler que representa a velocidade angular (se houver suporte, caso contrário 0)</li></ul>
<h4>android.hardware.Sensor#TYPE_ACCELEROMETER_LIMITED_AXES Sensor.TYPE_ACCELEROMETER_LIMITED_AXES: </h4> Equivalente a TYPE_ACCELEROMETER, mas casos de suporte em que não há suporte para um ou dois eixos.
Os últimos três valores representam se há suporte para o valor de aceleração de um determinado eixo. Um valor de 1,0 indica que o eixo tem suporte, enquanto um valor de 0 significa que ele não tem suporte. Os eixos com suporte devem ser determinados em tempo de build e esses valores não são alterados durante o runtime.
Os valores de aceleração para eixos sem suporte são definidos como 0.
Similar a android.hardware.Sensor#TYPE_ACCELEROMETER.
<ul>li values[0]: Aceleração menos Gx no eixo x (se compatível)</li<>valores li>[1]: Aceleração menos Giro no eixo y (se compatível)</li><li> values[2]: Aceleração menos Gz no eixo z (se compatível)</li><valores li>[3]: aceleração com suporte para valores x-axis</li<>li>[4]: aceleração com suporte para valores y-axis</li<>li>[5]:>< Aceleração com suporte para z-axis</li></ul>
<h4>android.hardware.Sensor#TYPE_GYROSCOPE_LIMITED_AXES Sensor.TYPE_GYROSCOPE_LIMITED_AXES: </h4> Equivalente a TYPE_GYROSCOPE, mas casos de suporte em que não há suporte para um ou dois eixos.
Os últimos três valores representam se há suporte para o valor de velocidade angular de um determinado eixo. Um valor de 1,0 indica que o eixo tem suporte, enquanto um valor de 0 significa que ele não tem suporte. Os eixos com suporte devem ser determinados em tempo de build e esses valores não são alterados durante o runtime.
Os valores de velocidade angular para eixos sem suporte são definidos como 0.
Similar a android.hardware.Sensor#TYPE_GYROSCOPE.
<ul>li values[0]: velocidade angular em torno do eixo x (se houver suporte)</li<>li> values[1]: velocidade angular em torno do eixo y (se compatível)</li><valores li>[2]: velocidade angular em torno do eixo z (se supported)</li>>< values[3]: velocidade angular com suporte para valores x-axis</li><li>[4]: velocidade angular compatível com valores y-axis</li<>li>[5]: velocidade angular com suporte para z-axis</li/<>>< ul>
<h4>android.hardware.Sensor#TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED Sensor.TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED: </h4> Equivalente a TYPE_ACCELEROMETER_UNCALIBRATED, mas casos de suporte em que não há suporte para um ou dois eixos.
Os últimos três valores representam se há suporte para o valor de aceleração de um determinado eixo. Um valor de 1,0 indica que o eixo tem suporte, enquanto um valor de 0 significa que ele não tem suporte. Os eixos com suporte devem ser determinados em tempo de build e esses valores não são alterados durante o runtime.
Os valores de aceleração e os valores de viés para eixos sem suporte são definidos como 0.
<ul>li values[0]: x_uncalib sem compensação de viés (se suportado)</li><li> values[1]: y_uncalib sem compensação de viés (se compatível)</li<>li> values[2]: z_uncalib sem compensação de viés (se compatível)</li><> values[3]: estimado x_bias (se compatível)</li><valores li>[4]: estimado y_bias (se houver suporte)</li>>< values[5]: estimado z_bias (se compatível)</li><><li> values[6]: aceleração com suporte para valores de eixo< x/li>><[7]: aceleração com suporte para valores y-axis</li<>li>[8]: aceleração com suporte para z-axis</li></ul>
<h4>android.hardware.Sensor#TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED Sensor.TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED: </h4> Equivalente a TYPE_GYROSCOPE_UNCALIBRATED, mas casos de suporte em que não há suporte para um ou dois eixos.
Os últimos três valores representam se há suporte para o valor de velocidade angular de um determinado eixo. Um valor de 1,0 indica que o eixo tem suporte, enquanto um valor de 0 significa que ele não tem suporte. Os eixos com suporte devem ser determinados em tempo de build e esses valores não são alterados durante o runtime.
Os valores de velocidade angular e os valores de descompasso para eixos sem suporte são definidos como 0.
<ul>li values[0]: velocidade angular (compensação de descompasso w/o) ao redor do eixo X (se houver suporte)</li<>> valores[1]: velocidade angular (compensação de descompasso do w/o) ao redor do eixo Y (se compatível)</li><li> values[2]: velocidade angular (compensação de descompasso w/o) ao redor do eixo Z (se houver suporte)</li>>< valores[3]: descompasso estimado em torno do eixo X (se compatível)</li<>valores li>[4]:>< descompasso estimado em torno do eixo Y (se houver suporte)</li<>li> values[5]: descompasso estimado em torno do eixo Z (se compatível)</li<>> valores li[6]: velocidade angular compatível com valores de eixo< x/li<>li>[7]: velocidade angular compatível com valores de eixo< y/li><>[8]: velocidade angular compatível com eixo< z/li<>/ul></p>
<h4>android.hardware.Sensor#TYPE_HEADING Sensor.TYPE_HEADING:</h4>
Um sensor desse tipo mede a direção em que o dispositivo está apontando em relação ao norte verdadeiro em graus. O valor deve estar entre 0,0 (inclusivo) e 360,0 (exclusivo), com 0 indicando norte, 90 leste, 180 sul e 270 oeste.
A precisão é definida em 68% confiança. No caso em que a distribuição subjacente é considerada normal gaussiana, isso seria considerado um desvio padrão. Por exemplo, se o título retornar 60 graus e a precisão retornar 10 graus, haverá uma probabilidade de 68% do título verdadeiro estar entre 50 graus e 70 graus.
<ul><li> values[0]: Título medido em graus.</li><li> values[1]: precisão do título em graus.</li></ul>
Java documentação para android.hardware.SensorEvent.values.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.