Agregando Funcionalidad a Mapas de Bing en Windows Phone

Hola a todos.

En este post vamos a usar los mapas de bing en nuestro Windows Phone (Emulador) y vamos a darle un poco de funcionalidad. Para esto vamos a basarnos el el articulo de nuestra compañera en Avanet @soreygarcia que es Configurando una aplicación Windows Phone para usar Mapas de Bing.

Partiendo de la base del articulo anterior, lo que vamos a hacer es agregar cuatro botones, para usar la vista road, aerial y el zoom.

Lo primero es usar el siguiente código en nuestra pantalla principal o donde trabajemos con el mapa. 

   1: using Microsoft.Phone.Controls.Maps

El código para los botones seria el siguiente.

   1: private void btnRoad_Click(object sender, RoutedEventArgs e)

   2:         {

   3:             map1.Mode = new RoadMode();

   4:         }

   5:  

   6:         private void btnArerial_Click(object sender, RoutedEventArgs e)

   7:         {

   8:             map1.Mode = new AerialMode();

   9:         }

  10:  

  11:         private void btnZoomIn_Click(object sender, RoutedEventArgs e)

  12:         {

  13:             double zoom;

  14:             zoom = map1.ZoomLevel;

  15:             map1.ZoomLevel = ++zoom;

  16:         }

  17:  

  18:         private void btnZoomOut_Click(object sender, RoutedEventArgs e)

  19:         {

  20:             double zoom;

  21:             zoom = map1.ZoomLevel;

  22:             map1.ZoomLevel = --zoom;

  23:         }

Y la aplicación quedaría de la siguiente forma.

image

image

Bueno espero les haya gustado.

Saludos. Romny

Sql Server CE en Windows Phone

Hola a todos.

Esta noche vengo a hablarles de Sql Server CE para trabajar con DB en Windows Phone en almacenamiento aislado. En Windows Phone Sql Server CE no tiene diseñador, ni herramientas visuales para trabajar con las BD, todo el trabajo se debe hacer con “Code First” o sea por código. Otra característica es que no se permite ejecutar instrucción T-SQL, todo se debe hacer usando Linq to Sql. Ahora veamos un ejemplo sencillo.

Primero generamos un proyecto de Windows Phone, seguidamente agregarmos la referencia a System.Data.Linq

image

Para trabajar con Sql Server CE tenemos que hacerlo por “Code First”. no olvidar usar

   1: using System.Data.Linq;

   2: using System.Data.Linq.Mapping;

   1: namespace WPSqlCE.Database

   2: {

   3:     [Table(Name="Usuario")]

   4:     public class Usuario

   5:     {

   6:         [Column(IsDbGenerated=true,IsPrimaryKey=true)]

   7:         public int UsuarioId { get; set; }

   8:  

   9:         [Column()]

  10:         public string Nombre { get; set; }

  11:  

  12:         [Column()]

  13:         public string Apellido { get; set; }

  14:  

  15:         [Column()]

  16:         public string Email { get; set; }

  17:  

  18:         [Column()]

  19:         public string Pais { get; set; }

  20:  

  21:     }

  22: }

Ahora creamos el DataContext

   1: namespace WPSqlCE.Database

   2: {

   3:     public class DBContext: DataContext

   4:     {

   5:         public DBContext(string connectionString): base (connectionString){}

   6:  

   7:         public Table<Usuario> Usuarios

   8:         {

   9:             get

  10:             {

  11:                 return this.GetTable<Usuario>();

  12:             }

  13:         }

  14:  

  15:     }

  16: }

Ahora ya en el formulario principal tenemos algo como lo siguiente.

   1: public MainPage()

   2:         {

   3:             InitializeComponent();

   4:  

   5:             using (DBContext context = new DBContext("isostore:/Database.sdf"))

   6:             {

   7:                 if (!context.DatabaseExists())

   8:                 {

   9:                     context.CreateDatabase();

  10:  

  11:                     Usuario usuario = new Usuario();

  12:                     usuario.Nombre = "Romny";

  13:                     usuario.Apellido = "Duarte";

  14:                     usuario.Email = "romnyduarte@hotmail.com";

  15:                     usuario.Pais = "Colombia";

  16:  

  17:                     context.Usuarios.InsertOnSubmit(usuario);

  18:                     context.SubmitChanges();

  19:                 }

  20:             }

  21:         }

