desarrollo avanzado para windows phone

25
Desarrollo avanzado de aplicaciones para Windows Phone 7.5 Ivan R. Toledo Ivanovic [email protected] | @itoledo

Upload: ivan-toledo

Post on 24-May-2015

1.157 views

Category:

Technology


2 download

DESCRIPTION

Slides de una presentación de desarrollo avanzado para Windows Phone 7.5, se tratan temas de: - Tiles - Deep Application Linking (Secondary Tiles) - Lectura de códigos de barra - Cargar un recorrido en Bing Maps - Fast Application Switching

TRANSCRIPT

Page 1: Desarrollo avanzado para Windows Phone

Desarrollo avanzado de aplicaciones para Windows Phone 7.5

Ivan R. Toledo Ivanovic

[email protected] | @itoledo

Page 2: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.

Temas a tratar Tiles Deep Application Linking (Secondary Tiles) Lectura de Códigos de Barra Cargar un recorrido en Bing Maps Fast Application Switching XNA + Sockets… SpaceSync

Page 3: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.3

Tiles Sirven como íconos en pantalla inicio Atributos

Texto Imagen Cantidad Título posterior Contenido posterior Imagen posterior

Pueden enlazar a distintas pantallas de la aplicación

Page 4: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.4

Tiles

Front Back

Page 5: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.5

Live Tiles Generar imagen en backend (php, asp) Refrescarla usando BackgroundTask

ShellTileSchedule? No actualiza reverso Sólo para dispositivos con más de 256Mb de

RAM!

Page 6: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.6

Funcionalidades agentes en Background

Permitido Tiles Toast Location Network R/W ISO store Sockets Mayoría de APIs

Restringido

Display UI XNA Micrófono y Cámara Sensores Reproducir audio

(sólo puede usar background audio APIs)

Page 7: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.7

Live Tiles (ii) Detectar si un dispositivo tiene más de 256MB

DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit");

Número mágico: 94371840L; Actualizar Tile primario para cambiar

BackgroundImage ShellTile PrimaryTile = ShellTile.ActiveTiles.First(); tile.BackBackgroundImage = new

Uri("http://xxx/n/birdie/tile.php"); PrimaryTile.Update(tile);

Page 8: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.8

Live Tiles (iii) Crear proyecto BackgroundAgent para

actualización de Tile primario Modificar OnInvoke() para cambiar

BackBackgroundImage Enlazar proyecto desde proyecto principal Crear PeriodicTask para invocar BackgroundTask

Page 9: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.9

Secondary Tiles- Deep Application Linking- Clase StandardTileData- ShellTile.ActiveTiles- URIs de destino

Page 10: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.10

Leer un código de barra ZXing es lo más común dentro del Open Source Ports para múltiples plataformas Varios ports para WP7/Silverlight No todos tienen live capture (posible desde

WP7.5) Stéphanie Hertrich …

http://blogs.msdn.com/b/stephe/

Page 11: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.11

Leer un código de barra (ii)WP7.ScanBarCode.BarCodeManager.StartScan(// éxito(b) => Dispatcher.BeginInvoke(() =>{ … },//error(ex) => Dispatcher.BeginInvoke(() =>{ … },com.google.zxing.BarcodeFormat.ALL_1D);

Page 12: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.12

Un pequeño ejercicio con mapas Añadir capa vectorial con recorrido Consumir webservice con datos del recorrido Parsear JSON de respuesta Enviar mensaje desde ViewModel a página Crear objetos necesarios en Bing Maps

Layer Polyline

Page 13: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.13

Consumir webservice WS muy simple con parámetros en HTTP GET Lo consumimos desde el ViewModel

WebClient wc = new WebClient();Uri uri = new Uri("http://xxx/itinerario.php?servicio=" + rec + “&guid=“ + Guid.NewGuid());

wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadRecorridoCompletedEventHandler);

wc.DownloadStringAsync(uri, rec);

