1 / 33

Capacidades avanzadas

Capacidades avanzadas. Jose Antonio Gallego Jefe de proyectos Eduardo Ortega MVP-Windows Phone. Windows Phone 7.5 Acelerómetro. Sensores. Windows Phone dispone de varios sensores Permiten determinar la orientación y movimiento del dispositivo Es posible acceder a cada sensor

ziarre
Download Presentation

Capacidades avanzadas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Capacidadesavanzadas Jose Antonio Gallego Jefe de proyectos Eduardo Ortega MVP-Windows Phone

  2. Windows Phone 7.5Acelerómetro

  3. 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

  4. Acelerómetro • Determina dirección de movimiento • Expresa la aceleración como vector tridimensional • Componente X • Componente Y • Componente Z • Detecta la dirección en que el usuario mueve el dispositivo

  5. Acelerómetro • if (!Accelerometer.IsSupported) • { • // El dispositivo en el que se está ejecutando la App no dispone de • // acelerómetro, lo cual se notificará al usuario con un mensaje • MessageBox.Show("El dispositivo no dispone de acelerómetro"); • } • Leer datos del acelerómetro • Agregar referencias Microsoft.Devices.Sensors Microsoft.Xna.Framework(datos = vector3) • Comprobar si está soportado

  6. Acelerómetro • if(accelerometer== null) • { • // Instanciar el Acelerómetro • accelerometer= new Accelerometer(); • accelerometer.TimeBetweenUpdates= TimeSpan.FromMilliseconds(20); • accelerometer.CurrentValueChanged+=new EventHandler<SensorReadingEventArgs • <AccelerometerReading>>(accelerometer_CurrentValueChanged); • accelerometer.Start(); • } • Leer datos del acelerómetro • Inicializar el acelerómetro

  7. Acelerómetro • voidaccelerometer_CurrentValueChanged(objectsender, • SensorReadingEventArgs<AccelerometerReading> e) • { • // Llamar a la función de actualización del UI pasándole datos del acelerómetro • Dispatcher.BeginInvoke(() => UpdateUI(e.SensorReading)); • } • privatevoidUpdateUI(AccelerometerReadingaccelerometerReading) • { • 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"); • } • Leer datos del acelerómetro • Implementar manejador del evento CurrentValueChanged • Actualizar el interfaz de usuario con los nuevos datos

  8. Windows Phone 7.5Acelerómetro

  9. Windows Phone 7.5Giróscopo

  10. El giróscopo • Determina la velocidad rotacional del dispositivo en los ejes X, Y, Z. • Los valores obtenidos del sensor del giróscopo determinan la orientación del dispositivo en el espacio • No todos los dispositivos están equipados con giróscopo • Comprobar si existe el sensor antes de utilizarlo

  11. Cómo utilizar el giróscopo if (gyroscope == null) { gyroscope = new Gyroscope(); gyroscope.TimeBetweenUpdates = TimeSpan.FromMilliseconds(20); gyroscope.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<GyroscopeReading>>(gyroscope_CurrentValueChanged); gyroscope.Start(); } . . . if (gyroscope != null) { gyroscope.Stop(); }

  12. Cómo utilizar el giróscopo • Información recuperada: • RotationRate • Timestamp Velocidad rotacional alrededor de cada eje del dispositivo (en radianes/seg) Momento exacto de la lectura de datos voidgyroscope_CurrentValueChanged(objectsender, SensorReadingEventArgs<GyroscopeReading> e) { //Procesar los datos leídos del sensor }

  13. Windows Phone 7.5Giróscopo

  14. Windows Phone 7.5Magnetómetro

  15. La brújula • Determina el ángulo de rotación del dispositivo respecto al Polo Norte magnético de la Tierra. • Se pueden medir también las fuerzas magnéticas alrededor del dispositivo • Es necesario calibrarla con frecuencia • No todos los dispositivos están equipados con brújula • Comprobar si existe el sensor antes de utilizarlo

  16. Cómo utilizar la brújula if (compass == null) { compass = new Compass(); compass.TimeBetweenUpdates = TimeSpan.FromMilliseconds(1); compass.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<CompassReading>>(compass_CurrentValueChanged); compass.Start(); } . . . if (compass != null) { compass.Stop(); }

  17. Cómo utilizar la brújula • Información recuperada: • HeadingAccuracy • MagneticHeading • MagnetometerReading • Timestamp • TrueHeading Rumbo (en grados) en sentido horario respecto al Polo Norte Magnético Precisión (en grados) del rumbo Rumbo (en grados) en sentido horario desde el Norte geográfico Momento exacto de la lectura de datos Datos leídos del magnetómetro (en microteslas) voidcompass_CurrentValueChanged(objectsender, SensorReadingEventArgs<CompassReading> e) { //Procesar los datos leídos del sensor }

  18. Windows Phone 7.5Giróscopo

  19. Windows Phone 7.5GPS y Bing Maps

  20. Servicio de localización • El servicio de localización en WP7 obtiene los datos de posicionamiento de: • GPS • WIFI • Radio GSM • El sistema busca el equilibrio entre consumo de batería y rendimiento, en función de las necesidades de la aplicación • Interfaz de código orientado a eventos administrados

  21. Utilizar el servicio de localización • Agregar referencia:System.Device.dll • Directiva Using:usingSystem.Device.Location • Añadir objeto GeoCoordinateWatcherpublicpartialclassMainPage : PhoneApplicationPage { GeoCoordinateWatcherwatcher; }

  22. Aplicación con localización opcional privatevoid btnIniciar_Click(object sender, RoutedEventArgs e) { if (watcher == null) { watcher = newGeoCoordinateWatcher(GeoPositionAccuracy.High); watcher.MovementThreshold = 20; watcher.StatusChanged += newEventHandler<GeoPositionStatusChangedEventArgs>(watcher_StatusChanged); watcher.PositionChanged += newEventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged); } 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"); } privatevoid btnPararServicioLocalizacion_Click(object sender, RoutedEventArgs e) { watcher.Stop(); } void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e) { switch (e.Status) { caseGeoPositionStatus.Disabled: if (watcher.Permission == GeoPositionPermission.Denied) txtEstado.Text = “Debe habilitar la localización” else txtEstado.Text = “Servicio no disponible."; break; caseGeoPositionStatus.Initializing: btnIniciar.IsEnabled = false; break;  caseGeoPositionStatus.NoData: txtEstado.Text = “Sin señal"; btnPararServicioLocalizacion.IsEnabled = true; break;  caseGeoPositionStatus.Ready: txtEstado.Text = “Localización preparada"; btnPararServicioLocalizacion.IsEnabled = true; break; } }

  23. Control BingMaps • Crear una cuenta de desarrollador https://www.bingmapsportal.com/ • Creamos una nueva Key Nombre aplicación, URL, tipo de aplicación….. • Agregamos la referencia xmlns:map="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps“ • Insertamos el control <map:MapName="miMapa"CredentialsProvider="AwQh_41-o1y-v1GpwaI3IG7ryv7eAlbWjsZFxJbYJVr_7GzHg2Rze"></map:Map>

  24. Control BingMaps • Cambiar el tipo de vista: miMapa.Mode = newRoadMode(); miMapa.Mode = newAerialMode(); • Cambiar el zoom: if (miMapa.ZoomLevel < 20) miMapa.ZoomLevel++; if (miMapa.ZoomLevel > 1) miMapa.ZoomLevel--; • Añadir Pushpin: Pushpin pin = newPushpin(); pin.Content = "Aquí"; pin.Background = newSolidColorBrush(Colors.Orange); pin.Location = coord; miMapa.SetView(coord, 14);//indicolascoordenadas y el zoom miMapa.Children.Add(pin);

  25. Windows Phone 7.5GPS y Bing Maps

  26. Windows Phone 7.5Motion API y RealidadAumentada

  27. Introducción a la realidad aumentada La realidad aumentada permite sobreponer información “virtual” en el mundo real

  28. Introducción a la realidad aumentada Torre Eiffel • Elementos de realidad aumentada • Etiquetas de texto emplazadas en puntos del espacio y que se desplazan al mover el dispositivo • Edificios, tiendas, hoteles…

  29. Introducción a la realidad aumentada • Una aplicación de realidad aumentada necesita utilizar • Sensores (Motion API) • Cámara • Datos

  30. Sensores • Yaw • Pitch • Roll • Aceleración rotacional • Aceleración lineal • Obtienen la orientación y movimiento del dispositivo • Brújula: rumbo respecto al Polo Norte  POIs a mostrar en la pantalla • GPS: posición en coordenadas geográficas  Lugares cercanos al dispositivo • Motion API: Combina los valores obtenidos de Brújula + Giroscopio + Acelerómetro

  31. Windows Phone 7.5Realidad Aumentada

  32. Q&A

  33. GRACIASwww.micmovilidad.es Jose Antonio Gallego http://geeks.ms/blogs/jagallego @lmovilerowww.fiveflamesmobile.com Eduardo Ortega http://geeks.ms/blogs/eduardoortega www.mobilenug.com

More Related