Desarrollo avanzado para Windows Phone
-
Upload
ivan-toledo -
Category
Technology
-
view
1.157 -
download
2
description
Transcript of Desarrollo avanzado para Windows Phone
![Page 1: Desarrollo avanzado para Windows Phone](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/1.jpg)
Desarrollo avanzado de aplicaciones para Windows Phone 7.5
Ivan R. Toledo Ivanovic
[email protected] | @itoledo
![Page 2: Desarrollo avanzado para Windows Phone](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/2.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/3.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/4.jpg)
Windows Phone Microsoft Corporation.4
Tiles
Front Back
![Page 5: Desarrollo avanzado para Windows Phone](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/5.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/6.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/7.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/8.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/9.jpg)
Windows Phone Microsoft Corporation.9
Secondary Tiles- Deep Application Linking- Clase StandardTileData- ShellTile.ActiveTiles- URIs de destino
![Page 10: Desarrollo avanzado para Windows Phone](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/10.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/11.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/12.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/13.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/14.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/15.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/16.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/17.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/18.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/19.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/20.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/21.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/22.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/23.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/24.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022070316/556175cfd8b42a171a8b4b84/html5/thumbnails/25.jpg)
Gracias!
25