Page 14: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.14

Parsear JSON Instalar librería JSON desde NuGET

install-package newtonsoft.json Contenido de json es arrays de strings anidados

[[["PB241","VESPUCIO 1 \/ LOS LIBERTADORES","-70.681349","-33.364061"],["PB184","VESPUCIO 2 \/ LOS LIBERTADORES","-70.680976","-33.366831"], …]]

Page 15: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.15

Parsear JSON (ii)List<List<List<string>>> res;res = JsonConvert.DeserializeObject<List<List<List<string>>>>(e.Result);

List<List<string>> ida = res[0];

Page 16: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.16

Notificar pantalla desde ViewModel

Instalar MVVM Light install-package mvvmlight

Para enviar mensaje desde ViewModel: Messenger.Default.Send<RecorridoDescargadoMessage>(new RecorridoDescargadoMessage());

Para recibir mensaje desde pantalla: Messenger.Default.Register<RecorridoDescargadoMessage>(this, (action) => ReceiveMessage(action));

Page 17: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.17

Crear objetos en Bing Maps Añadir capa al mapa

MapLayer polyLayer; polyLayer = new MapLayer(); Map.Children.Add(polyLayer);

Page 18: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.18

Crear objetos en Bing Maps (ii) Dibujar puntos del recorrido en la capa

polyLayer.Children.Clear(); MapPolyline line = new MapPolyline(); line.Locations = new LocationCollection(); line.Stroke = new SolidColorBrush(Colors.Red); line.StrokeThickness = 3; foreach (Paradero p in App.ViewModel.ParaderosRecorrido) line.Locations.Add(p.loc);

polyLayer.Children.Add(line);

Page 19: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.19

Fast Application Switching Aplicaciones recientemente utilizadas aparecen

de inmediato Aplicaciones permanecen en memoria

Administrador de tareas Mientras las apps duermen…

No reciben ciclos de CPU Se liberan los recursos

Page 20: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.

Ciclo de vida en WP 7.5

ejecutando

desactivada

durmiendo

activada

Recursos liberadosHilos y timers suspendidos

Fast App Resume

Guardar estado!Estado preservado!IsAppInstancePreserved == true

Restaurar estado!IsAppInstancePreserved == false

Resumiendo .. .

Tombstone a la app más antigua

Tombstoned

Page 21: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.21

Cómo implementar FAS? Implementar serialización/deserialización de

datos de la app (ViewModels) IDataStorage

Capturar eventos y guardar/restaurar datos de la app Application_Deactivated Application_Activated

Page 22: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.22

XNA + Sockets … SpaceSync Objetivo: sincronizar dos o más teléfonos con la

mayor precisión posible para que muestren la misma imagen animada

NTP? Sólo para LANs por la baja precisión

Cómo transmitir el tiempo rápida y facilmente, sin tener que digitar números IP?

Page 23: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.23

Solución Paquetes UDP por la rapidez Utilizar UdpAnySourceMulticastClient para la

comunicación vía Wi-Fi (broadcast en grupo multicast)

Utilizar XNA para mostrar la imagen (modelo en 3D)

Dispositivo con ID 1 tiene la “hora oficial” El resto pide la hora a cada segundo y se utiliza

la hora con menor latencia

Page 24: Desarrollo avanzado para Windows Phone

Windows Phone Microsoft Corporation.24

XNA en SpaceSync Se carga el modelo 3D y el font de manera estándar

font = this.contentManager.Load<SpriteFont>("gameFont"); myModel = this.contentManager.Load<Model>("Model/p1_wedge");

Cada dispositivo tiene el viewport ajustado de acuerdo a su ID

Se procesan en gesture drag en OnUpdate, para desplazar el modelo y enviarlo via broadcast

La rotación del modelo se calcula de acuerdo a la hora

Page 25: Desarrollo avanzado para Windows Phone

Gracias!

25