Usamos un botón para cargar el dato que se genero predeterminadamente.

   1: private void btnCargar_Click(object sender, RoutedEventArgs e)

   2:        {

   3:            using (DBContext context = new DBContext("isostore:/Database.sdf"))

   4:            {

   5:                lsUsuarios.ItemsSource = context.Usuarios.ToList();

   6:            }

   7:        }

Ejecutamos la aplicación no sin antes en nuestro control donde vamos a mostrar los datos debemos decirle DisplayMemberPath="Nombre", para que muestre el dato y  no como clase.

image

 

Bueno este es un ejemplo sencillo de como trabajar con Sql Server CE en almacenamiento aislado con Windows Phone.

Saludos.

Romny

Windows Phone y sus Versiones

Hola a todos.

Hoy vengo a hablar de las diferentes versiones de Windows Phone y sus predecesores.

Windows Phone es la ultima versión del sistema operativo para dispositivos móviles que se conocía como Windows Mobile, desarrollado por Microsoft para el uso de teléfonos inteligentes o SmarthPhones.

Versiones

PocketPC 2002

PocketPC 2002, utiliza Windows CE 3.0. Diseñado para dispositivos Pocket PC.

Windows Mobile 2003

fue el primer lanzamiento bajo el nombre Windows Mobile. Vino en tres ediciones diferentes. Dos de estas ediciones son muy similares: Windows Mobile 2003 Pocket PC Edition y Windows Mobile 2003 Pocket PC Phone Edition, este último diseñado para los Pocket PC.

La tercera edición es Windows Mobile 2003 Smartphone Edition la cual es una plataforma bastante limitada, ya que su hardware tenia sus limitante, partiendo del punto que no tenían pantalla táctil, las aplicaciones a instalar tenían que estar firmada. Windows Mobile 2003 es conocido también como Windows CE 4.20.

Windows Mobile 2003 Second Edition

Conocida como Windows Mobile 2003SE, tenia las siguientes mejoras.

  • La opción de cambiar la orientación de la pantalla.
  • Pocket Internet Explorer.
  • Soporte para Wi-Fi.

Windows 2003SE Mobile utiliza Windows CE 4.21.111

Windows Mobile 5.0

Windows Mobile 5.0, conocido con el nombre en clave "Magneto", Utiliza Windows CE 5.0 y utiliza .NET Compact Framework 1.0 SP2

Novedades:

  • Una nueva versión de Office llamada "Office Mobile".
  • Reproductor "Windows Media 10 Mobile".
  • Identificador de llamadas con fotos.
  • Un paquete multimedia que facilitará la administración de vídeos y fotos.
  • Ayuda mejorada de Bluetooth.
  • Soporte para teclados QWERTY incluido por defecto.
  • ActiveSync 4.2
Windows Mobile 6

Windows Mobile 6, conocido con el nombre en clave Crossbow . Ofrece tres versiones: Windows Mobile 6 Standard para Smartphones , Windows Mobile 6 Professional para PDAs con la funcionalidad del teléfono, y Windows Mobile 6 Classic para PDAs sin telefonía IP. Utiliza Windows CE 5.2 y ligado fuertemente a los productos: Windows Vista, Windows Live, Microsoft Office y Exchange 2007.

Windows Mobile 6.1

Es una actualización menor de la plataforma Windows Mobile 6.

Windows Phone 6.5

Es una actualización importante de la plataforma Windows Mobile, es su lanzamiento se dio a conocer como Windows Phone.

Windows Phone 7

Nueva versión del sistema operativo de windows mobile, supone uno de los mayores cambios en la plataforma, se eliminaran varios aspectos como el activesync para la transferencia de archivos con el pc, además de su manejo del bluetooth y de las tarjetas externas, la interfaz grafica viene con el concepto metro, para optimizar el uso de la pantalla y para darle una mejor experiencia al usuario. Esto con el fin de que el se vea involucrado con la interfaz grafica.

Bueno esto sol es un breve resumen de todas las versiones.

