Está en la página 1de 33

Capacidades

avanzadas
Jose Antonio Gallego
Jefe de proyectos
Eduardo Ortega
MVP-Windows Phone
Windows Phone 7.5
Acelermetro
Windows Phone
Sensores
Windows Phone dispone de varios sensores
Permiten determinar la orientacin 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

Windows Phone
Acelermetro
Determina direccin de movimiento
Expresa la aceleracin como vector tridimensional
Componente X
Componente Y
Componente Z
Detecta la direccin en
que el usuario mueve el dispositivo
Windows Phone
Acelermetro
Leer datos del acelermetro
1. Agregar referencias
Microsoft.Devices.Sensors
Microsoft.Xna.Framework (datos = vector3)

2. Comprobar si est soportado
if (!Accelerometer.IsSupported)
{
// El dispositivo en el que se est ejecutando la App no dispone de
// acelermetro, lo cual se notificar al usuario con un mensaje
MessageBox.Show("El dispositivo no dispone de acelermetro");
}
Windows Phone
Acelermetro
Leer datos del acelermetro
3. Inicializar el acelermetro
if (accelerometer == null)
{
// Instanciar el Acelermetro
accelerometer = new Accelerometer();
accelerometer.TimeBetweenUpdates = TimeSpan.FromMilliseconds(20);
accelerometer.CurrentValueChanged+=new EventHandler<SensorReadingEventArgs
<AccelerometerReading>>(accelerometer_CurrentValueChanged);
accelerometer.Start();
}
Windows Phone
Acelermetro
Leer datos del acelermetro
4. Implementar manejador del evento
CurrentValueChanged



5. Actualizar el interfaz de usuario con los nuevos datos
void accelerometer_CurrentValueChanged(object sender,
SensorReadingEventArgs<AccelerometerReading> e)
{
// Llamar a la funcin de actualizacin del UI pasndole datos del acelermetro
Dispatcher.BeginInvoke(() => UpdateUI(e.SensorReading));
}
private void UpdateUI(AccelerometerReading accelerometerReading)
{
Vector3 acceleration = accelerometerReading.Acceleration;
// Mostrar los valores numricos
xTextBlock.Text = "X: " + acceleration.X.ToString("0.00");
yTextBlock.Text = "Y: " + acceleration.Y.ToString("0.00");
zTextBlock.Text = "Z: " + acceleration.Z.ToString("0.00");
}
Demo
Windows Phone 7.5
Acelermetro
8
Windows Phone 7.5
Girscopo
Windows Phone
El girscopo
Determina la velocidad rotacional del dispositivo en
los ejes X, Y, Z.
Los valores obtenidos del sensor del girscopo
determinan la orientacin del dispositivo en el espacio

No todos los dispositivos estn equipados con girscopo
Comprobar si existe el sensor antes de utilizarlo
Windows Phone
Cmo utilizar el girscopo
if (gyroscope == null)
{
gyroscope = new Gyroscope();
gyroscope.TimeBetweenUpdates = TimeSpan.FromMilliseconds(20);
gyroscope.CurrentValueChanged += new
EventHandler<SensorReadingEventArgs<GyroscopeReading>>(gyroscope_CurrentV
alueChanged);
gyroscope.Start();
}
. . .
if (gyroscope != null)
{
gyroscope.Stop();
}
Windows Phone
Cmo utilizar el girscopo


void gyroscope_CurrentValueChanged(object sender,
SensorReadingEventArgs<GyroscopeReading> e)
{
//Procesar los datos ledos del sensor
}
Informacin recuperada:
RotationRate
Timestamp
Velocidad rotacional alrededor de cada eje
del dispositivo (en radianes/seg)
Momento exacto de la lectura de datos
Demo
Windows Phone 7.5
Girscopo
13
Windows Phone 7.5
Magnetmetro
Windows Phone
La brjula
Determina el ngulo de rotacin del dispositivo
respecto al Polo Norte magntico de la Tierra.
Se pueden medir tambin las fuerzas magnticas
alrededor del dispositivo
Es necesario calibrarla con frecuencia

No todos los dispositivos estn equipados con brjula
Comprobar si existe el sensor antes de utilizarlo
Windows Phone
Cmo utilizar la brjula
if (compass == null)
{
compass = new Compass();
compass.TimeBetweenUpdates = TimeSpan.FromMilliseconds(1);
compass.CurrentValueChanged += new
EventHandler<SensorReadingEventArgs<CompassReading>>(compass_Current
ValueChanged);
compass.Start();
}
. . .
if (compass != null)
{
compass.Stop();
}
Windows Phone
Cmo utilizar la brjula


