Cómo crear una aplicación que utilice el acelerómetro para determinar en qué dirección de los tres ejes primarios, está moviendo el usuario él dispositivo.
1. 9/26/2011
Sensores
Windows Phone dispone de varios sensores
Permiten determinar la orientación y movimiento del
dispositivo
Es posible acceder a cada sensor
SensorBase<TSensorReading> clase base de APIs
sensores
APIs no permitidas bajo pantalla bloqueada ni
agentes en segundo plano
Acelerómetro Acelerómetro
Determina dirección de movimiento Leer datos del acelerómetro
1. Agregar referencias
Expresa la aceleración como vector tridimensional
Microsoft.Devices.Sensors
Componente X
Microsoft.Xna.Framework (datos = vector 3D XNA)
Componente Y
Componente Z
2. Comprobar si está soportado
Detecta la gravedad y dirección en
que el usuario mueve el dispositivo i f (!Accel erometer.IsSupported)
{
// El di spositivo en el que se está ejecutando l a App no dispone de
// a cel erómetro, lo cual se notificará a l usuario con un mensaje
Mes s ageBox.Show("El dispositivo no dispone de acelerómetro");
}
1
2. 9/26/2011
Acelerómetro Acelerómetro
Leer datos del acelerómetro Leer datos del acelerómetro
3. Inicializar el acelerómetro 4. Iniciar el acelerómetro
i f (a ccelerometer == null) try
{ {
// Instanciar el Acelerómetro accelerometer.Start();
accelerometer = new Accelerometer(); }
accelerometer.TimeBetweenUpdates = TimeSpan.FromMilliseconds(20); catch (InvalidOperationException ex)
accelerometer.CurrentValueChanged+=new EventHandler<SensorReadingEventArgs {
<AccelerometerReading>>(accelerometer_CurrentValueChanged); MessageBox.Show("No se pudo iniciar el acelerómetro.");
} }
Acelerómetro Acelerómetro
Leer datos del acelerómetro Leer datos del acelerómetro
5. Implementar manejador del evento CurrentValueChanged 7. Implementar método para detener el acelerómetro
void accelerometer_CurrentValueChanged(object sender,
if (accelerometer != null)
SensorReadingEventArgs<AccelerometerReading> e)
{
{
// Detener el acelerómetro
// Llamar a la función de actualización del UI pasándole datos del acelerómetro
accelerometer.Stop();
Dispatcher.BeginInvoke(() => UpdateUI(e.SensorReading));
}
}
6. Actualizar el interfaz de usuario con los nuevos datos
private void UpdateUI(AccelerometerReading accelerometerReading) * Nota: para probar una aplicación que lea datos del acelerómetro en el
{ emulador hay que iniciarlo manualmente en las opciones del emulador.
Vector3 acceleration = accelerometerReading.Acceleration;
// Mostrar los valores numéricos
xTextBlock.Text = "X: " + acceleration.X.ToString("0.00");
yTextBlock.Text = "Y: " + acceleration.Y.ToString("0.00");
zTextBlock.Text = "Z: " + acceleration.Z.ToString("0.00");
}
2
3. 9/26/2011
Acelerómetro Recursos
Centro de desarrollo de WP7 en MSDN
http://msdn.microsoft.com/es-es/windowsphone/default.aspx
AppHub
http://create.msdn.com/
Demo: Cómo leer datos del acelerómetro
Windows Phone Developer Blog
http://windowsteamblog.com/windows_phone/b/wpdev
MobileNUG
http://www.mobilenug.es
Forums
http://forums.create.msdn.com/forums/
3