Fuente:http://es.wikipedia.org/wiki/Windows_Phone

Saludos.

Romny

Enlaces Interesantes de WiX

Hola a todos. Vengo esta tarde a compartir algunos enlaces interesantes de esta herramienta, para la creación de instaladores para nuestras aplicación, ya sea escritorio o web.

Lo primero es decirles que WiX contiene una serie de herramientas para generar Instaladores de nuestras aplicaciones, soporta desde VS2005,VS2008 y VS2010, que además utiliza el lenguaje XML para generar dichos instaladores, que su acople con VS es de lo mejor.

Que porque usar WiX, básicamente por el echo de que en las nuevas versiones de de VS no se va a dar soporte o se descontinuara el soporte para la creación de instaladores directamente desde la herramienta. Pueden leer la noticia desde aquí [VS20??] No más proyectos de Setup a partir del proximo Visual Studio, así que es bueno echarle una ojeada a esto y prepararse o por lo menos tener una noción de que hacer.

Ahora si, los enlaces. Sonrisa

Así que muchachos ya saben, a echarle una ojeada.

Como siempre espero les sirva.

Romny

Ejecutar Instrucción SQL con WiX

Buenas  a todos.

Después de nuestro anterior post Creando Instalador con WiX he decidido jugar un poco mas con esta tecnología, que se ve prometedora.

Antes de empezar les recuerdo los link principales para leer sobre el tema.

Para este post vamos a ejecutar una instrucción SQL desde nuestro instalador.

Como sabrán, WiX usa XML para hacer las definiciones de nuestro instalador. Para poder ejecutar la instrucción SQL tenemos que hacer lo siguiente.

  • Añadir los espacios de nombres correspondientes.
   1: <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 

   2:      xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" 

   3:      xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension">

  • En la definición de nuestro del directorio principal colocamos lo siguiente.
   1: <Directory Id="ProgramFilesFolder">

   2:         <Directory Id="ApplicationRootDirectory" Name="WiXApp">

   3:           <Component Id="SqlComponent" Guid="2a57840e-49a3-412c-8602-1f0f6eda1b8e" KeyPath="yes">

   4:             <util:User Id="SQLUser" Name="[SQLUSER]" Password="[SQLPASSWORD]" />

   5:             

   6:             <sql:SqlDatabase Id="SqlDatabase" Database="WiXApp" Server="[SQLSERVER]" 

   7:               CreateOnInstall="yes" DropOnUninstall="yes" User="SQLUser">

   8:               <sql:SqlScript Id="CreateTable" BinaryKey="CreateTable" ExecuteOnInstall="yes" />

   9:             </sql:SqlDatabase>

  10:           </Component>

  11:         </Directory>

  12:             </Directory>

Los anteriores espacios de nombres era para poder definir un usuario para conectarnos a nuestro server, También para definir nuestra bd y cual script ejecutar.

   1: <Binary Id="CreateTable" SourceFile="CreateTable.sql"  />

Además defino las propiedades siguientes.

image

Ya después de ejecutar el instalador en el server de SQL queda así.

image

Algo interesante es que uno define el nombre de la BD y el se encarga de crearla, también si desinstalamos el la elimina. según esto.

   1: <sql:SqlDatabase Id="SqlDatabase" Database="WiXApp" Server="[SQLSERVER]" 

   2:               CreateOnInstall="yes" DropOnUninstall="yes" User="SQLUser">

   3:               <sql:SqlScript Id="CreateTable" BinaryKey="CreateTable" ExecuteOnInstall="yes" />

   4:             </sql:SqlDatabase>

Como puede ver es bastante versátil la herramienta. Ya solo queda probar la parte grafica del instalador.

Espero que les haya gustado.

Saludos.

Romny

Creando Instalador con WiX

Hola a todos.

Esta noche quiero comentarles de esta poderosa herramienta para generar instaladores con Visual Studio, Actualmente esta en la versión 3.5, para descargarla la podremos hacer desde http://wix.codeplex.com/releases/view/60102, para mas información de esta herramienta la encuentran en http://wix.codeplex.com/ y en http://wix.sourceforge.net/.