void compass_CurrentValueChanged(object sender,
SensorReadingEventArgs<CompassReading> e)
{
//Procesar los datos ledos del sensor
}
Informacin recuperada:
HeadingAccuracy
MagneticHeading
MagnetometerReading
Timestamp
TrueHeading
Precisin (en grados) del rumbo
Rumbo (en grados) en sentido horario
respecto al Polo Norte Magntico
Datos ledos del magnetmetro (en microteslas)
Momento exacto de la lectura de datos
Rumbo (en grados) en sentido horario desde el
Norte geogrfico
Demo
Windows Phone 7.5
Girscopo
18
Windows Phone 7.5
GPS y Bing Maps
Windows Phone
Servicio de localizacin
El servicio de localizacin en WP7 obtiene los datos de
posicionamiento de:
GPS
WIFI
Radio GSM
El sistema busca el equilibrio entre consumo de batera y
rendimiento, en funcin de las necesidades de la aplicacin
Interfaz de cdigo orientado a eventos administrados
Windows Phone
Utilizar el servicio de localizacin
1. Agregar referencia:
System.Device.dll

2. Directiva Using:
using System.Device.Location

3. Aadir objeto GeoCoordinateWatcher
public partial class MainPage : PhoneApplicationPage
{
GeoCoordinateWatcher watcher;
}



Windows Phone
Aplicacin con localizacin
opcional
private void btnIniciar_Click(object sender, RoutedEventArgs e)
{
if (watcher == null)
{
watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
watcher.MovementThreshold = 20;
watcher.StatusChanged += new
EventHandler<GeoPositionStatusChangedEventArgs>(watcher_StatusChanged
);
watcher.PositionChanged += new
EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_Posi
tionChanged);
}
watcher.Start();
}

void watcher_PositionChanged(object sender,
GeoPositionChangedEventArgs<GeoCoordinate> e)
{
txtLatitud.Text = e.Position.Location.Latitude.ToString("0.000");
txtLongitud.Text = e.Position.Location.Longitude.ToString("0.000");
}

private void btnPararServicioLocalizacion_Click(object sender,
RoutedEventArgs e)
{
watcher.Stop();
}
void watcher_StatusChanged(object sender,
GeoPositionStatusChangedEventArgs e)
{
switch (e.Status)
{
case GeoPositionStatus.Disabled:
if (watcher.Permission == GeoPositionPermission.Denied)
txtEstado.Text = Debe habilitar la localizacin
else
txtEstado.Text = Servicio no disponible.";
break;
case GeoPositionStatus.Initializing:
btnIniciar.IsEnabled = false;
break;
case GeoPositionStatus.NoData:
txtEstado.Text = Sin seal";
btnPararServicioLocalizacion.IsEnabled = true;
break;
case GeoPositionStatus.Ready:
txtEstado.Text = Localizacin preparada";
btnPararServicioLocalizacion.IsEnabled = true;
break;
}
}
Windows Phone
Control BingMaps
1. Crear una cuenta de desarrollador
https://www.bingmapsportal.com/

2. Creamos una nueva Key
Nombre aplicacin, URL, tipo de aplicacin..

3. Agregamos la referencia
xmlns:map="clr-namespace:Microsoft.Phone.Controls.
Maps;assembly=Microsoft.Phone.Controls.Maps

4. Insertamos el control
<map:Map Name="miMapa" CredentialsProvider="AwQh_41-o1y-
v1GpwaI3IG7ryv7eAlbWjsZFxJbYJVr_7GzHg2Rze"></map:Map>

Windows Phone
Control BingMaps
Cambiar el tipo de vista:
miMapa.Mode = new RoadMode();
miMapa.Mode = new AerialMode();
Cambiar el zoom:
if (miMapa.ZoomLevel < 20)
miMapa.ZoomLevel++;
if (miMapa.ZoomLevel > 1)
miMapa.ZoomLevel--;
Aadir Pushpin:
Pushpin pin = new Pushpin();
pin.Content = "Aqu";
pin.Background = new SolidColorBrush(Colors.Orange);
pin.Location = coord;
miMapa.SetView(coord, 14);//indico las coordenadas y el zoom
miMapa.Children.Add(pin);

Demo
Windows Phone 7.5
GPS y Bing Maps
25
Windows Phone 7.5
Motion API y Realidad Aumentada
Windows Phone
Introduccin a la realidad
aumentada
La realidad aumentada permite sobreponer
informacin virtual en el mundo real

Windows Phone
Introduccin a la realidad
aumentada
Elementos de realidad aumentada
Etiquetas de texto emplazadas en puntos del espacio y
que se desplazan al mover el dispositivo
Edificios, tiendas, hoteles
Windows Phone
Introduccin a la realidad
aumentada
Una aplicacin de realidad aumentada necesita
utilizar
Sensores (Motion API)
Cmara
Datos
Windows Phone
Sensores
Obtienen la orientacin y movimiento del dispositivo
Brjula: rumbo respecto al Polo Norte
POIs a mostrar en la pantalla
GPS: posicin en coordenadas geogrficas
Lugares cercanos al dispositivo
Motion API: Combina los valores obtenidos de Brjula +
Giroscopio + Acelermetro

Demo
Windows Phone 7.5
Realidad Aumentada
31
Q&A
GRACIAS
www.micmovilidad.es
Jose Antonio Gallego
http://geeks.ms/blogs/jagallego
@lmovilero
www.fiveflamesmobile.com

Eduardo Ortega
http://geeks.ms/blogs/eduardoortega
www.mobilenug.com

También podría gustarte