SensorEvent.Values Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
La longitud y el contenido de la #values values
matriz dependen del tipo que android.hardware.Sensor sensor
se está supervisando (consulte también SensorEvent
para obtener una definición del sistema de coordenadas utilizado).
[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 de propiedad
- Atributos
Comentarios
La longitud y el contenido de la #values values
matriz dependen del tipo que android.hardware.Sensor sensor
se está supervisando (consulte también SensorEvent
para obtener una definición del sistema de coordenadas utilizado).
<h4>android.hardware.Sensor#TYPE_ACCELEROMETER Sensor.TYPE_ACCELEROMETER
:</h4> Todos los valores están en unidades SI (m/s^2)
<ul>li values[0]: Aceleración menos Gx en el eje x /li><> valores li[1]: Aceleración menos Gy en el eje <Y /li>>< valores [2]: Aceleración menos Gz en el eje <<z /li></ul><>
Un sensor de este tipo mide la aceleración aplicada al dispositivo (<b>Ad</b>). Conceptualmente, lo hace midiendo las fuerzas aplicadas al propio sensor (<b>Fs</b>) utilizando la relación:
<b><center>Ad = - ∑ Fs/mass</center></b>
En concreto, la fuerza de gravedad siempre influye en la aceleración medida:
<b><center>Ad = -g - ∑ F/mass</center></b>
Por esta razón, cuando el dispositivo está sentado en una mesa (y obviamente no acelera), el acelerómetro lee una magnitud de <b>g</b> = 9,81 m/s^2
Del mismo modo, cuando el dispositivo está en caída libre y, por lo tanto, se acelera peligrosamente hacia tierra a 9,81 m/s^2, su acelerómetro lee una magnitud de 0 m/s^2.
Debe ser evidente que para medir la aceleración real del dispositivo, se debe eliminar la contribución de la fuerza de gravedad. Esto se puede lograr aplicando un filtro de paso alto . Por el contrario, se puede usar un filtro de paso bajo para aislar la fuerza de gravedad.
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>Ejemplos</u>: <ul><li>Cuando el dispositivo se encuentra plano en una tabla y se inserta en su lado izquierdo hacia la derecha, el valor de aceleración x es positivo.</Li>
<li>Cuando el dispositivo se encuentra plano en una mesa, el valor de aceleración es +9,81, que corresponde a la aceleración del dispositivo (0 m/s^2) menos la fuerza de gravedad (-9,81 m/s^2).</Li>
<li>Cuando el dispositivo se encuentra plano en una mesa y se empuja hacia el cielo con una aceleración de A m/s^2, el valor de aceleración es igual a A+9.81 que corresponde a la aceleración del dispositivo (+A m/s^2) menos la fuerza de gravedad (-9,81 m/s^2).</li></ul>
<h4>android.hardware.Sensor#TYPE_MAGNETIC_FIELD Sensor.TYPE_MAGNETIC_FIELD
:</h4> Todos los valores están en micro-Tesla (uT) y miden el campo magnético ambiente en el eje X, Y y Z.
<h4>android.hardware.Sensor#TYPE_GYROSCOPE Sensor.TYPE_GYROSCOPE
: </h4> Todos los valores están en radianes/segundo y miden la velocidad de rotación alrededor del eje local X, Y y Z del dispositivo. El sistema de coordenadas es el mismo que se usa para el sensor de aceleración. La rotación es positiva en la dirección en sentido contrario a las agujas del reloj. Es decir, un observador que busca desde alguna ubicación positiva en el eje x, y o z en un dispositivo situado en el origen notificaría una rotación positiva si el dispositivo parecía girar en sentido contrario a las agujas del reloj. Tenga en cuenta que se trata de la definición matemática estándar de rotación positiva y no está de acuerdo con la definición del rollo dado anteriormente. <ul>li values[0]: velocidad angular alrededor del eje x /li><> valores li[1]: Velocidad angular alrededor de los valores de y-axis </li><li>[2]: Velocidad angular alrededor del eje <<Z /li<>/ul><>
Normalmente, la salida del giroscopio se integra con el tiempo para calcular una rotación que describa el cambio de ángulos en el paso de tiempo, por ejemplo:
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;
}
En la práctica, el ruido y el desplazamiento del giroscopio introducirán algunos errores que deben compensarse. Esto suele hacerse con la información de otros sensores, pero está fuera del ámbito de este documento.
<h4>android.hardware.Sensor#TYPE_LIGHT Sensor.TYPE_LIGHT
:</h4><ul li><>values[0]: Nivel de luz ambiente en unidades <si lux /li></ul>
<h4>android.hardware.Sensor#TYPE_PRESSURE Sensor.TYPE_PRESSURE
:</h4><ul li><>values[0]: Presión atmosférica en hPa (milibar) </li></ul>
<h4>android.hardware.Sensor#TYPE_PROXIMITY Sensor.TYPE_PROXIMITY
: </h4>
<ul><li>values[0]: distancia del sensor de proximidad medida en centímetros </li></ul>
<b>Nota:</b> Algunos sensores de proximidad solo admiten una medida binaria cercana o lejana . En este caso, el sensor debe notificar su android.hardware.Sensor#getMaximumRange() maximum range
valor en estado lejano y un valor menor en el estado cercano .
<h4>android.hardware.Sensor#TYPE_GRAVITY Sensor.TYPE_GRAVITY
:</h4>
Vector tridimensional que indica la dirección y la magnitud de la gravedad. Las unidades son m/s^2. El sistema de coordenadas es el mismo que el sensor de aceleración.
<b>Nota:</b> Cuando el dispositivo está en reposo, la salida del sensor de gravedad debe ser idéntica a la del acelerómetro.
<h4>android.hardware.Sensor#TYPE_LINEAR_ACCELERATION Sensor.TYPE_LINEAR_ACCELERATION
: </h4> Vector tridimensional que indica la aceleración a lo largo de cada eje del dispositivo, no incluida la gravedad. Todos los valores tienen unidades de m/s^2. El sistema de coordenadas es el mismo que el sensor de aceleración.
La salida del acelerómetro, la gravedad y los sensores de aceleración lineal deben obedecer la siguiente relación:
<ul>acceleration = gravity + linear-acceleration</ul>
<h4>android.hardware.Sensor#TYPE_ROTATION_VECTOR Sensor.TYPE_ROTATION_VECTOR
:</h4>
El vector de rotación representa la orientación del dispositivo como una combinación de un ángulo y un eje, en el que el dispositivo ha girado a través de un ángulo θ alrededor de un eje < x, y, z>.
Los tres elementos del vector de rotación son < x*sin(θ/2), y*sin(θ/2), z*sin(θ/2)>, de modo que la magnitud del vector de rotación es igual a sin(θ/2) y la dirección del vector de rotación es igual a la dirección del eje de rotación.
</p>Los tres elementos del vector de rotación son iguales a los tres últimos componentes de una <unidad< b>/b> cuaternión < cos(θ/2), x*sin(θ/2), y*sin(θ/2), z*sin(θ/2)>.</p>
Los elementos del vector de rotación no tienen unidad. El eje x,y y y se definen de la misma manera que el sensor de aceleración.
El sistema de coordenadas de referencia se define como una base ortonormal directa, donde: </p>
<ul><li>X se define como el producto <vectorial b>Y.Z</b> (Es tangencial al suelo en la ubicación actual del dispositivo y aproximadamente puntos este).</li li><>Y es tangente al suelo en la ubicación actual del dispositivo y apunta hacia el norte magnético.</li li><Z>apunta hacia el cielo y es perpendicular al suelo.</li></ul>
<center><img src=".. /.. /.. /images/axis_globe.png" alt="Diagrama del sistema de coordenadas del 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]: estimated heading Accuracy (in radians) (-1 if unavailable)</li></ul><>
values[3], originalmente opcional, siempre estará presente desde el nivel 18 del SDK en adelante. values[4] es un nuevo valor que se ha agregado en el nivel 18 del SDK.
<h4>android.hardware.Sensor#TYPE_ORIENTATION Sensor.TYPE_ORIENTATION
:</h4> Todos los valores son ángulos en grados.
<ul><li> values[0]: Azimuth, ángulo entre la dirección norte magnética y el eje Y, alrededor del eje Z (de 0 a 359). 0=Norte, 90=Este, 180=Sur, 270=Oeste </p>
valores[1]: Inclinación, rotación alrededor del eje X (-180 a 180), con valores positivos cuando el eje Z mueve <b>hacia</b> hacia el eje y.
valores[2]: Girar, girar alrededor del eje Y (-90 a 90) aumentando a medida que el dispositivo se mueve en el sentido de las agujas del reloj.
</ul>
<b>Nota:</b> Esta definición es diferente de <b>yaw, inclinación y rollo</b> utilizado en la aviación donde el eje X está a lo largo del lado largo del plano (cola a nariz).
<b>Nota:</b> Este tipo de sensor existe por motivos heredados, use android.hardware.Sensor#TYPE_ROTATION_VECTOR rotation vector sensor type
y android.hardware.SensorManager#getRotationMatrix getRotationMatrix()
junto con android.hardware.SensorManager#remapCoordinateSystem remapCoordinateSystem()
y android.hardware.SensorManager#getOrientation getOrientation()
calcule estos valores en su lugar.
<b>Nota importante:</b> Por razones históricas, el ángulo de giro es positivo en la dirección de las agujas del reloj (en términos matemáticos, debe ser positivo en la dirección en sentido contrario a las agujas del reloj).
<h4>android.hardware.Sensor#TYPE_RELATIVE_HUMIDITY Sensor.TYPE_RELATIVE_HUMIDITY
:</h4><ul><li> values[0]: Relativa humedad del aire ambiente en porcentaje </li></ul>
Cuando se mide la humedad ambiental relativa del aire y la temperatura ambiente, se puede calcular el punto dew y la humedad absoluta.
<u>Punto dew</u>
El punto dew es la temperatura a la que se debe refrigerar una parcela determinada de aire, a presión barométrica constante, para que el vapor de agua se comprima en agua.
<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 en ° C</dd><dt>RH</dt><dd>humedad relativa real en %</dd><dt>m</dt<>dd>17.62</dd><dt>T<sub>n</sub></dt><dd>243.12 ° C</dd></dl>
Por ejemplo:
h = Math.log(rh / 100.0) + (17.62 * t) / (243.12 + t);
td = 243.12 * h / (17.62 - h);
<u>Humedad< absoluta/u>
La humedad absoluta es la masa de vapor de agua en un volumen determinado de aire seco. La unidad es 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>humedad absoluta en g/m<sup>3</sup></dd><dt>t</dt><dd>temperatura real en ° C</dd><dt>RH</dt><dd>humedad relativa real en %</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 ejemplo:
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 (habitación) en grados Celsius.</li></ul>
<h4>android.hardware.Sensor#TYPE_MAGNETIC_FIELD_UNCALIBRATED Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED
:</h4> Similar a android.hardware.Sensor#TYPE_MAGNETIC_FIELD
, pero la calibración de hierro duro se notifica por separado en lugar de incluirse en la medida. La calibración de fábrica y la compensación de temperatura se seguirán aplicando a la medida "no calibrada". Suposiciones de que el campo magnético se debe a los polos de la Tierra se evita.
La matriz de valores se muestra a continuación: ul>li values[0] = x_uncalib </li<>> values[1] = y_uncalib </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 son el campo magnético medido en ejes X, Y, Z. Se aplican calibraciones de hierro suave y temperatura. Pero no se aplica la calibración de hierro duro. Los valores están en micro-Tesla (uT).
x_bias, y_bias, z_bias dar el sesgo de hierro estimado en ejes X, Y, Z. Cada campo es un componente de la calibración de hierro duro estimado. Los valores están en micro-Tesla (uT).
Hierro duro : estas distorsiones surgen debido al hierro magnetizado, acero o imanes permanentes en el dispositivo. Hierro blando: estas distorsiones surgen debido a la interacción con el campo magnético de la tierra.
<h4>android.hardware.Sensor#TYPE_GAME_ROTATION_VECTOR Sensor.TYPE_GAME_ROTATION_VECTOR
:</h4> Idéntico a android.hardware.Sensor#TYPE_ROTATION_VECTOR
excepto que no usa el campo geomagnético. Por lo tanto, el eje Y no apunta al norte, sino a alguna otra referencia, esa referencia se permite desfase por el mismo orden de magnitud que el desfase de giroscopio alrededor del eje Z.
En el caso ideal, un teléfono girado y volviendo a la misma orientación real notificará el mismo vector de rotación del juego (sin usar el campo geomagnético de la tierra). Sin embargo, la orientación puede desfase un poco a lo largo del tiempo. Consulte android.hardware.Sensor#TYPE_ROTATION_VECTOR
para obtener una descripción detallada de los valores. Este sensor no tendrá el valor estimado de precisión del encabezado.
<h4>android.hardware.Sensor#TYPE_GYROSCOPE_UNCALIBRATED Sensor.TYPE_GYROSCOPE_UNCALIBRATED
:</h4> Todos los valores están en radianes/segundo y miden la velocidad de rotación alrededor del eje X, Y y Z. También se notifica una estimación del desfase en cada eje.
No se realiza ninguna compensación de giro giratorio. La calibración de fábrica y la compensación de temperatura todavía se aplican a la velocidad de rotación (velocidades angulares).
El sistema de coordenadas es el mismo que se usa para la android.hardware.Sensor#TYPE_ACCELEROMETER
rotación es positivo en la dirección en sentido contrario a las agujas del reloj (regla de la derecha). Es decir, un observador que busca desde alguna ubicación positiva en el eje x, y o z en un dispositivo situado en el origen notificaría una rotación positiva si el dispositivo parecía girar en sentido contrario a las agujas del reloj. El intervalo sería al menos 17,45 rad/s (es decir: ~1000 deg/s). <ul>li values[0] : velocidad angular (compensación de desfase w/o) alrededor del eje X en rad/s /li>>< values[1] : velocidad angular (compensación de desfase w/o) alrededor del eje Y en los valores de rad/s /li li[2] : velocidad angular (compensación de desfase w/o<) alrededor del eje Z en los valores de rad/s </li<>>[3] : desviación estimada alrededor del eje X en valores rad/s <</li<><>>>[4] :>< desviación estimada alrededor del eje Y en los valores de rad/s </li><li>[5] : desviación estimada alrededor del eje Z en rad/s </li></ul>
<b>Pro Tip:</b> Use siempre la longitud de la matriz de valores mientras realiza operaciones en ella. En versiones anteriores, esto solía ser siempre 3 que ha cambiado ahora.
<h4>android.hardware.Sensor#TYPE_POSE_6DOF Sensor.TYPE_POSE_6DOF
:</h4>
Un evento TYPE_POSE_6DOF consta de un giro expresado como cuaternión y una traducción expresada en unidades DE SI. El evento también contiene una rotación diferencial y una traducción que muestran cómo ha cambiado la posición del dispositivo desde la posición numerada de secuencia anterior. El evento usa los ejes del sensor android cañónico.
<ul>li values[0]: x*sin(θ/2) </li><li> values[1]: y*sin(θ/2) </li li>>< values[2]: z*sin(θ/2) </li>>< li values[3]: cos(θ/2) </li><>
<li> values[4]: Traducción a lo largo del eje X desde un origen arbitrario. </li><li> values[5]: Traducción a lo largo del eje y desde un origen arbitrario. </li><li> values[6]: Traducción a lo largo del eje z desde un origen arbitrario. </Li>
<li> values[7]: Delta quaternion rotation x*sin(θ/2) </li li<>> values[8]: Delta quaternion rotation y*sin(θ/2) </li li li><> values[9]: Delta quaternion rotation z*sin(θ/2) </li<>> li values[10]: Delta quaternion rotation cos(θ/2) </li>
<li> values[11]: Traducción delta a lo largo del eje x. </li><li> values[12]: Traducción delta a lo largo del eje y. </li><li> values[13]: Traducción delta a lo largo del eje z. </Li>
<li> values[14]: Número <de secuencia /li>
</ul>
<h4>android.hardware.Sensor#TYPE_STATIONARY_DETECT Sensor.TYPE_STATIONARY_DETECT
:</h4>
Se produce un evento TYPE_STATIONARY_DETECT si el dispositivo ha estado estacionado durante al menos 5 segundos con una latencia máxima de 5 segundos adicionales. ie: puede tardar entre 5 y 10 segundos en descansar el dispositivo para desencadenar este evento.
El único valor permitido es 1.0.
<ul><li> values[0]: 1.0 </li></ul>
<h4>android.hardware.Sensor#TYPE_MOTION_DETECT Sensor.TYPE_MOTION_DETECT
:</h4>
Se produce un evento TYPE_MOTION_DETECT si el dispositivo está en movimiento durante al menos 5 segundos con una latencia máxima de 5 segundos adicionales. ie: puede tardar entre 5 y 10 segundos en descansar el dispositivo para desencadenar este evento.
El único valor permitido es 1.0.
<ul><li> values[0]: 1.0 </li></ul>
<h4>android.hardware.Sensor#TYPE_HEART_BEAT Sensor.TYPE_HEART_BEAT
:</h4>
Un sensor de este tipo devuelve un evento cada vez que se detecta un pico de latido cardíaco.
Pico aquí idealmente corresponde al pico positivo en el complejo QRS de una señal ECG.
<ul><li> values[0]: confidence</li></ul>
Un valor de confianza de 0,0 indica una incertidumbre completa: que un pico es tan probable que esté en la marca de tiempo indicada como en cualquier otro lugar. Un valor de confianza de 1,0 indica ciertamente completo, que es poco probable que un pico sea completamente distinto en el complejo QRS.
<h4>android.hardware.Sensor#TYPE_LOW_LATENCY_OFFBODY_DETECT Sensor.TYPE_LOW_LATENCY_OFFBODY_DETECT
:</h4>
Un sensor de este tipo devuelve un evento cada vez que el dispositivo pasa de fuera del cuerpo al cuerpo y del cuerpo a fuera del cuerpo (por ejemplo, un dispositivo portátil que se quita de la muñeca desencadenaría un evento que indica una transición fuera del cuerpo). El evento devuelto contendrá un único valor para indicar el estado fuera del cuerpo:
<ul><li> values[0]: off-body state</li></ul>
Valores válidos para el estado fuera del cuerpo: ul>li 1.0 (el dispositivo está en el cuerpo)</li li><> 0.0 (el dispositivo está fuera del cuerpo)</li></ul><<>
Cuando se activa un sensor de este tipo, debe entregar el evento inicial en el cuerpo o fuera del cuerpo que representa el estado actual del dispositivo en un plazo de 5 segundos después de activar el sensor.
Este sensor debe ser capaz de detectar e informar de una transición en el cuerpo a fuera del cuerpo dentro de 1 segundo del dispositivo que se va a quitar del cuerpo, y debe ser capaz de detectar e informar de una transición fuera del cuerpo en un plazo de 5 segundos del dispositivo que se vuelve a colocar en el cuerpo.
<h4>android.hardware.Sensor#TYPE_ACCELEROMETER_UNCALIBRATED Sensor.TYPE_ACCELEROMETER_UNCALIBRATED
:</h4> Todos los valores están en unidades SI (m/s^2)
De forma similar a android.hardware.Sensor#TYPE_ACCELEROMETER
, la calibración de fábrica y la compensación de temperatura se seguirán aplicando a la medida "sin almacenar".
La matriz de valores se muestra a continuación: ul>li values[0] = x_uncalib without bias compensation </li>>< values[1] = y_uncalib without bias compensation </li>>< values[2] = z_uncalib without bias compensation </li li values[3] = estimated x_bias </li>>< li values[4] = estimated y_bias </li><> values[5] = estimated z_bias </li><><>/ul><<>
x_uncalib, y_uncalib, z_uncalib son la aceleración medida en ejes X, Y, Z similares a , android.hardware.Sensor#TYPE_ACCELEROMETER
sin ninguna corrección de sesgo (se permite la compensación de sesgo de fábrica y cualquier compensación de temperatura). x_bias, y_bias, z_bias son los sesgos estimados.
<h4>android.hardware.Sensor#TYPE_HINGE_ANGLE Sensor.TYPE_HINGE_ANGLE
:</h4>
Un sensor de este tipo mide el ángulo, en grados, entre dos partes integrales del dispositivo. Se espera que el movimiento de una bisagra medida por este tipo de sensor modifique las formas en las que el usuario puede interactuar con el dispositivo, por ejemplo, mediante el despliegue o la revelación de una pantalla.
<ul><li> values[0]: ángulo de bisagra medido entre 0 y 360 grados inclusive</li></ul>
<h4>android.hardware.Sensor#TYPE_HEAD_TRACKER Sensor.TYPE_HEAD_TRACKER
:</h4>
Un sensor de este tipo mide la orientación de la cabeza de un usuario en relación con un marco de referencia arbitrario, así como la velocidad de rotación.
Los eventos producidos por este sensor siguen un marco de coordenada centrado en la cabeza especial, donde: ul>li El eje X cruza a través de las orejas del usuario, con la dirección X positiva que se extiende fuera del oído< derecho del usuario/li Li<>> El eje Y cruza desde la parte posterior de la cabeza del usuario a través de su nariz, con la dirección positiva que se extiende fuera de la nariz,><< y el plano X/Y que es nominalmente paralelo al suelo cuando el usuario está vertical y mirando hacia delante</li li><> El eje Z cruza desde el cuello a través de la parte superior de la cabeza del usuario, con la dirección positiva que se extiende desde la parte superior de la cabeza</li></ul>
Los datos se proporcionan en la representación vectorial de Euler, que es un vector cuya dirección indica el eje de rotación y magnitud indica el ángulo para girar alrededor de ese eje, en radianes.
Los tres primeros elementos proporcionan la transformación del marco de referencia (arbitrario, posiblemente desfase lentamente) al marco principal. La magnitud de este vector está en el intervalo [0, π] radianes, mientras que el valor de los ejes individuales está en el intervalo [-π, π]. Los tres elementos siguientes proporcionan opcionalmente la velocidad de rotación estimada de la cabeza del usuario en relación con sí misma, en radianes por segundo. Si un sensor determinado no admite la determinación de la velocidad, estos elementos se establecen en 0.
<ul>li values[0] : componente X del vector euler que representa los valores de rotación/li><>[1] : componente Y del vector euler que representa los valores de rotación</li><>[2] : componente Z del vector euler que representa los valores de rotación</<li<>>[3] : componente X del vector euler que representa la velocidad angular (si se admite, de lo contrario, 0)</li li>><>< values[4] : componente Y del vector euler que representa la velocidad angular (si se admite, de lo contrario, 0)</li>>< valores[5] : componente Z del vector euler que representa la velocidad angular (si se admite, de lo contrario, 0)</li></ul>
<h4>android.hardware.Sensor#TYPE_ACCELEROMETER_LIMITED_AXES Sensor.TYPE_ACCELEROMETER_LIMITED_AXES
: </h4> Equivalente a TYPE_ACCELEROMETER, pero se admiten casos en los que no se admiten uno o dos ejes.
Los tres últimos valores representan si se admite el valor de aceleración de un eje determinado. Un valor de 1.0 indica que se admite el eje, mientras que un valor de 0 significa que no se admite. Los ejes admitidos deben determinarse en tiempo de compilación y estos valores no cambian durante el tiempo de ejecución.
Los valores de aceleración de los ejes que no se admiten se establecen en 0.
Similar a android.hardware.Sensor#TYPE_ACCELEROMETER
.
<ul>li values[0]: Aceleración menos Gx en el eje x (si se admite)/li>>< valores li[1]: Aceleración menos Gy en el eje Y (si se admite)</li valores li[2]: Aceleración menos Gz en el eje Z (si se admite)<</li>>< valores li[3]: Aceleración compatible con los valores x-axis</li li<>>[4]: Aceleración compatible con los valores y-axis</li<>> li>><[5]:>< Aceleración admitida para z-axis</li></ul>
<h4>android.hardware.Sensor#TYPE_GYROSCOPE_LIMITED_AXES Sensor.TYPE_GYROSCOPE_LIMITED_AXES
: </h4> Equivalente a TYPE_GYROSCOPE, pero se admiten casos en los que no se admiten uno o dos ejes.
Los tres últimos valores representan si se admite el valor de velocidad angular de un eje determinado. Un valor de 1.0 indica que se admite el eje, mientras que un valor de 0 significa que no se admite. Los ejes admitidos deben determinarse en tiempo de compilación y estos valores no cambian durante el tiempo de ejecución.
Los valores de velocidad angular de los ejes que no se admiten se establecen en 0.
Similar a android.hardware.Sensor#TYPE_GYROSCOPE
.
<ul>li values[0]: velocidad angular alrededor del eje x (si se admite)/li>>< valores li[1]: velocidad angular alrededor del eje Y (si se admite)</li>>< valores li[2]: velocidad angular alrededor del eje z (si se admite)<</li<>> valores li[3]: velocidad angular admitida para los valores de eje< x/li<>>[4]: Velocidad angular admitida para los valores de eje< y/li[5]: velocidad angular admitida para los valores de eje y/li<>>[5]: velocidad angular admitida para el eje< Z/li/<>>< Ul>
<h4>android.hardware.Sensor#TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED Sensor.TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED
: </h4> Equivalente a TYPE_ACCELEROMETER_UNCALIBRATED, pero se admiten casos en los que no se admiten uno o dos ejes.
Los tres últimos valores representan si se admite el valor de aceleración de un eje determinado. Un valor de 1.0 indica que se admite el eje, mientras que un valor de 0 significa que no se admite. Los ejes admitidos deben determinarse en tiempo de compilación y estos valores no cambian durante el tiempo de ejecución.
Los valores de aceleración y los valores de sesgo de los ejes que no se admiten se establecen en 0.
<ul>li values[0]: x_uncalib sin compensación de sesgo (si se admite)</li>>< valores li[1]: y_uncalib sin compensación de sesgo (si se admite)</li<>> valores li[2]: z_uncalib sin compensación de sesgo (si se admite))/<li>>< li values[3]: estimados x_bias (si se admite)/li>>< valores li[4]: estimados y_bias (si se admite)</li valores li[5]: estimados z_bias (si se admite)<</li>><><><li> values[6]: Aceleración compatible con los valores de x-axis</li<>>[7]: Aceleración compatible con los valores de y-axis</li<>li>[8]: Aceleración admitida 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, pero se admiten casos en los que no se admiten uno o dos ejes.
Los tres últimos valores representan si se admite el valor de velocidad angular de un eje determinado. Un valor de 1.0 indica que se admite el eje, mientras que un valor de 0 significa que no se admite. Los ejes admitidos deben determinarse en tiempo de compilación y estos valores no cambian durante el tiempo de ejecución.
Los valores de velocidad angular y los valores de desfase de los ejes que no se admiten se establecen en 0.
<ul>li values[0]: velocidad angular (compensación de desfase w/o) alrededor del eje X (si se admite)</li<>> valores li[1]: velocidad angular (compensación de desfase w/o) alrededor del eje Y (si se admite)/li valores li[2]: velocidad angular (compensación de desfase w/o) alrededor del eje Z (si se admite)</li>>< valores li[3]: desviación estimada alrededor del eje X (si se admite)<</>><li>>< valores li[4]:>< desviación estimada alrededor del eje Y (si se admite)</li>>< valores li[5]: desviación estimada alrededor del eje Z (si se admite)</valores li>>< li[6]: Velocidad angular admitida para los valores de eje< x/li<>>[7]: Velocidad angular admitida para los valores de eje< y/li><>[8]: Velocidad angular admitida para z-axis</li<>/ul></p>
<h4>android.hardware.Sensor#TYPE_HEADING Sensor.TYPE_HEADING
:</h4>
Un sensor de este tipo mide la dirección en la que el dispositivo apunta con respecto al norte verdadero en grados. El valor debe estar comprendido entre 0,0 (inclusive) y 360,0 (exclusivo), con 0 que indica el norte, 90 este, 180 sur y 270 oeste.
La precisión se define con una confianza del 68 %. En el caso de que se asuma la distribución subyacente normal gaussiana, esto se consideraría una desviación estándar. Por ejemplo, si el encabezado devuelve 60 grados y la precisión devuelve 10 grados, entonces hay una probabilidad del 68 por ciento del encabezado verdadero que está entre 50 grados y 70 grados.
<ul><li> values[0]: Encabezado medido en grados.</li><li> values[1]: Precisión de encabezado en grados.</li></ul>
Documentación de Java para android.hardware.SensorEvent.values
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.