Realmente es una poderosa herramienta que usa el lenguaje XML para hacer los paquetes de instalación, lo único es que el aprendizaje es algo lento, pero bueno eso es manejable.

Para instalarlo lo podremos hacer desde codeplex o desde el administrador de complementos, queda a su gusto.

image

Lo primero es generar un proyecto Windows Forms y generar lo que deseemos. por mi parte una app sencilla.

image

Después de eso vamos a agregar un proyecto nuevo, Como se muestra la grafica.

image

Lo primero es agregar la referencia a nuestro proyecto.

image

El código seria algo así

   1: <?xml version="1.0" encoding="UTF-8"?>

   2: <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

   3:     <Product Id="03e2a616-21e0-44b2-b0e2-7e87f2dc6b4c" Name="WiXApp" Language="1033" 

   4:            Version="1.0.0.0" Manufacturer="WiXApp" UpgradeCode="9c7b876a-4ee5-4a23-a5b3-2a2120602f46">

   5:         <Package InstallerVersion="200" Compressed="yes" />

   6:  

   7:         <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />

   8:     <!--Definir el directorio-->

   9:     <Directory Id="TARGETDIR" Name="SourceDir">

  10:       <Directory Id="ProgramFilesFolder">

  11:         <Directory Id="ApplicationRootDirectory" Name="WiXApp"/>

  12:       </Directory>    

  13:       <Directory Id="ProgramMenuFolder">

  14:         <Directory Id="ApplicationProgramsFolder" Name="WiXApp"/>

  15:       </Directory>      

  16:       <Directory Id="DesktopFolder" Name="Desktop"/>

  17:     </Directory>

  18:     <!--Defenir el contenido del directorio-->

  19:     <DirectoryRef Id="ApplicationRootDirectory">

  20:       <Component Id="ApplicationFile" Guid="9c7b876a-4ee5-4a23-a5b3-2a2120602f46">

  21:         <File Id="ApplicationFile" Name="$(var.WiXApp.TargetFileName)" 

  22:               Source="$(var.WiXApp.TargetPath)" DiskId="1" KeyPath="yes"/>

  23:       </Component>

  24:       

  25:     </DirectoryRef>

  26:  

  27:      <!--Defenir el contenido del menu inicio-->

  28:     <DirectoryRef Id="ApplicationProgramsFolder">

  29:       <Component Id="ApplicationShortcut" Guid="a89a25ab-31ef-4ba1-8b2f-e07a80eb00f3">

  30:         <Shortcut Id="ApplicationStartMenuShortcut" Name="WiXApp" Description="WiXApp" 

  31:                   Target="[ApplicationRootDirectory]WiXApp.exe" 

  32:                   WorkingDirectory="ApplicationRootDirectory"/>

  33:         <Shortcut Id="UninstallProduct"

  34:                           Name="Desinstalar WiXApp"

  35:                           Description="Desinstalar WiXApp"

  36:                           Target="[System64Folder]msiexec.exe"

  37:                           Arguments="/x [ProductCode]"/>

  38:  

  39:         <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>

  40:         <RegistryValue Root="HKCU" Key="SoftwareMicrosoftWiXApp" Name="installed" Type="integer" Value="1" KeyPath="yes"/>

  41:       </Component>

  42:     </DirectoryRef>

  43:  

  44:     

  45:  

  46:     <Feature Id="ProductFeature" Title="WiXApp" Level="1">

  47:             <!-- TODO: Remove the comments around this ComponentRef element and the Component above in order to add resources to this installer. -->

  48:       <ComponentRef Id="ApplicationFile" />

  49:       

  50:       <ComponentRef Id="ApplicationShortcut"/>

  51:       

  52:  

  53:       <!-- Note: The following ComponentGroupRef is required to pull in generated authoring from project references. -->

  54:             <ComponentGroupRef Id="Product.Generated" />

  55:         </Feature>

  56:     </Product>

  57: </Wix>

Después compilamos. luego vamos al bin/DEbug y ejecutamos el instalador.

image

image

Ejecutamos.

image

Ahora si queremos desinstalar, lo podemos hacer desde la carpeta o vamos a desinstalar programas.

image

Como pueden ver es una poderos suite para generar instaladores.

Espero que les haya gustado.

Saludes.

Romny