capacidades avanzadas
Download
Skip this Video
Download Presentation
Capacidades avanzadas

Loading in 2 Seconds...

play fullscreen
1 / 33

Capacidades avanzadas - PowerPoint PPT Presentation


  • 161 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Capacidades avanzadas' - ziarre


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
capacidades avanzadas

Capacidadesavanzadas

Jose Antonio Gallego

Jefe de proyectos

Eduardo Ortega

MVP-Windows Phone

sensores
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
  • Expresa la aceleración como vector tridimensional
      • Componente X
      • Componente Y
      • Componente Z
  • Detecta la dirección en

que el usuario mueve el dispositivo

aceler metro1
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
aceler metro2
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
aceler metro3
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
el gir scopo
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
c mo utilizar el gir scopo
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();

}

c mo utilizar el gir scopo1
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

}

la br jula
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
c mo utilizar la br jula
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();

}

c mo utilizar la br jula1
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

}

servicio de localizaci n
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
utilizar el servicio de localizaci n
Utilizar el servicio de localización
  • Agregar referencia:System.Device.dll
  • Directiva Using:usingSystem.Device.Location
  • Añadir objeto GeoCoordinateWatcherpublicpartialclassMainPage : PhoneApplicationPage

{

GeoCoordinateWatcherwatcher;

}

aplicaci n con localizaci n opcional
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;

}

}

control bingmaps
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>

control bingmaps1
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);

introducci n a la realidad aumentada
Introducción a la realidad aumentada

La realidad aumentada permite sobreponer información “virtual” en el mundo real

introducci n a la realidad aumentada1
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…
introducci n a la realidad aumentada2
Introducción a la realidad aumentada
  • Una aplicación de realidad aumentada necesita utilizar
    • Sensores (Motion API)
    • Cámara
    • Datos
sensores1
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
gracias www micmovilidad es

GRACIASwww.micmovilidad.es

Jose Antonio Gallego

http://geeks.ms/blogs/jagallego

@lmovilerowww.fiveflamesmobile.com

Eduardo Ortega

http://geeks.ms/blogs/eduardoortega

www.mobilenug.com

ad