Desarrollo de Soluciones Windows Mobile
Desarrollo de Soluciones Windows Mobile
Desarrollo de aplicaciones con Windows Mobile
Agenda
Arquitectura.net
Entorno de desarrollo
.NET Compact Framework
Diseño de interfaces de usuario
Gestión de datos corporativos
Integración con servicios Web
Integración con Outlook Mobile
Optimización y despligue de soluciones de movilidad
Desarrollo de aplicaciones con Windows Mobile
ARQUITECTURA .NET
Framework y Ensamblados
Desarrollo de aplicaciones con Windows Mobile
El producto Visual Studio 2005
Visual Studio 2005 soporta el desarrollo de aplicaciones para: .NET Framework 2.0
SQL Server 2005
.NET Compact Framework 2.0
El Framework 2.0 contiene las mayores mejoras como: ADO.NET 2.0
System.XML 2.0
Windows Forms 2.0
ASP.NET 2.0
Desarrollo de aplicaciones con Windows Mobile
Plataforma .NET
Desarrollo de aplicaciones con Windows Mobile
CLR (Common Language Runtime)
Desarrollo de aplicaciones con Windows Mobile
Bibliotecas de clase
Desarrollo de aplicaciones con Windows Mobile
Ensamblados
Desarrollo de aplicaciones con Windows Mobile
Lenguajes soportados por .NET
Ada APL AsmL
Basic BETA BF
Boo C C#
C++ Cobol E# y G#
Eiffel Flash Fortran
Haskell IL/MSIL Java
JavaScript Lexico Lisp
LOGO Mercury Modula-2
Oberon Perl Pascal
PHP Python RPG
Scala Smalltalk SML
Desarrollo de aplicaciones con Windows Mobile
Representación del Framework 2.0
Desarrollo de aplicaciones con Windows Mobile
Mejoras de productividad en Visual Studio 2005
Editar marcas
Verde para recientemente editado y guardado
Amarillo para no guardado
Code Snippets y code expansions
Inserta código usado comúnmente
Crea Snippets modificados fácilmente
Mejoras de productividad de C#
Soporte „Edit and Continue‟
Automatización de tareas comunes de refactorización
Mejoras de productividad en Visual Basic
Soporte „Edit and Continue‟
Facil acceso a los recursos del sistema y apliacción con la abstracción de MyServices
Desarrollo de aplicaciones con Windows Mobile
Entorno de desarrollo
Framework y Ensamblados
Desarrollo de aplicaciones con Windows Mobile
Entorno de desarrollo de Visual Studio 2005
Tipos de proyectos
Ventana de soluciones
Propiedades de las soluciones
Propiedades de los proyectos
Diagramas de clases
Listas de tareas
Layout de la ventana de diseño
Desarrollo de aplicaciones con Windows Mobile
Tipos de proyectos
Desarrollo de aplicaciones con Windows Mobile
Ventana de soluciones
Desarrollo de aplicaciones con Windows Mobile
Propiedades de las soluciones
Desarrollo de aplicaciones con Windows Mobile
Propiedades de los proyectos
Desarrollo de aplicaciones con Windows Mobile
Diagramas de clases
Desarrollo de aplicaciones con Windows Mobile
Listas de tareas
Desarrollo de aplicaciones con Windows Mobile
.NET Compact Framework
Framework y Ensamblados
Desarrollo de aplicaciones con Windows Mobile
Características del entorno de desarrollo de Visual Studio 2005 para el desarrollo móvil
Características de Visual Studio 2005 para el desarrollo en
dispositivos móviles:
Soporte para .NET Compact Framework 2.0
Soporte para Windows Mobile 5.0
Soporte para Microsoft ActiveSync
Device Emulator 1.0
Controles específicos de dispositivo
Soporte multiplataforma
Depurador mejorado
Diseñadores de interfaz de usuario WYSIWYG (Todo lo que ves es todo
lo que obtienes) con soporte para skins
Desarrollo de aplicaciones con Windows Mobile
Características de desarrollo de dispositivos en Visual Studio 2005
Gran paridad con la experiencia de desarrollo paraescritorio
Windows Mobile 2003 SDKs in the Box
Desarrollo de código nativo
Migración desde eMbedded Visual C++
MFC 8.0 / ATL / Win32
.NET Compact Framework 1.0 y 2.0
Microsoft SQL Server 2005 Mobile Edition
Soporte para el diseñador de datos
Setup project (CAB)
Desarrollo de aplicaciones con Windows Mobile
Características para el Visual Studio 2005 SP1
Añade 15 clases para MFC
Device Emulator 2.0 (Standalone Release)
Mejora el soporte para la migración de aplicacioneseMbedded Visual C++ 4.0
Posibilidad de trabajar con SQL Server 2005 Compact Edition
Actualiza los compiladores nativos y las herramientasremotas
Posibilidad de soportar SDKs basados en Windows CE 6.0
Soporte para Windows Mobile 6 SDKs
Desarrollo de aplicaciones con Windows Mobile
Tecnología para el desarrollo móvil
Visual Studio 2005 y Compact Framework 2.0 permiten desarrollar:
Aplicaciones que acceden a datos (BBDD SQL Server Mobile).
Aplicaciones que proporcionan conectividad web (HTTP y Servicios Web).
Código nativo no administrado.
Aplicaciones para dispositivos específicos.
24
Desarrollo de aplicaciones con Windows Mobile
Releases y tecnologías
.NET se lleva a los dispositivos
Aplicaciones distribuidasAplicaciones de datos
RendimientoCaracteristicasHerramientas
2002 2003 2004 2005 2006 2007
1.0 1.0 SP1
1.0 SP2
2.01.0 SP3
2.0 SP1
3.5
XNA
2.0 SP2
LandscapeAutoscroll
Smartphone
Windows CE 4.2Remote Performance Monitor
PerformanceGenericsCOM InteropDirect3D
Windows Communication FoundationLanguage Integrated QueryCLR Profiler
Desarrollo de aplicaciones con Windows Mobile
Herramientas para desarrolladores de dispositivos
Embedded Visual Tools 3.0
Microsoft eMbeddedVisual C++ 4.0
Visual Studio .NET 2003
Visual Studio 2005
Visual Studio 2008
eVB
WindowsCE30
eVC 3.0
Managed and Native!
Desktop Parity, Designers, Data
Device Emulator 1.0 and 2.0*
.NET CF Framework 1.0 and 2.0
Microsoft Windows CE 5.0 and
6.0
Smartphone and Pocket PC
2003, Windows Mobile 5.0*
Windows Mobile 6*
Native and Managed
Device Emulator 3.0
Security Aware IDE / Unit Testing
Windows CE 5.0 and CE 6.0
Windows Mobile 2003 Smartphone** and Pocket PC
(**Native Only)
Windows Mobile 5.0 Smartphone
Windows Mobile 5.0 Pocket PC
Windows Mobile 6.Professional*
Windows Mobile 6 Standard*
.NET Compact Framework 2.0 and 3.5
Managed Only
Windows CE 4.2
.NET Compact
Framework 1.0
Smartphone and
Pocket PC 2003
Native Only
Windows CE 4.0 5.0
Smartphone and PPC
2003
X86 Emulator
Desarrollo de aplicaciones con Windows Mobile
Características de la API incluidas en los SDKs de Windows Mobile5.0:
Telefonía: la clase Microsoft.WindowsMobile.Telephony.Phone permite programar aplicaciones que pueden iniciar una llamada telefónica.
Pocket Outlook: modelo de objetos que ayuda a incorporar datos PIM (Personal Information Manager) dentro de las aplicaciones Windows Mobile 5.0. Proporciona:
Soporte administrador tanto para correo como para SMS.
Nueva API de mensajería para mostrar los correos electrónicos existentes, usar el sistema de mensajería SMS y formularios de correos para componer nuevos mensajes y controlar la cuenta activa actual en el sistema de mensajería.
Sincronización de datos en un dispositivo que tenga acceso a un servidor con el IIS de Microsoft (Microsoft Internet Information Services).
Configuration Manager: Se puede utilizar el nombre de espacio y ensamblado Microsoft.WindowsMobile.Configuration.ConfigurationManager para configurar un dispositivo. Este nombre de espacio usa XML para enviar la configuración al dispositivo Windows Mobile 5.0. Esto simplifica la configuración y el despliegue de proyectos Windows Mobile.
Características del SDK de Windows Mobile 5.0 para Visual Studio 2005
27
Desarrollo de aplicaciones con Windows Mobile
API de estado y Notification Broker: proporciona un mecanismopara almacenar aplicaciones en un dispositivo e información delestado del sistema.
Características:
Se accede a ella desde Microsoft.WindowsMobile.Status.
Notifica a las aplicaciones acerca de los eventos que están ocurriendo en el
dispositivo o en otras aplicaciones. Por ejemplo, una aplicación que
consume mucha energía puede ser notificada acerca de los cambios en el
estado de la batería.
Monitoriza y registra claves en el sistema. El archivo de cabecera (snapi.h)
contiene definiciones para la clave del registro, ruta, valor y máscara de bits
para todas las notificaciones base que son proporcionadas por el sistema.
Características del SDK de Windows Mobile 5.0 para Visual Studio 2005
28
Desarrollo de aplicaciones con Windows Mobile
Novedades en los SDKs de Windows Mobile 5.0: Entorno de desarrollo: Se puede desarrollar de forma nativa en C++ o de
forma manejada en C# o VB.NET usando Visual Studio 2005 y .NET CompactFramework.
Documentación: La futura documentación de Windows Mobile contendráinformación basada en tareas para ayudar a los desarrolladores a crear, testar, ydesplegar aplicaciones para dispositivos PPC o Smartphone basados en WindowsMobile 5.0. La sección de referencia de los desarrolladores incluye informaciónacerca de más características de Windows Mobile. La ayuda de Windows Mobile esactualizada mensualmente.
Sistemas de ficheros y almacenamiento de datos: Windows Mobile soportaEDB (Bases de datos empresariales).
Desarrollo de código manejado: El SDK de Windows Mobile 5.0 incluye lalibrería de clases Microsoft.WindowsMobile, diseñada para ser un suplemento.
Seguridad: Los Pocket PCs basados en Windows Mobile proporcionan soportepara el modo de seguridad de una capa, que distingue entre aplicaciones firmadasy no firmadas.
Características del SDK de Windows Mobile 5.0 para Visual Studio 2005
29
Desarrollo de aplicaciones con Windows Mobile
Configurar el entorno de Visual Studio 2005
1. Instalar las herramientas de desarrollo: Instalar las herramientas en el
siguiente orden …
2. Seleccionar un dispositivo: Para asegurarse de que se nos avisa cuando
se selecciona un dispositivo al desplegar nuestra solución:
En Visual Studio 2005 en el menú Herramientas clic en Opciones
Herramientas de dispositivo General. Si las herramientas de dispositivo
no están visibles, seleccionar Ver todas las opciones en la parte inferior del
cuadro de diálogo de opciones.
Seleccionar la casilla de verificación de Mostrar las opciones de dispositivo
antes de desplegar un proyecto de dispositivo. Para incluir el archivo de datos
en el proyecto actual, en Archivo de base de datos local Si.
30
Visual Studio 2005
SQL Server 2005
ActiveSync 4.2
Windows Mobile 5.0 SDKs.
Desarrollo de aplicaciones con Windows Mobile
3. Crear la aplicación: En Visual Studio 2005 Archivo clic en Nuevo Proyecto.
En el cuadro de Nuevo proyecto en el panel de Tipos de proyecto expandir
el nodo Visual Basic o Visual C#.
Expandir el nodo Smart Device, seleccionar Windows Mobile 5.0
Pocket PC o Windows Mobile 5.0 Smartphone.
En el panel plantillas seleccionar Aplicación de dispositivo.
En el cuadro de Nombre especificar un nombre para el proyecto.
En el cuadro Localización especificar la ruta donde queremos almacenar
el proyecto OK. Una representación de un dispositivo PPC o
Smartphone aparecerá en el diseñador de Windows Forms. En menú Ver
Explorador de Servidores.
Configurar el entorno de Visual Studio 2005
31
Desarrollo de aplicaciones con Windows Mobile
4. Lanzar el emulador de dispositivos:se puede lanzar de dos maneras.
Usando el cuadro de diálogo de Conectar a dispositivo:
1. En el Visual Studio 2005, hacer clic en Conectar aldispositivo.
2. En el cuadro de diálogo de Conectar al dispositivo de la listade Plataformas, seleccionar una plataforma de dispositivo,desde el cuadro de Dispositivos seleccionar un emulador ydespués hacer clic en Conectar.
Usando el administrador de emulador de dispositivos:
1. En Visual Studio 2005, hacer clic en Herramientas y despuéshacer clic en Administrador de emuladores de dispositivos.
2. En esa ventana, hacer clic con el botón derecho en el emuladorque queramos iniciar y hacer clic en Conectar.
Configurar el entorno de Visual Studio 2005
32
Desarrollo de aplicaciones con Windows Mobile
5. Construir y testear la aplicación en el emulador de
dispositivos:
En Visual Studio 2005, hacer clic en Depurar y hacer clicen Iniciar (o iniciar con depuración).
En el cuadro de diálogo de Implementar, seleccionarel emulador y después hacer clic en Implementar.Se puede ver el progreso en la barra de estado.
Configurar el entorno de Visual Studio 2005
33
Desarrollo de aplicaciones con Windows Mobile
Diseño de Interfaces de usuario
Adaptación, usabilidad y estilo
Desarrollo de aplicaciones con Windows Mobile
Creando el Interfaz de usuario para una aplicación Móvil
Diferentes dispositivos móviles tienen diferentes resoluciones y tamaños de pantalla,dependiendo del fabricante y de la funcionalidad del dispositivo.
Para proporcionar una buena experiencia de usuario, diseñar la aplicación para ajustarlas variaciones de resolución de pantalla, tamaño, y orientación ajustando la propiedadnecesaria para los controles y las formas.
En este módulo se explicarán:
Recomendaciones de Interfaz de usuario para dispositivos móviles.
Cómo determinar mediante código la configuración de pantalla de undispositivo móvil.
Cómo redimensionar los controles para responder a los cambios deorientación.
Cómo ajustar la resolución de pantalla.
Cómo crear aplicaciones DPI-Aware.
Cómo añadir ayuda a un formulario móvil.
35
Desarrollo de aplicaciones con Windows Mobile
Recomendaciones para proporcionar un interfaz de usuario accesible y
una buena experiencia de usuario:
Evitar usar fuentes de tamaño fijo así como fuentes de tamañospequeños
Asegurarse de que los elementos del interfaz de usuario estánclaramente visibles aun con poca iluminación en la pantalla
Asegurarse de que las combinaciones de colores son claras yefectivas
Agrupar los objetos relacionados en la pantalla
Asegurarse de que el tamaño y región de los elementos delinterfaz de usuario son ergonómicos
Evitar menús emergentes
Evitar crear un submenú de un submenú
Minimizar la cantidad de información textual que se muestra en eldispositivo
NOTA: Más información en: http://msdn2.microsoft.com/en-us/library/ms879776.aspx
Recomendaciones de Interfaz de usuario para dispositivos móviles
36
Desarrollo de aplicaciones con Windows Mobile
Determinando mediante código la configuración de pantalla de un dispositivo móvil
La orientación de la pantalla de un dispositivo móvil se configura
mediante la propiedad SystemSettings.ScreenOrientation.
Tiene cuatro posibles valores:
Angle0
Angle90
Angle180
Angle270
Angle 0 es la orientación por defecto.
Sintaxis para cambiar la orientación de la pantalla:SystemSettings.ScreenOrientation = ScreenOrientation.<Angle>
37
Microsoft.WindowsCE.Forms
Desarrollo de aplicaciones con Windows Mobile
Redimensionar los controles para responder a los cambios de orientación
Propiedad Ejemplo código
Anchor
Button button1 = new Button();
button1.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right);
button1.Size = new Size(10,10);
this.Controls.Add(button1);
Dock
Panel Panel1 = new Panel ();
TextBox textBox1 = new TextBox();
textBox1.Location = new Point(15, 15);
Panel1.Controls.Add(textBox1);
Panel1.Dock = DockStyle.Bottom;
this.Controls.Add(groupBox1);
AutoScroll
El siguiente ejemplo de código evalua la localización de un cuadro de texto y cambia la apariencia
y el comportamiento del contenedor padre – el control Panel.
if (text1.Location.X > panel1.Location.X
|| text1.Location.Y > panel1.Location.Y)
{
panel1.AutoScroll = true;
if( panel1.AutoScrollMargin.Width < 5
|| panel1.AutoScrollMargin.Height < 5)
{
Panel1.Height = Panel1.Height + 10;
}
}
38
Desarrollo de aplicaciones con Windows Mobile
Practica: Cambios de orientación
Diseñar el formulario y ajustar la respuesta de sus controles sensibles al cambio de orientación mediante las propiedades Anchor y Dock .
Usar los tres botones para cambiar la horientación
39
Desarrollo de aplicaciones con Windows Mobile
Ajustar la resolución de pantalla
Diferentes dispositivos móviles tienen diferentes resoluciones de pantalla o
pantallas de formas diferentes. Se debe cambiar la resolución de la pantalla
del dispositivo para mostrar la aplicación de forma apropiada en cualquier
dispositivo Windows Mobile.
Se puede cambiar la resolución del dispositivo durante la fase de diseño o
configurando el Form-Factor. En aplicaciones para Windows Mobile 5.0
basadas en Pocket PC, se puede configurar el valor del Form-Factor para uno
de los siguientes:
Windows Mobile 5.0 Pocket PC
Windows Mobile 5.0 Pocket PC Phone
Windows Mobile 5.0 Pocket PC Phone Square
Windows Mobile 5.0 Pocket PC Phone Square VGA
Windows Mobile 5.0 Pocket PC Phone VGA
Windows Mobile 5.0 Pocket PC Square
Windows Mobile 5.0 Pocket PC Square VGA
Windows Mobile 5.0 Pocket PC VGA
40
Desarrollo de aplicaciones con Windows Mobile
Creando aplicaciones DPI-Aware
Modo Descripción
None Para deshabilitar el escalado automático
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
DPI Cuando se ajusta la propiedad AutoScaleMode a DPI se puede dimensionar un
control o formulario relativo a la pantalla. Por ejemplo, para ajustar la escala DPI en
un control que muestra un gráfico, usar el siguiente código:
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
El siguiente código especifica que la aplicación ha sido desarrollada para un
dispositivo con una resolución de 96 DPI:
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96f);
Inherit Para escalar un control de acuerdo con el modo de escalado de este control padre,
ajustar la propiedad AutoScaleMode a Inherit como se muestra aquí:
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
41
Desarrollo de aplicaciones con Windows Mobile
Creando aplicaciones DPI-Aware
La tabla siguiente muestra las orientaciones de la pantalla de Pocket PC y Smartphone admitidas por .NET Compact Framework. Las dimensiones se expresan en píxeles, ancho por alto.
42
Orientación de la pantalla
Dimensiones típicas para 96 PPP
Dimensiones típicas (alta resolución) para 192 PPP
Vertical - Pocket PCVertical -Smartphone
240 x 320 176 x 220 y 240 x 320
480 x 640352 x 440 y 480 x 640
Horizontal -Pocket PC únicamente
320 x 240 640 x 480
Cuadrado -Pocket PC únicamente
240 x 240 480 x 480
Desarrollo de aplicaciones con Windows Mobile
Proporcionada mediante archivos de ayuda en formato HTML.
Métodos:
Llamar archivos de ayuda al lanzar un evento en un control del formulario. En el manipulador del evento, se llama al método ShowHelp.
Llamar al método ShowHelp cuando la opción Help del menú de Inicio es seleccionada.
Ejemplo:private void button1_Click(object sender, System.EventArgs e){
Try{
Help.ShowHelp(this,@"\windows\myappHelp.htm#overview");}
catch (Exception ex){
MessageBox.Show(ex.Message);}
}
Añadir ayuda a un formulario móvil
43
Desarrollo de aplicaciones con Windows Mobile
Añadiendo y configurando Controles
Compact Framework proporciona:
Controles como TextBox, Label y Button.
Soporte para funcionalidades comunes de Windows (focus,activation, capture…).
No proporciona características que usen de forma intensiva recursoscomo enumeraciones y eventos no apropiados para aplicacionesWindows Mobile.
En este módulo se explicará: Controles soportados para el desarrollo en Windows Mobile. Manejadores de eventos soportados para controles Windows
Mobile. Implementar notificaciones en un dispositivo móvil.
44
Desarrollo de aplicaciones con Windows Mobile
Controles soportados para el desarrollo en Windows Mobile
Control Pocket PC Smartphone
Button Si No
TextBox Si Si
Label Si Si
PictureBox Si Si
Notification Si No
HardwareButton Si No
InputPanel Si No
CheckBox Si Si
DataGrid Si Si
TabControl Si No
RadioButton Si No
ToolBar Si No
NOTA: Mas información en : http://go.microsoft.com/fwlink/?LinkId=71980
45
Desarrollo de aplicaciones con Windows Mobile
Manejadores de eventos soportados para controles Windows Mobile
Evento Descripción
Click Lanzado cuando el usuario hace clic en el control
DoubleClick Lanzado cuando el usuario hace doble-clic en el control
HandleCreated Lanzado cuando se crea un manipulador para el control
HandleDestroyed Lanzado cuando el manipulador del control esta en el
proceso de empezar a ser destruido
HelpRequested Lanzado cuando el usuario pide ayuda para un control
Paint Lanzado cuando el usuario repinta el control
EnabledChanged Lanzado cuando la propiedad Enabled cambia
KeyDown Lanzado cuando el usuario presiona una tecla mientras
el control tiene el foco
KeyPress Lanzado cuando el usuario presiona una tecla mientras
el control tiene el foco
Nota: más información en http://go.microsoft.com/fwlink/?LinkId=71982
46
Desarrollo de aplicaciones con Windows Mobile
Capturar la entrada del usuario usando el Soft Input Panel (SIP)
• El SIP está controlado por el componente InputPanel. Estecomponente se puede añadir:
Arrastrando desde el cuadro de herramientas. Aparecerá unbotón SIP en la barra de menús.
Mediante código: InputPanel inputPanel1= new InputPanel();
• Se puede programar el SIP. Propiedades:
Enabled: muestra el SIP.
Bounds: devuelve el tamaño del SIP. Siempre devuelve unancho de 240 pixels y una altura de 80 pixels aunque el SIP estehabilitado.
VisibleDesktop: determina el tamaño del área de formularioque el SIP no ocupa.
Evento EnabledChanged: lanzado cuando el SIP es habilitado odeshabilitado.
47
Desarrollo de aplicaciones con Windows Mobile
El ejemplo muestra el SIP cuando el cuadro de texto recibe el foco. El evento EnableChanged
comprueba si el SIP está habilitado o deshabilitado. Si el SIP está deshabilitado, el control TabControl
se pone en pantalla completa.Si el SIP está habilitado, el control TabControl se redimensiona para
ocupar toda el área de la pantalla disponible.
private void inputPanel1_EnabledChanged(object sender, EventArgs e){
if (inputPanel1.Enabled == false){
VisibleRect = inputPanel1.VisibleDesktop;tabControl1.Height = TabOriginalHeight;
}else{
VisibleRect = inputPanel1.VisibleDesktop;tabControl1.Height = VisibleRect.Height;
}}
Capturar la entrada del usuario usando el Soft Input Panel (SIP)
48
Desarrollo de aplicaciones con Windows Mobile
Implementar notificaciones en un dispositivo móvil
• Una notificación se lanza en respuesta a un evento o cuando se alcanza una condición.
• La clase Notification implementa funcionalidad de mostrar y responder a las
notificaciones de usuario. Propiedades:
Text: especifica el texto de la notificación. Pueden ser ajustada a HTML o textoplano. HTML es renderizada por el control HTML de Pocket PC. Se puede usar lapropiedad Response de la clase ResponseSubmittedEventArgs para recuperar lacadena de respuesta. Esta cadena de respuesta es analizada para responder a losvalores en el formato HTML.
Visible: crea notificaciones y las muestra como es requerido.
InitialDuration: ajusta el tiempo de muestreo inicial del globo de notificación.
• Pasos para utilizar la clase Notification:1. Crear una instancia de la clase Notification.2. Crear un manipulador de evento para mostrar la notificación.3. Añadir el código para manejar el evento ResponseSubmitted. Se puede usar este
manejador de evento solo si la propiedad Text es ajustada a HTML.4. Recuperar y procesar la respuesta de usuario usando la propiedad Response.
50
Desarrollo de aplicaciones con Windows Mobile
Practica:Implementación de SIP
1. Agregar SIP
2. Autoajustar formulario cuando se abra SIP
3. Probarlo con los diferentes cambios de orientación
52
Desarrollo de aplicaciones con Windows Mobile
Creando y configurando barras de herramientas y menús
• Las barras de herramientas en un dispositivo móvil son diferentes de lasaplicaciones estándar de escritorio.
• La barra de herramientas en una aplicación de dispositivo móvil muestra unlimitado número de botones en la pantalla.
• Además de la barra de herramientas, las soft keys en un dispositivo móvil,muestran menús y comandos.
• Aparecen dos soft keys en una barra de soft key localizada en la parte inferiorde la pantalla del dispositivo. Estas soft keys muestran una acción y un menúsensible al contexto que puede cambiar dinámicamente por una aplicación.
En este módulo se explicará cómo:
Crear y configurar botones para una barra de herramientasestándar en dispositivos móviles
Crear y configurar menús y soft keys
53
Desarrollo de aplicaciones con Windows Mobile
Crear y configurar menús y soft keys
Cuando se crea un formulario, el control MainMenu se añadeautomáticamente. El control MainMenu hace que las soft keys se habiliten parael usuario.
Recomendaciones para cuando se implemente una operación one-handed(para una mano):
Eliminar el stylus cuando se diseña una aplicación
Usar soft keys que son invocadas usando botones de Hardware. Las soft keys actúancomo menús para nuestra aplicación
Dinámicamente cambiar el menú en diferentes formas en la aplicación que es mostrada
Incorporar características como arrow keys (teclas de flechas) y tabuladores para hacerque nuestra aplicación esté libre de stylus
Correctamente ajustar la propiedad TabIndex de todos los controles usados en laaplicación. Esta propiedad define el orden en el cual el usuario puede navegar a través deuna aplicación
Intentar soportar la navegación usando las teclas de dirección de hardware para controles
Extender controles para navegar al siguiente control cuando se pulsa una cierta tecla comoENTER
54
Desarrollo de aplicaciones con Windows Mobile
Creando controles modificados
Los controles del Compact Framework 2.0 no soportan todas las propiedades, métodos y eventosdel Framework 2.0.
Para recuperar la funcionalidad perdida se puede:
Crear un control modificado definiendo un tipo público que herede tanto de la clase Controlcomo de la clase UserControl.
Crear nuestras propias clases, propiedades, métodos y eventos.
Crear un control personalizado extendiendo los controles Windows Forms existentes.
Crear un control compuesto.
En este módulo se estudiará: Cómo crear un control personalizado extendiendo un control Windows Forms existente Cómo definir propiedades, métodos y eventos para controles personalizados Cómo personalizar un control para pintar y renderizar
55
Desarrollo de aplicaciones con Windows Mobile
Crear un control personalizado extendiendo un control Windows Forms existente
Se pueden derivar controles personalizados de los controles comunes para:
Sobrescribir propiedades, métodos y eventos de controles comunes.
Definir propiedades adicionales, métodos y eventos para un control.
Definir como un control responde a acciones de usuario (TextBox que sólo acepta
datos numéricos).
Pasos para crear un control personalizado extendiendo un control existente Windows
Forms:
1. En Visual Studio 2005 crear un proyecto de librería de controles Windows.
2. Especificar un nombre para el proyecto y la localización donde se quiera guardar el proyecto.
3. En el explorador de soluciones, renombrar el fichero UserControl1.vb o UserControl1.cs. El
nombre que especifiquemos para este fichero será el nombre de nuestro control compuesto.
4. Abrir el código generado por el diseñador en el editor de código. Localizar la clase parcial y
cambiar la herencia en la declaración desde el UserControl para el control requerido – por
ejemplo Button o TextBox.
5. Añadir las propiedades requeridas y métodos para el control
6. Construir el control
7. Crear una aplicación que usará el control personalizado
8. En la aplicación, añadir una referencia a la librería de control del control personalizado
9. Desde el cuadro de herramientas, añadir el control personalizado al formulario
56
Desarrollo de aplicaciones con Windows Mobile
Definir propiedades, métodos y eventos para controles personalizados
Funcionalidad Código de ejemplo
Propiedades
El siguiente código de ejemplo crea una propiedad para que la imagen de fondo sea dibujada detrás del texto del
botón.
public Image BackgroundImage
{
get { return this.backgroundImage; }
set { this.backgroundImage = value; }
}
Métodos
El siguiente código de ejemplo crea un objeto bitmap, lo llena con un color y dibuja una elipse en el objeto bitmap para
hacer que el objeto se parezca a una imagen personalizada.
Bitmap MakeBitmap(Color color, int width, int height)
{
Bitmap bmp = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bmp);
g.FillRectangle(new SolidBrush(color), 0, 0,
bmp.Width, bmp.Height);
g.DrawEllipse(new Pen(Color.DarkGray), 3, 3,
width - 6, height - 6);
g.Dispose();
return bmp;
}
57
Desarrollo de aplicaciones con Windows Mobile
Definir propiedades, métodos y eventos para controles personalizados
Funcionalidad Código de ejemplo
Eventos El siguiente código de ejemplo personaliza la bandera pressed a True cuando el botón del ratón
está presionado e invalida el formulario para causar un repintado. También reinicia la bandera
pressed cuando el botón del ratón es liberado e invalida el formulario para repintar el botón.
protected override void OnMouseDown(MouseEventArgs e)
{
this.pressed = true;
this.Invalidate();
base.OnMouseDown (e);
}
protected override void OnMouseUp(MouseEventArgs e)
{
this.pressed = false;
this.Invalidate();
base.OnMouseUp (e);
}
58
Desarrollo de aplicaciones con Windows Mobile
Personalizar un control para pintar y renderizar
Al crear un control personalizado hay que escribir el código paraimplementar el repintado del foreground.
En un control ButtonImage se puede sobreescribir el método OnPaint parapintar tanto el foreground como el background del control.
Pasos para pintar el control ButtonImage:1. Sobrescribir el método OnPaint para pintar el foreground y el background.
2. Sobrescribir el método OnPaintBackground. Es aconsejable evitar llamar a la implementación de la clase base ya que pintaría el background.
Nota: El método OnPaintBackground es llamado por el control base para dibujar el background. Si no se sobrescribe este método, aparecerá flickering (parpadeo) cuando se redibuje el control. El flickering ocurre ya que el método OnPaintBackground es llamado antes del método OnPaint.
3. Dibujar el background en el método OnPaint. Después, dibujar el foreground (usa padding para asegurarse que el texto es dibujado ligeramente fuera del borde).
4. Después de que el pintado se complete, eliminar las brochas usadas para liberar los recursos utilizados.
59
Desarrollo de aplicaciones con Windows Mobile
Personalizar un control para pintar y renderizar
Código de ejemplo para sobrescribir el método OnPaint:
protected override void OnPaint(PaintEventArgs e)
{
SolidBrush backColorBrush = new SolidBrush(this.BackColor);
e.Graphics.FillRectangle(backColorBrush, this.ClientRectangle);
Color foregroundColor = ((this.Enabled) ? this.ForeColor : SystemColors.GrayText);
SolidBrush foreColorBrush = new SolidBrush(foregroundColor);
Rectangle textRectangle = this.ClientRectangle;
e.Graphics.DrawString(this.Text, this.Font, foreColorBrush,textRectangle);
backColorBrush.Dispose();
foreColorBrush.Dispose();
base.OnPaint(e);
}
protected override void OnPaintBackground(PaintEventArgs e)
{
//…
}
60
Desarrollo de aplicaciones con Windows Mobile
Gestión de datos corporativos
SQL Server CE, Mobile y Compact Edition
Desarrollo de aplicaciones con Windows Mobile
Introducción
Objetivos Crear una base de datos SQL Server Mobile
mediante programación y mediante lasherramientas de Microsoft Visual Studio 2005 y SQLServer 2005.
Conectarse a una base de datos SQL Server Mobilemediante programación y con Server Explorer.
Devolver datos de una base de datos SQL ServerMobile.
Implementar controles enlazados con una base dedatos SQL Server Mobile.
Realizar transacciones contra una base de datosSQL Server Mobile.
Desarrollo de aplicaciones con Windows Mobile
Introducción a SQL Server Mobile
Compacto motor de bases de datos y robusto optimizador de
consultas. Características:
Soporte para múltiples conexiones concurrentes a unabase de datos.
Soporte para replicación por mezcla y acceso a datos remoto(RDA).
Asistente de instalación y conectividad que ayuda ainstalar y configurar la base de datos móvil.
Soporte para el proveedor de datos SQL Server Mobile(System.Data.SqlServerCe) de .NET Compact Framework.
Soporte para Microsoft ADO.NET y para el proveedor MicrosoftOLE DB.
Soporte para un subconjunto de la sintaxis SQL.
Desarrollo de aplicaciones con Windows Mobile
Introducción a SQL Server Mobile
Se proporciona también la herramienta de Analizador de consultas SQL, que puede utilizarse para las siguientes tareas: Crear bases de datos Verificar RDA y aplicaciones de replicación Consultar objetos mediante sentencias SELECT Compactar y reparar bases de datos Insertar y eliminar filas Modificar datos de una tabla Crear y modificar tablas e índices en una base
de datos
Desarrollo de aplicaciones con Windows Mobile
Consideraciones para el uso de SQL Server Mobile
Portabilidad SQL Server Mobile está típicamente instalado como parte una aplicación basada
en Microsoft .NET Compact Framework.
Se puede emplear RDA y replicación por mezcla para transferir y sincronizardatos entre base de datos SQL Server y dispositivos con Windows Mobile.
Tamaño de la base de datos y rendimiento SQL Server Mobile ocupa entre 2.2 MB y 2.6 MB.
El fichero de la base de datos en el dispositivo móvil puede ser de hasta 4GB.
Máximo 100.000 registros en una tabla para un rendimiento óptimo.
El tamaño del registro y la complejidad de la consulta determinan el número deregistros que se pueden almacenar en una tabla.
El rendimiento de una aplicación con bases de datos depende de la velocidaddel medio en el que se almacena la base de datos.
La base de datos en el dispositivo móvil debe ser tan pequeña como seaposible.
Mas información
Desarrollo de aplicaciones con Windows Mobile
Sincronización de datos
Los usuarios móviles a menudo necesitan trabajar sin conexióncuando no hay conectividad disponible. En estos escenarios se puedeutilizar SQL Server Mobile para proporcionar un almacenamientorelacional que será sincronizado con SQL Server cuando haya unaconexión disponible.
Pueden sincronizarse los datos en un dispositivo que tenga accesoa un servidor con el IIS de Microsoft (Microsoft Internet InformationServices).
Se pueden utilizar los servicios Web para sincronizartransacciones de datos pero no para sincronizar la base de datoscompleta con SQL Server.
Consideraciones para el uso de SQL Server Mobile
Desarrollo de aplicaciones con Windows Mobile
Crear una base de datos mediante el asistente de configuración de fuentes de datos ·
En Visual Studio 2005 se puede crear unabase de datos SQL Server Mobile desdedentro o fuera de un proyecto.
Si es necesario incluir la base de datos en unproyecto, ha de crearse como una fuente dedatos dentro del proyecto utilizando elasistente de configuración de fuentes de datos.
Después de ejecutar el asistente deconfiguración de bases de datos, la fuente dedatos está disponible en la ventana de fuentesde datos. Para visualizar la nueva base dedatos como un Dataset en la ventana deFuentes de Datos, en el menú Datos, debeseleccionarse Mostrar Fuentes de Datos.
Desarrollo de aplicaciones con Windows Mobile
Crear una base de datos dentro de un proyecto Visual Studio 2005
1. Abrir un proyecto, en el menú Datos click en Agregar Nuevo Origen de Datos.
2. En la pantalla Elegir un tipo de origen de datos Base de Datos Siguiente.
3. En Elija la conexión de datos click en Nueva Conexión.
4. En el cuadro de diálogo Elija una base de datos Microsoft SQL Server Mobile Edition
Continuar. Aparecerá el cuadro de diálogo Agregar Conexión.
NOTA: el origen de datos se cambia, pulsando Cambiar en el cuadro de diálogo Agregar Conexión.
5. En Agregar Conexión Mi PC (en la sección Origen de Datos) click en Crear (dentro de la sección Propiedades de Conexión).
6. En Crear Nueva Base de Datos SQL Server 2005 Mobile Edition especificar un path y un
nombre para la base de datos (C:\MiBaseDatos).Para especificar la contraseña, en los cuadros Nueva Contraseña y Confirmar Contraseña OK.
7. Para asegurar que la conexión se ha realizado correctamente en el cuadro de diálogo Agregar Conexión Probar Conexión
NOTA: SQL Server Mobile no soporta la apertura de ficheros de bases de datos en una red compartida.
Desarrollo de aplicaciones con Windows Mobile
Crear una base de datos dentro de un proyecto Visual Studio 2005
8. Para crear una base de datos y un DataSet dentro de un proyecto, en Elijala conexión de datos Sí, incluir datos confidenciales en la cadena de
conexión.
NOTA: Para proyectos que se usarán en aplicaciones reales, debe excluirse del código la información
confidencial, como la cadena de conexión, o asegurarse de que dicha información está cifrada.
9. Para incluir el archivo de datos en el proyecto actual, en Archivo de basede datos local Si.
10.En Elija los objetos de la base de datos seleccione las tablas u objetosque se desee incluir en el proyecto Finalizar.
Desarrollo de aplicaciones con Windows Mobile
1. En menú Ver Explorador de Servidores.
2. click derecho sobre Conexiones de datos Agregar conexión.
3. En Cambiar Origen de Datos Microsoft SQL Server Mobile Edition Continuar. Semostrará el cuadro de diálogo Agregar Conexión.
NOTA: Para cambiar la fuente de datos en el cuadro de diálogo Agregar Conexión, hacer click en Cambiar.
4. En Agregar Conexión comprobar que está seleccionado Mi PC en la sección Origen deDatos Crear
5. En Crear Nueva Base de Datos SQL Server 2005 Mobile Edition especificar un pathy un nombre para la base de datos (por ejemplo, C:\MiBaseDatos).
6. Si se desea contraseña Nueva Contraseña y Confirmar Contraseña OK.
7. En Agregar Conexión Probar Conexión. Aparecerá un mensaje indicando que laprueba de conexión se ha realizado correctamente OK.
NOTA: SQL Server Mobile no soporta apertura de ficheros de bases de datos en una red compartida.
Crear una base de datos fuera de un proyecto Visual Studio 2005
Desarrollo de aplicaciones con Windows Mobile
SQL Server Management Studio es un entorno integrado utilizadopara acceder, configurar, gestionar y desarrollar componentes SQLServer. Para crear una base de datos SQL Server Mobile:
1. Abrir SQL Server Management Studio.
2. En la ventana de conexión al servidor, en Nombre del Servidor,introduzca (local) Conectar.
3. En la ventana de consulta, escribir la consulta para crear una base dedatos SQL Server Mobile.
4. Crear tablas y rellenarlas con datos en la nueva base de datos.
5. Para ejecutar una consulta click sobre Ejecutar.
Crear una base de datos utilizando SQL Server Management Studio
Desarrollo de aplicaciones con Windows Mobile
Crear una base de datos utilizando SQL Server Management Studio
Ejemplo: creación de una base de datos llamada SQLMobile, una tabla llamada MembershipData e introducción de datos en la tabla.
USE Master;GODROP Database SQLMobile;GOCREATE DATABASE SQLMobile;GOUSE SQLMobile;GOCREATE TABLE MembershipData (MemberId INTEGER IDENTITY (1,1) CONSTRAINT pkMemberId PRIMARY KEY, MemberName NVarChar (50));INSERT INTO MembershipData (MemberName) VALUES ('Mr Don Hall');
Desarrollo de aplicaciones con Windows Mobile
Crear una base de datos con el Analizador de consultas de SQL Server Mobile
El desarrollo de una aplicación para un dispositivo móvil exigela instalación del motor de bases de datos SQL Server Mobile yel Analizador de Consultas de SQL Server Mobile.
Se puede instalar el Analizador de Consultas de SQL ServerMobile en el dispositivo copiando y ejecutando el fichero .cabdel software de desarrollo (SDK).
NOTA: El Analizador de Consultas de SQL Server Mobile sólo se ejecuta en dispositivosmóviles.
En la pestaña Objetos de la ventana del Analizador deConsultas se pueden agregar o quitar bases de datos, tablas eíndices y especificar algunas de sus propiedades.
Para los requisitos de definición de tablas e índices específicos,se deben ejecutar las sentencias SQL apropiadas en la pestañaSQL de la ventana del analizador de consultas.
Desarrollo de aplicaciones con Windows Mobile
1. En el Analizador de Consultas Objetos carpeta Bases de Datos
botón estado de la conexión para conectar a una base de datos. Este botóndebe mostrar una flecha verde. Si el botón muestra un cuadrado rojo, indicaque se ha establecido una conexión con una base de datos. Si se pulsa elbotón se cerrará la conexión con la bases de datos.NOTA: SQL Server Mobile permite conectarse a una única base de datos simultáneamente.
2. En Conectar a SQL Server Mobile especificar nombre de la base de datos click en Nueva base de Datos.
3. Para proporcionar una contraseña para la base de datos, en la caja de textoContraseña, introduzca una contraseña.
4. En Tipo seleccionar una colección de base de datos.
5. Para cifrar la base de datos Cifrar.
6. Para crear la base de datos Crear.
Crear una base de datos con el Analizador de consultas de SQL Server Mobile
Desarrollo de aplicaciones con Windows Mobile
Instalación manual del Analizador de Consultas
1. Instalar el .NET Compact Framework en el dispositivo copiar el siguiente archivo en el dispositivo:C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\version\version\WindowsCE\platform\processor\NETCFver.platform.processor.cab
version versión del SDK.plataform plataforma del dispositivo.processor procesador del dispositivo.NETCF versión del .NET Compact Framework.
Ejemplo:C:\Program Files\Microsoft Visual Studio
8\SmartDevices\SDK\CompactFramework\2.0\v2.0\windowsce\wce500\armv4i\NETCFv2.wm.ARMV4I.cab
2. Para instalar el .NET Compact Framework en el dispositivo, haga click en el archivo .cab.
3. Copie en el dispositivo el siguiente fichero: C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v3.0\platform\processor\sqlce30.dev.ENU. platform. processor.cab
4. Para instalar el Analizador de Consultas en el dispositivo, haga click en el archive sqlce30.dev.ENU.platform.processor.cab. Se agregará un acceso directo para el Analizador de Consultas en el menú Inicio del dispositivo.
Desarrollo de aplicaciones con Windows Mobile
Crear una Base de Datos mediante programación
Miembro Descripción
SqlCeEngine Sobrecarga del constructor público que inicializa una nueva instancia de la clase SqlCeEngine.
LocalConnectionString Propiedad pública que obtiene o establece la cadena de conexión a la base de datos SQL Server Mobile.
Compact
Método público que recupera el espacio desaprovechado en la base de datos SQL Server creando un nuevo
archivo de base de datos a partir del fichero existente. Este método también se usa para cambiar ajustes como
el orden collating, cifrado o contraseña de la base de datos.
CreateDatabase Método público que crea una nueva base de datos.
Dispose Método público que libera todos los recursos SQL Server Mobile SqlCeEngine.
Equals Método público sobrecargado que determina si dos instancias de un mismo objeto son iguales.
GetHashCode Método publico que sirve como función de hash para un tipo determinado. (Heredado de Objetc.)
GetType Método publico que obtiene el tipo de la instancia actual. (Heredado de Objetc.)
ReferenceEqualsMétodo público que determina si las instancias del objeto especificado son la misma instancia. (Heredado de
Object.)
Repair Método público que repara una base de datos corrupta.
ShrinkMétodo público que libera espacio desaprovechado en la base de datos SQL Server Mobile moviendo páginas
vacías al final del archivo y truncándolo después.
ToString Método público que devuelve un string que representa el objeto actual. (Heredado de Object.)
VerifyMétodo público que recalcula los checksums de cada página de la base de datos y compara los nuevos
checksums con los valores esperados.
FinalizeMétodo privado que permite a un objeto intentar liberar recursos y realizar otras operaciones de limpieza
antes de que el objeto sea liberado por el recolector de basura. (Heredado de Object.)
MemberwiseClone Método privado que crea una copia del objeto actual. (Heredado de Object.)
Ejemplo:
String cadenaconexion = “Data Source = „miBBDD.sdf‟; Password = „mipaSSw0rd‟; Encrypt = TRUE;”;
SqlCeEngine engine = new SqlCeEngine(cadenaconexion);
engine.CreateDatabase();
Desarrollo de aplicaciones con Windows Mobile
Conectando a una Base de Datos SQL Server Mobile
Conectarse a una base de datos SQL Server Mobile
mediante el Explorador de Servidores:
1. En Visual Studio 2005 menú Ver seleccionarExplorador de Servidores.
2. En Explorador de Servidores botón derecho sobreConexiones de Datos Agregar Conexión.
3. En Agregar Conexión seleccionar Cambiar.4. En Cambiar Origen de Datos Orígenes de Datos
seleccionar Microsoft SQL Server Mobile Edition,como se muestra en la imagen.
5. En la lista de Proveedores de datos seleccionar .NETFramework Data Provider for SQL Server MobileEdition OK.
6. En Agregar Conexión Propiedades de la Conexión navegar hasta la base de datos a la que se deseeconectarse Abrir OK.
Desarrollo de aplicaciones con Windows Mobile
Tarea Descripción
Configurar una conexión
La conexión se configura utilizando un objeto
SqlCeConnection. Este objeto representa una única
conexión a un origen de datos. Cuando se crea una
instancia de SqlCeConnection, todas las propiedades
toman sus valores iniciales.
Abrir una conexión
La conexión a una base de datos SQL Server Mobile se
lleva a cabo mediante el método Open del objeto
SqlCeConnection. El método Open establece una nueva
conexión al origen de datos.
Cerrar la conexión
La conexión con la base de datos SQL Server Mobile se
cierra con el método Close del objeto SqlCeConnection.
El método Close reanuda cualquier transacción pendiente
y finaliza la conexión. Si SqlCeConnection está fuera de
ámbito, la conexión no se cierra. Se debe cerrar
explícitamente la conexión llamando al método Close o al
método Dispose.
Conectarse a una base de datos SQL Server Mobile programando. Realizar las siguientes
tareas:
Conectando a una Base de Datos SQL Server Mobile
Desarrollo de aplicaciones con Windows Mobile
El siguiente código utiliza un objetoSqlCeConnection para conectarse a la basede datos myDatabase.sdf, inserta una fila enla tabla Customers y cierra la conexión.
SqlCeConnection conn = null;conn = new SqlCeConnection("Data Source = MyDatabase.sdf; Password ='<pwd>'");conn.Open();SqlCeCommand cmd = conn.CreateCommand();cmd.CommandText ="INSERT INTO Customers ([Customer ID], [Company Name]) “ Values('NWIND', 'Northwind Traders')";cmd.ExecuteNonQuery();conn.Close();
Conectarse a una base de datos SQL Server Mobile programando
Desarrollo de aplicaciones con Windows Mobile
Escenario Descripción
Conexión a un
archivo de base de
datos que no existe
Este es un error del tipo motor y se indica mediante el código de error25046. Este error se produce cuando se trata de conectar a una basede datos cuyo fichero no existe. El siguiente código de ejemplomuestra cómo implementar el manejo de excepciones para este error:
try
{
//...
}
catch (SqlCeException e)
{
if(25046 == e.NativeError) //SSCE_M_FILENOTFOUND
MessageBox.Show("The database file cannot " +
"be found. Check the path " +
"to the database." + e.Message);
}
Manejo de Excepciones con SQL Server Mobile
Desarrollo de aplicaciones con Windows Mobile
Manejo de Excepciones con SQL Server Mobile
Escenario Descripción
Acceso a una
tabla que no
existe
Este es un error del tipo agente cliente indicado por el número de error 28607. Este
error ocurre cuando se trata de acceder a una tabla que no existe en la base de datos.
El siguiente código muestra cómo implementar el manejo de excepciones para este
error:try
{
//...
}
catch (SqlCeException e)
{
if(28607 == e.NativeError) //SSCE_M_TABLEDOESNOTEXIST
MessageBox.Show("The table does not exist. "
+ e.Message);
}
Modificando el
tipo de la
columna de datos
Este es otro error de tipo agente cliente indicado por el número de error 28608. Este
error se genera cuando se trata de modificar una columna cuyo tipo de datos no permite
ninguna modificación. El siguiente código muestra cómo realizar el manejo de
excepciones para este error:try
{
//...
}
catch (SqlCeException e)
{
if(28608 == e.NativeError) //SSCE_M_CANTMODIFYCOLUMNTYPE
MessageBox.Show("Internal error: " +
"Cannot modify the column type. " + e.Message);
}
Desarrollo de aplicaciones con Windows Mobile
Manejo de Excepciones con SQL Server Mobile
Escenario Descripción
Acceso a una
columna no
válida
Este es un error del tipo procesador de consultas indicado por el número de error 25503.
Se genera cuando se intenta acceder a un nombre de columna no válido. El
siguiente código muestra cómo realizar el manejo de excepciones para este error:try
{
//...
}
catch (SqlCeException e)
{
if(25503 == e.NativeError) //SSCE_M_QP_BAD_COLNAME
MessageBox.Show("The column name is not valid. "
+ e.Message);
}
Inserción de
valores nulos en
una columna
Este es un error del motor y está indicado por el número de error 25200. Se produce
cuando se intenta introducir valores nulos en una columna en la que no están
permitidos valores nulos. El siguiente código muestra cómo realizar el manejo de
excepciones para este error:try
{
//...
}
catch (SqlCeException e)
{
if(25200 == e.NativeError) //SSCE_WRN_COLUMNNULL
MessageBox.Show("The column cannot have " +
"NULL values. " + e.Message);
}
Desarrollo de aplicaciones con Windows Mobile
Recuperando datos de una Base de Datos SQL Server Mobile
Después de conectar a SQL Server Mobile, es posible recuperar datos de una base de datos SQL Server Mobile y manipularlos. Cuando se desarrollan aplicaciones en Visual Studio 2005, se pueden recuperar datos de una base de datos SQL Server Mobile utilizando un dataset o un resulset.
En el siguiente bloque se explicarán:
Los sentencias SQL que pueden emplearse con SQL Server Mobile.
Cómo ejecutar un sentencia SQL contra una base de datos SQL Server Mobile.
Cómo devolver y actualizar un Dataset utilizando SqlCedataAdapter.
Cómo devolver datos empleando SqlCeDataReader.
Cómo devolver datos empleando SqlCeResultSet.
Cómo devolver datos utilizando acceso directo a una tabla.
Desarrollo de aplicaciones con Windows Mobile
Sentencias SQL Soportadas
Sentencias SQL soportados por SQL Server Mobile:
CREATE DATABASE
INSERT
SELECT
CREATE TABLE
UPDATEALTER TABLE
DELETE
CREATE INDEX
DROP INDEX
DROP TABLE
Desarrollo de aplicaciones con Windows Mobile
Funciones soportadas por SQL Server Mobile
Funciones de
agregado
Funciones de fecha y
horaFunciones matemáticas
Funciones de cadena
Funciones del
sistema
AVGAVG
COUNT
MAX
MIN
SUM
DATEADD
DATEDIFF
DATENAME
DATEPART
GETDATE
ACOS
ASIN
ATAN
ATN2
CEILING
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
TAN
NCHAR
CHARINDEX
LEN
LOWER
LTRIM_lce_ltrim
PATINDEX
REPLACE
REPLICATE
RTRIM
SPACE_Ice_space
STR
STUFF
SUBSTRING
UNICODE
UPPER_lce_upper
@@IDENTITY
COALESCE
DATALENGTH
Desarrollo de aplicaciones con Windows Mobile
Tipos de datos soportados por SQL Server Mobile
Bigint
image
ntext
Synonym:nvarchar(n)
Binary(n)
integer
numeric (p, s)
tinyint
Bit
money
Real
uniqueidentifier
datetime
national character varying(n)
ROWGUIDCOL
varbinary(n)
Float
national character(n)
smallint
IDENTITY [(s, i)]
nchar
Synonym:nchar(n)
Desarrollo de aplicaciones con Windows Mobile
Operadores soportados por SQL Server Mobile
+ (Add)~ (NOT)!<(Not Less Than)- (Subtract)= (Equals)!>(Not Greater Than)* (Multiply)>(Greater Than)/ (Divide)<(Less Than)% (Modulo)>= (Greater Than or Equal To)+ (Positive)&(AND)<= (Less Than or Equal To)
- (Negative)| (OR)<>(Not Equal To)^ (Exclusive OR)!= (Not Equal To)INLIKENOTALLORANDSOMEANYBETWEENEXISTS
Desarrollo de aplicaciones con Windows Mobile
Ejecutar una sentencia SQL
Método Descripción
ExecuteReaderEjecuta un comando que devuelve
múltiples resultados.
ExecuteNonQueryEjecuta comandos SQL como INSERT,
DELETE y UPDATE.
ExecuteScalarDevuelve un solo valor, por ejemplo un
valor agregado, de una base de datos.
ExecuteResultSetEjecuta comandos y devuelve un
conjunto de resultados.
El objeto SqlCeCommand permite enviar un sentencia SQL a un origen dedatos. Este objeto soporta los siguientes métodos que pueden emplearse paraejecutar comandos contra una base de datos:
Desarrollo de aplicaciones con Windows Mobile
Devolver y actualizar un DataSetutilizando SqlCeDataAdapter
La clase SqlCeDataAdapter:
Representa un conjunto de comandos, para manejo de datos yconexión a bases de datos.
Se utiliza para devolver y salvar datos del origen de datos.
Un objeto SqlCeDataAdapter usa el método Fill para devolverdatos procedentes de la fuente de datos y guardarlos en elobjeto DataSet. Utiliza el método Update para enviar loscambios realizados en el objeto DataSet al origen de datos.
Desarrollo de aplicaciones con Windows Mobile
Devolver y actualizar un DataSetutilizando SqlCeDataAdapter
Llenar un DataSet:1. Crear un objeto Connection usando la clase SqlCeDataAdapter.
2. Crear un sentencia SQL utilizando la clase SqlCeDataAdapter.
3. Crear una instancia de SqlCeDataAdapter para especificar la propiedadSelectCommand.
4. Crear una instancia de la clase DataSet para almacenar los datos de lafuente de datos.
5. Llamar al método Fill de la clase SqlCeDataAdapter, especificando elobjeto DataSet que se llenará.
Ejemplo: selección de registros de un origen de datos y llenado de un objetoDataSet con las filas seleccionadas:
SqlCeConnection conn =new SqlCeConnection("Data Source = AdventureWorks.sdf");SqlCeCommand selectCmd = conn.CreateCommand();selectCmd.CommandText = "SELECT * FROM Employees";SqlCeDataAdapter adp = new SqlCeDataAdapter(selectCmd);DataSet ds = new DataSet();adp.Fill(ds);
Desarrollo de aplicaciones con Windows Mobile
Devolver y actualizar un DataSetutilizando SqlCeDataAdapter
Se puede manipular y actualizar una base de datos utilizando los objetosSqlCeDataAdapter y DataSet.
La clase SqlCeDataAdapter soporta las siguientes propiedades que ayudan amanipular y actualizar datos:
SelectCommand. Obtiene o establece un sentencia SQL para seleccionar registros enla fuente de datos.
InserCommand. Obtiene o establece un sentencia SQL para insertar nuevos registrosen la fuente de datos.
DeleteCommand. Obtiene o establece un sentencia SQL para eliminar registros delDataSet.
UpdateCommand. Obtiene o establece un comando para actualizar registros en lafuente de datos.
TableMappings. Establece una colección que proporciona el mapeo maestro entre unatabla del origen de datos y un DataTable.
Desarrollo de aplicaciones con Windows Mobile
Devolver datos mediante SqlCeDataReader
La clase SqlceDataReader se utiliza para leer flujos de datos de un origen de datos.
Si se desea recuperar datos con índices, debe emplearse el método Seek de la claseSqlceDataReader.
Para optimizar la operación de lectura hay que restringir el conjunto de filas que seleerán utilizando el método SetRange de la clase SqlCeCommand, junto con elmétodo Seek.
Devolver datos con un objeto SqlCeDataReader: Se utiliza el métodoExecuteReader del objeto SqlCeCommand para crear un objetoSqlceDataReader.
Ejemplo:conn = new SqlCeConnection("Data Source = AdventureWorks.sdf");conn.Open();cmd = new SqlCeCommand("SELECT * FROM DimEmployee", conn);rdr = cmd.ExecuteReader();while (rdr.Read()){
//Read values from Reader}
rdr.Close();
Desarrollo de aplicaciones con Windows Mobile
Devolver datos utilizando SqlCeResultSet
El objeto DataSet ayuda a examinar un conjunto de filas y actualizarlas.
El objeto SqlCeDataReader utiliza un cursor no actualizable de sóloavance, pero proporciona mejor rendimiento que el objeto DataSet.
SQL Server Mobile tiene soporte para el objeto SqlCeResultSet, el cualcombina las características del objeto DataSet con el rendimientomejorado del objeto SqlCeDataReader.
Posibles modificaciones del objeto SqlCeResultSet :Opción Descripción
Insensitive El objeto ResultSet no detecta los cambios
realizados en el origen de datos.
None No se especifican opciones en el objeto
ResultSet.
Scrollable El objeto ResultSet puede recorrerse hacia
delante o hacia atrás.
Sensitive El objeto ResultSet puede detectar los cambios
realizados en la fuente de datos.
Updatable El objeto ResultSet permite actualizaciones.
NOTA: Para permitir que Visual Studio 2005 genere el código de un objeto ResultSet, se debe establecer el valor MSResultSetGenerator a CustomTool.
Desarrollo de aplicaciones con Windows Mobile
Ejemplo: empleo de un objeto SqlCeResultSet para recuperar datos de una fuente de datos:
SqlCeConnection conn = null;try{
//Create database and connection object here and open the same.//create a CREATE statement to create table and then execute the same using ExecuteNonQuery herecmd.CommandText = "SELECT * FROM myTable";SqlCeResultSet rs =cmd.ExecuteResultSet(ResultSetOptions.Updatable | ResultSetOptions.Scrollable);SqlCeUpdatableRecord rec = rs.CreateRecord();rec.SetInt32(0, 34);rec.SetDecimal(1, (decimal)44.66);rec.SetString(2, "Sample text");rs.Insert(rec);
}catch (Exception e){
MessageBox.Show(e.Message);}finally{
conn.Close();}
Devolver datos utilizando SqlCeResultSet
Desarrollo de aplicaciones con Windows Mobile
Devolver Datos mediante Acceso Directo a una Tabla
La estructura de las tablas soporta cursores de tabla base, los cuales mejoranel rendimiento puesto que trabajan directamente con el motor dealmacenamiento.
Los cursores de tabla base pueden avanzar o retroceder y puedenactualizarse, además usan mínimos recursos.
Las aplicaciones se benefician en su mayoría del acceso directo a las tablasson aquellas que envían un elevado número de consultas contra un pequeñosconjunto de tablas. Sin embargo el acceso directo a tablas no se puede utilizarcon tablas que se hayan unido mediante join(joined tables).
Para utilizar el acceso directo a tablas la propiedad CommanType del objetoSqlCeCommand debe tomar el valor TableDirect. La propiedadCommantdText del objeto SqlCeCommand debe contener el nombre de latabla a la que se quiere acceder. Se puede usar el acceso directo a tablas conel objeto SqlCeDataReader o con el objeto SqlCeResultSet.
Desarrollo de aplicaciones con Windows Mobile
Devolver Datos mediante Acceso Directo a una Tabla
Objeto
SqlCeDataReader
Ejemplo: cómo abrir una tabla subyacente. Proporciona el mismo resultado que la
ejecución de la consulta Select * from StudentTable pero sin utilizar el procesador de
consultas.SqlCeCommand cmd = new SqlCeCommand("StudentTable", conn);
cmd.CommandType = CommandType.TableDirect;
SqlCeDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
// ...
}
Objeto
SqlCeResultSet
En el siguiente código se crea un nuevo registro con el método CreateRecord, se
crean valores para el registro y a continuación se añade al objeto ResultSet. Para un
óptimo rendimiento, la propiedad CommandType debe tomar el valor TableDirect.
cmd.CommandText = "myTable";
cmd.CommandType = CommandType.TableDirect;
SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.Updatable |
ResultSetOptions.Scrollable);
SqlCeUpdatableRecord rec = rs.CreateRecord();
//Insert record
rec.SetInt32(0, 35);
rec.SetDecimal(1, (decimal)94.25);
rec.SetString(2, "Sample text 2");
rs.Insert(rec);
Desarrollo de aplicaciones con Windows Mobile
Integración con servicios Web
Consumo de servicios Web.
Asincronísmo
Desarrollo de aplicaciones con Windows Mobile
LLamar a un Servicio Web
El Compact Framework soporta el uso de servicios web en aplicaciones basadas en Windows Mobile
Se puede diseñar una aplicación que llame a un servicio Web síncrona o asíncronamente
Cuando la aplicación realiza una llamada síncrona a un servicio web, el usuario debe esperar a que el servicio web responda antes de interactuar con la aplicación
Cuando la aplicación realiza una llamada asíncrona a un servicio web, el usuario puede interactuar con la aplicación mientras se realiza la llamada al servicio web.
Desarrollo de aplicaciones con Windows Mobile
Agregar una Referencia a un Servicio Web
Para llamar a un servicio web en un proyecto Windows Mobile, se debe añadir una referencia web al proyecto
Cuando se añade una referencia web al proyecto, Visual Studio 2005 automáticamente genera una clase proxy
La clase proxy incluye métodos para acceder al servicio web síncrona o asíncronamente.
Estos métodos sirven como un proxy para cada método expuesto por el servicio web. Por defecto la clase proxy no es visible en el Explorador de Soluciones.
Desarrollo de aplicaciones con Windows Mobile
Agregar una Referencia a un Servicio Web
Para agregar una referencia web, realice los siguientes pasos:
1. En el explorador de soluciones, seleccione el proyecto que llamará al
servicio web.
2. En el menú Proyecto, haga click sobre Agregar Referencia Web.
3. En el cuadro de diálogo Agregar Referencia Web, introduzca la URL del servicio web al que se desea llamar y luego haga click en OK.
4. En la caja Nombre de la referencia Web, introduzca el nombre que se utilizará en el código para acceder al servicio web seleccionado.
5. Para crear una referencia al servicio web, haga click sobre Agregar Referencia. La nueva referencia se mostrará en el Explorador de Soluciones bajo el nodo Referencias Web.
Desarrollo de aplicaciones con Windows Mobile
Llamadas Síncronas a Servicios Web
Cuando una aplicación realiza una llamada a un servicio web, el hilo que realiza la llamada se queda bloqueado
Este bloqueo continúa hasta que el servicio web devuelve el resultado del método que realizó la llamada
Este bloqueo puede originar que el interfaz de usuario permanezca insensible a la interacción del usuario
Por tanto, se deben utilizar llamadas síncronas para métodos que se procesan y son devueltos rápidamente por el servicio web.
El código siguiente muestra cómo crear una instancia de una clase proxy de un servicio
web y cómo llamar al método GetItems para recuperar una lista de libros:BookCatalog.Service1 bookcatalog =
new BookCatalog.Service1();DataSet ds = bookcatalog.GetItems();
Desarrollo de aplicaciones con Windows Mobile
Llamadas a Servicios Web asíncronas
Una llamada se lleva a cabo por un hilo diferente del hilo que está ejecutando el interfaz de usuario
La interacción del usuario con la aplicación no se ve afectada mientras se accede al servicio web.
Para iniciar/finalizar un servicio web, se debe llamar al método Begin .
Este método devuelve un objeto System.Web.Services.Protocol.WebClientAsyncResult que proporciona información del estado de la llamada pendiente
Para finalizar el servicio web y recuperar la respuesta del servicio web, debe llamarse.
Desarrollo de aplicaciones con Windows Mobile
Ejemplo servicio web asíncrono
El siguiente ejemplo realiza un servicio web asíncrono para llamar a los métodos BegingetItems y EndGetItems:
private void button2_Click(object sender, System.EventArgs e){
BookCatalog.Service1 ws = new BookCatalog.Service1();AsyncCallback cb = new AsyncCallback(ServiceCallback);ws.BeginGetItems(cb,ws);
}
private void ServiceCallback(IAsyncResult ar){
BookCatalog.Service1 ws = (BookCatalog.Service1)ar.AsyncState;DataSet ds = ws.EndGetItems(ar);
}
Desarrollo de aplicaciones con Windows Mobile
Integración con Outlook Mobile
SMS, Mail, Attachments, Contacts, Tasks Appointments
Desarrollo de aplicaciones con Windows Mobile
Contenidos
Herramientas para Windows Mobile
Recuperar el estado del sistema utilizando el agente de notificaciones y estado
Integrar Características de Outlook Mobile en una aplicación Windows Mobile
Utilizando la Tecnología de la Plataforma de Invocación para Llamar a Funciones DLL no Manejadas
Implementando Comunicación entre Procesos
Desarrollo de aplicaciones con Windows Mobile
Herramientas de desarrollo
Emuladores de dispositivo
Cellular emulator
Fake GPS
Hopper
Security Configuration Manager
106
Desarrollo de aplicaciones con Windows Mobile
Emulador de dispositivos
Verdadero emulador ARMv4
Único conjunto de archivos para emulador y dispositivos reales
Ejecución rápida y fiable
Emuladores PPC 2003SE, Smartphone 2003SE, WM 5.0 PPC y WM 5.0 Smartphone, WM 6 Classic, Professional y Standard.Además de Windows CE 5.0 y CE 6.0
Desarrollo de aplicaciones con Windows Mobile
Emulador de dispositivos
Desarrollo de aplicaciones con Windows Mobile
Device Emulator
Características:
Emulación del estado de la energía
Emulación de perfiles de teléfono
Emulación de tarjeta de almacenamiento
Desarrollo de aplicaciones con Windows Mobile
Cellular Emulator
Emulador basado en software
Facilita desarrollo y testeo bajo plataforma WM
Testeo de aplicaciones bajo diferentes redes inalámbricas: GSM/GPRS y/o UMTS
Desarrollo de aplicaciones con Windows Mobile
FakeGPS
Prueba de aplicaciones para posicionamiento sin necesidad de acceso a un dispositivo GPS
Archivo de texto con lista de mensajes GPS NMEA
EJEMPLO:
$GPGLL,4738.0173,N,12211.1874,W,191934.767,A*21
$GPGSA,A,3,08,27,10,28,13,19,,,,,,,2.6,1.4,2.3*3E
$GPGSV,3,1,9,8,71,307,43,27,78,59,41,3,21,47,0,10,26,283,40*77
$GPGSV,3,2,9,29,13,317,0,28,37,226,37,13,32,155,36,19,37,79,42*42
$GPGSV,3,3,9,134,0,0,0*46
$GPRMC,191934.767,A,4738.0173,N,12211.1874,W,0.109623,12.14,291004,,*2
1 $GPGGA,191935.767,4738.0172,N,12211.1874,W,1,06,1.4,32.9,M,-
17.2,M,0.0,0000*75
$GPGLL,4738.0172,N,12211.1874,W,191935.767,A*21
$GPGSA,A,3,08,27,10,28,13,19,,,,,,,2.6,1.4,2.3*3E
$GPRMC,191935.767,A,4738.0172,N,12211.1874,W,0.081611,15.81,291004,,*2
A
Desarrollo de aplicaciones con Windows Mobile
Hopper
Utilidad para realizar pruebas de esfuerzo
Simula usuario haciendo rápidos clics en ubicaciones aleatorias
Causa nivel de uso no estructurado que puede destapar errores inesperados
Puede aplicarse a una o varias aplicaciones simultáneamente aumentando el nivel de aleatoriedad
Debe incluirse en todas las pruebas de aplicación
Comprueba estabilidad de la aplicación y de dispositivo
Desarrollo de aplicaciones con Windows Mobile
Security Configuration Manager
Se ejecuta en el equipo de escritorio
Ofrece dos servicios básicos:– Muestra configuración de
seguridad actual del dispositivo WM o del emulador
– Permite configurar el emulador con directivas comunes de seguridad para testear aplicaciones
Desarrollo de aplicaciones con Windows Mobile
Introducción al agente de estadoy notificaciones
El agente de estado y notificaciones es un almacén de datos que proporciona un modelo publicador-suscriptor para distribuir notificaciones de cambio de datos.
Esta API almacena la información del estado, monitoriza cambios en los valores de estado y genera notificaciones sobre el estado de los cambios.
Se puede implementar este API en las aplicaciones utilizando las clases disponibles en el ensamblado Microsoft.WindowsMobile.Status
El API usa el registro como almacén de datos para almacenar valores en la clave de registro HKEY_LOCAL_MACHINE\System\State mientras que la información de estado por usuario se almacena en la clave HKEY_CURRENT_USER\System\State.
Desarrollo de aplicaciones con Windows Mobile
Valores de estado del sistema disponibles
Desarrollo de aplicaciones con Windows Mobile
Valores de estado del sistema disponibles
Estado de la red del teléfono. Se pueden utilizar propiedades del sistema para seguir el estado de disponibilidad de la red y la potencia de señal
Información de llamada. Las propiedades del sistema relacionadas con llamadas entrantes, salientes o actuales permiten realizar un seguimiento del estado de las llamadas
Información de red. Las propiedades del sistema permiten realizar un seguimiento de la de la red Wi-Fi.
Eventos del Gestor de información personal (PIM Personal Information Manager). Con las propiedades del sistema se puede seguir los cambios realizados en el calendario, contactos o tareas.
Desarrollo de aplicaciones con Windows Mobile
Valores de estado del sistema disponibles
Batería. Se pueden utilizar las propiedades del sistema para realizar un seguimiento del estado de la batería así como de la potencia restante de la batería principal o de la batería de respaldo.
Mensajería. Las propiedades del sistema permiten seguir los mensajes desde los servicios non-Microsoft ActiveSync e-mail y SMS (Short MessageService).
Desarrollo de aplicaciones con Windows Mobile
Consultar los Valores del Sistema Actuales
1. Agregar una referencia al espacio de nombres: agregar una referencia al espacio de nombres Microsoft.WindowsMobile.Status, este espacio de nombres proporciona clases como StateBase y SystemState que exponen el API del agente de estado y notificaciones.
2. Seleccionar el estado a monitorizar: El enumerador SystemProperty en el Explorador de Objetos proporciona una lista de propiedades de valores de estado, como PhoneSignalStrength y PhoneRoaming.
3. Agregar una instancia de la clase SystemState: la clase SystemState para recuperar el valor actual del estado. Se puede utilizar la clase SystemState para generar una notificación cuando el estado cambia.
4. Agregar un gestor de evento: Con la clase SystemState y un método para manejar el evento SystemState.Changed. Este evento se lanza cuando cambia un estado del sistema.
5. Responder al cambio de estado: El método SystemState.GetValuedevuelve el valor de un estado del sistema.
Desarrollo de aplicaciones con Windows Mobile
Monitorizar el estado del GPRSSolicitar una notificación mediante un manejador de evento
SystemState gprsCoverage;SystemState radioState;private void Trace(string s){
this.gprsCoverage =new SystemState (SystemProperty.PhoneGprsCoverage);gprsCoverage.Changed += new ChangeEventHandler(gprsCoverage_Changed);this.radioState = new SystemState(SystemProperty.PhoneRadioOff);radioState.Changed += new ChangeEventHandler(radioState_Changed);
}void radioState_Changed(object sender, ChangeEventArgs args){
//Añadir la lógica aquí}void gprsCoverage_Changed(object sender, ChangeEventArgs args){
//Añadir la lógica aquí}
Desarrollo de aplicaciones con Windows Mobile
Monitorizar el estado de la radioObtener el valor actual consultando el estado del sistema
Private void GetRadioState()
{
if (SystemState.PhoneRadioOff)
{
//Lógica si la telefonía está apagada
}
else
{
//Lógica si la telefonía está encendida
}
}
Desarrollo de aplicaciones con Windows Mobile
Gestión del Uso de la Batería del Dispositivo
Las aplicaciones de recursos intensivos afectan a la potencia de la batería del dispositivo móvil
Si se ejecutan varios procesos simultáneamente o si se deja la pantalla del dispositivo activa durante un largo periodo de tiempo se consumirá batería, reduciéndose el tiempo de standby del dispositivo
• Por tanto se debe monitorizar constantemente el estado de la batería del dispositivo móvil y proporcionar información al usuario sobre su estado
• Las propiedades SystemState.PowerBatteryState y SystemState.PowerBatteryStrength determinan el estado de la batería.
Desarrollo de aplicaciones con Windows Mobile
La propiedad SystemState.PowerBatteryState
Charging
Indica que la batería está cargándose Critical
Indica que la carga de la batería es muy baja y necesita cargarse
inmediatamente Low
Indica que la carga de batería es baja Normal
Indica que la batería está cargada adecuadamente NotPresent
Indica que la batería no hay carga en la batería
Desarrollo de aplicaciones con Windows Mobile
La propiedad SystemState.PowerBatteryStrength
La propiedad SystemState.PowerBatteryStrength recupera el nivel de batería restante en el dispositivo. Esta propiedad indica el nivel de batería a través de los siguientes valores del enumerador BatteryLevel
VeryHigh81 - 100%
High61 - 80%
Medium41 - 60%
Low21 - 40%
VeryLow0 - 21%
Desarrollo de aplicaciones con Windows Mobile
Espacio de nombres Microsoft.WindowsMobile.PocketOutlook
1. En Management Studio, abra el Explorador de objetos.2. En el Explorador de objetos, haga click sobre Conectar y luego
seleccione SQL Server Mobile.3. En el cuadro de diálogo Conectar al servidor, elija la base de datos
SQL Server Mobile que desee compactar y haga click en Conectar.4. En el explorador de objetos, haga click con el botón derecho del ratón
sobre la base de datos SQL Server Mobile recién agregada, y a continuación haga click en Propiedades.
5. En el cuadro de diálogo Propiedades de la base de datos, seleccione Realizar compactación de la base de datos completa (Perform full database compaction).
6. En Opciones de Archivo (File Options), seleccione la opción apropiada dependiendo de si lo que se necesita es reemplazar la base de datos o crear una nueva base de datos con un archivo nuevo tras la compactación. La casilla Sobreescribir el archivo de base de datos existente (Overwrite Existing Database File) modifica el nombre y localización de la base de datos existente y la reemplaza
Desarrollo de aplicaciones con Windows Mobile
Microsoft.WindowsMobile.PocketOutlook
•EmmailAcount: representa una cuenta Pocket Outlook e-mail.
•EmailMessage: representa un e-mail.
•SmsAccount: proporciona acceso a la cuenta SMS de Pocket Outlook, y a las carpetas de la cuenta SMS .
•SmsMessage: representa un mensaje SMS.
•Contact: representa un elemento de la colección Contact.
•ContactCollection: representa la colección de elementos Contact presentes en una carpeta de contactos.
•ContactFolder: contiene la colección Contact.
Desarrollo de aplicaciones con Windows Mobile
Microsoft.WindowsMobile.PocketOutlook
Appointment: representa un elemento Appointment en la colección de citas. Una cita es un bloque de tiempo que aparece en un calendario Pocket Outlook. Puede tener una fecha de inicio y fin, un lugar y se puede recurrir. Una cita se convierte en una reunión si se programa y se envía a otros contactos.
AppointmentCollection: representa la colección de elementos cita en una carpeta de citas.
AppointmentFolder: contiene la colección de citas.
Task: representa un elemento tarea en la colección de tareas. Una tarea representa un elemento que se puede activar y que se prioriza, se delega o se completa.
TaskCollection: representa la colección de elementos tarea en una carpeta de tareas.
TaskFolder: contiene la colección de tareas.
Desarrollo de aplicaciones con Windows Mobile
Enviar e Interceptar Mensajes SMS
Se puede integrar el envío y recepción de mensajes SMS en la aplicación mediante la clase.
Esta clase soporta propiedades y métodos que te permiten enviar y recibir mensajes SMS.
Desarrollo de aplicaciones con Windows Mobile
Enviar un mensaje SMS
Para enviar un mensaje SMS se ha de especificar el mensaje que se enviará en la propiedad SmSMessage.Body y el destinatario del mensaje mediante el método SmSMessage.To.Add.
También se puede especificar que se envíe un mensaje de acuso de recibo estableciendo la propiedad SmsMessage.RequestDeliveryReport a true.
Después de crear el mensaje, se puede enviar el mensaje con el método Send la clase SmsMessage.
Desarrollo de aplicaciones con Windows Mobile
Enviar un mensaje SMS a un destinatario
• La clase ChooseContactDialog se puede utilizar para mostrar un cuadro de diálogo que pida al usuario que especifique los detalles de contacto para enviar un mensaje SMS.
• Se puede especificar el título del cuadro de diálogo utilizando la propiedad contactDialog.Title.
• También es posible especificar que un mensaje de acuso de recibo se envíe al usuario que envía un mensaje estableciendo el valor de la propiedad SmsMessage.RequestDeliveryReport a true.
• Tras crear el mensaje, se puede utilizar el método Send de la clase SmsMessage para enviar el mensaje.
Desarrollo de aplicaciones con Windows Mobile
Interceptar un mensaje SMS
•La intercepción de mensajes es un mecanismo altamente configurable.
• Se puede programar un dispositivo móvil para notificar a la aplicación sobre los mensajes basándose en parámetros como el emisor, el destinatario o los contenidos del mensaje.
•También se puede programar la intercepción del sistema para arrancar la aplicación que requiere notificación si no estaba ya ejecutándose.
• Se pueden utilizar las siguientes clases para interceptar mensajes SMS:
MessageCondition. Especifica la condición del mensaje que debe buscarse.MessageInterceptor. Lanza un evento cuando un mensaje de entrada cumple la condición de intercepción.MessageInterceptorEventHandler. Un tipo delegado implementado por las clases que han sido registradas para recibir mensajes de notificación.
Desarrollo de aplicaciones con Windows Mobile
Ejemplo: cómo mandar un SMS a un dispositivo móvil.
SmsMessage smsMessage = new SmsMessage();
smsMessage.Body = “¿Boicoteamos la sesión de RIM y Nokia?";
smsMessage.To.Add(new Recipient(“Marta Rod", “6627727733"));
smsMessage.RequestDeliveryReport = true;smsMessage.Send();
return;
Desarrollo de aplicaciones con Windows Mobile
Ejemplo: cómo enviar un SMS a un contacto específico y solicitar un acuso de recibo.
using Microsoft.WindowsMobile.PocketOutlook;using Microsoft.WindowsMobile.Forms;// ...ChooseContactDialog contactDialog = new ChooseContactDialog();contactDialog.Title = “Seleccionar un usuario para enviar el sms”;if (contactDialog.ShowDialog() == DialogResult.OK){
// El constructor del sms necesita el destinatario de entrega
SmsMessage message = new SmsMessage(
contactDialog.SelectedContact.MobileTelephoneNumber, ”¿Saboteamos la red de Samba?");
message.RequestDeliveryReport = true;
// Enviar SMSmessage.Send();
Desarrollo de aplicaciones con Windows Mobile
Ejemplo: cómo interceptar un mensaje SMS.
Private MessageInterceptor _demoInterceptor = new MessageInterceptor(InterceptionAction.NotifyAndDelete, true);Private MessageCondition _demoCondition = new MessageCondition();
public frmMain(){
InitializeComponent();_demoCondition.Property = MessageProperty.Body;_demoCondition.ComparisonType = MessagePropertyComparisonType.StartsWith;_demoCondition.CaseSensitive = true;_demoCondition.ComparisonValue = "MsgDemo";_demoInterceptor.MessageCondition = _demoCondition;_demoInterceptor.MessageReceived +=new MessageInterceptorEventHandler(_demoInterceptor_MessageReceived);
}void _demoInterceptor_MessageReceived(object sender, MessageInterceptorEventArgs e){
SmsMessage smsDemo = (SmsMessage)e.Message;MessageBox.Show(smsDemo.Body, "Special SMS Received", MessageBoxButtons.OK,MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
}
Desarrollo de aplicaciones con Windows Mobile
Practica: Envio e intercepcion de sms
Crear una aplicación que pueda enviar SMS de forma controlada
Implementar la capacidad de capturar SMS que comiencen con la palabra “MsgDemo”
Se necesitará el Celular Emulator del SDK de Windows Mobile 6
La App, se desarrollará sobre el emulador de Windows Mobile 6 Professional
Desarrollo de aplicaciones con Windows Mobile
Crear y Enviar E-Mails
•Cuando se desarrolla una aplicación basada en Windows Mobile, se puede integrar mensajería mediante las clases del espacio de nombres Microsoft.WindowsMobile.PocketOutlook.EmailAccount.
•La clase EmailAccount que proporciona una completa funcionalidad para los e-mails
•Se puede crear un e-mail mediante la clase EmmailMessage
•Se puede enviar con el método Send de la clase EmailAccount a una dirección de correo especificada.
Desarrollo de aplicaciones con Windows Mobile
Ejemplo: crear un e-mail, adjuntar un documento Pocket Word a él y enviar el mensaje
EmailMessage message = new EmailMessage();
message.To.Add(new Recipient(“[email protected]"));message.Subject = “Correo de soporte a estudiantes”;message.BodyText = “Una nueva pregunta ha sido generada
por un estudiante” + “Por favor lee el adjunto para masdetalles";
message.Attachments.Add(new Attachment(@"\My Documents\issue.doc"));
using (OutlookSession session = new OutlookSession()){
session.EmailAccounts[0].Send(message);}
Desarrollo de aplicaciones con Windows Mobile
Practica: Envio e intercepcionde correo electrónico
Crear una aplicación que pueda enviar E-mails a través de una cuenta de correo válida configurada en el emulador
Implementar la funcionalidad de insertar adjuntos en los mensajes
La App, se desarrollará sobre el emulador de Windows Mobile 6 Professional
Desarrollo de aplicaciones con Windows Mobile
Agregar contacto
El método AddNew de la clase Contact se utiliza para añadir un contacto. El siguiente ejemplo
muestra cómo agregar un contacto:
public void AddContact(string firstName, string lastName,
string title)
{
OutlookSession os = new OutlookSession();
Contact contact = os.Contacts.Items.AddNew();
contact.FirstName = firstName;
contact.LastName = lastName;
contact.Title = title;
contact.FileAs = contact.LastName + ", " +
contact.FirstName;
contact.Update();
}
Desarrollo de aplicaciones con Windows Mobile
Modificar contacto
Para modificar un contacto se puede utilizar el método Updatede la clase Contact. El siguiente ejemplo muestra cómomodificar un contacto:
public void EditContact(Contact contact,string firstName, string lastName, string title)
{contact.FirstName = firstName;contact.LastName = lastName;contact.Title = title;contact.FileAs = contact.LastName + ", " +contact.FirstName;contact.Update();
}
Desarrollo de aplicaciones con Windows Mobile
Borrar contacto
El método Delete de la clase Contact se usa para eliminar un contacto. El siguiente código muestra cómo eliminar un contacto:
public void DeleteContact(Contact contact){
contact.Delete();}
Desarrollo de aplicaciones con Windows Mobile
Practica: Creación de contactos
Crear una aplicación que permita crear un contacto con las siguientes características: Nombre
Foto
Organización
Departamento
Teléfono trabajo
IM
Correo
La App, se desarrollará sobre el emulador de Windows Mobile 6 Professional
Desarrollo de aplicaciones con Windows Mobile
Agregar tarea
El método AddNew de la clase Task permite añdir una nueva tarea. El siguiente ejemplo muestra cómo agregar una nueva tarea.
public void AddTask(string body, string categories, boolcomplete, DateTime startDate)
{OutlookSession os = new OutlookSession();Task task = os.Tasks.Items.AddNew();task.Body = body;task.Categories = categories;task.Complete = complete;task.StartDate = startDate;task.Update();
}
Desarrollo de aplicaciones con Windows Mobile
Modificar tarea
El método Update de la clase Task permite modificar una tarea. El código siguiente muestra cómo modificar una tarea:
public void EditTask(Task task, string body, string categories,bool complete, DateTime dueDate)
{task.Body = body;task.Categories = categories;task.Complete = complete;task.DueDate = dueDate;task.Update();
}
"
Desarrollo de aplicaciones con Windows Mobile
Borrar tarea
El método Delete de la clase Task borra una tarea. En el código siguiente se muestra cómo eliminar una tarea:
public void DeleteTask(Task task){
task.Delete();}
Desarrollo de aplicaciones con Windows Mobile
Agregar cita
Se puede agregar una cita con el método AddNew de la clase Appointment. El código siguiente muestra cómo añadir una cita:
public void AddAppointment(string body, string categories,DateTime startdate)
{OutlookSession os = new OutlookSession();Appointment appointment =
os.Appointments.Items.AddNew();appointment.Body = body;appointment.Categories = categories;appointment.Start = startdate;appointment.Update();
}
Desarrollo de aplicaciones con Windows Mobile
Modificar cita
El método Update de la clase Appointment permite modificar una cita.
El ejemplo siguiente muestra cómo modificar una cita:
public void AddAppointment(string body, string categories,DateTime startdate)
{OutlookSession os = new OutlookSession();Appointment appointment =
os.Appointments.Items.AddNew();appointment.Body = body;appointment.Categories = categories;appointment.Start = startdate;appointment.Update();
}
Desarrollo de aplicaciones con Windows Mobile
Borrar cita
El método Delete de la clase Appointment permite borrar una cita.
El código siguiente muestra cómo eliminar una cita:
public void DeleteAppointment(Appointment appointment){
appointment.Delete();
Desarrollo de aplicaciones con Windows Mobile
Utilizando la Tecnología de la Plataforma de Invocación para Llamar a Funciones DLL no Manejadas
•El Compact Framework soporta código de llamadas en módulos no manejados para usar funciones DLL.
•La tecnología de la plataforma de invocación se utiliza para llamar a estas funciones DLL.
•La tecnología de la plataforma de invocación es un superconjunto de las transiciones manejadas y no manejadas.
•Esta tecnología proporciona un rico conjunto de características de tipo conversión para trabajar con las diferencias inherentes entre DLL y CLR (Common Language Runtime).
.
Desarrollo de aplicaciones con Windows Mobile
Tecnología de la plataforma de invocación
Tiempo de diseño. Como desarrollador, se debe proporcionar una descripción de la función no manejada que debe ser llamada. La descripción contiene el nombre del módulo, el nombre del punto de entrada y la convención de llamada.
Just in time (JIT). El CLR extrae información sobre la función no manejada a la que se está llamando, localiza la DLL que contiene la función especificada, carga la DLL en memoria y luego entrega la dirección de la función.
Tiempo de ejecución. El CLR traduce los parámetros desde un formato manejado a un formato no manejado antes de que se produzca la llamada a la función. El CLR determina cómo traduce cada parámetro dependiendo de cómo se haya declarado la función en el código manejado.
Desarrollo de aplicaciones con Windows Mobile
Llamar a una Función DLL no Manejada
Para llamar a una función DLL no manejada se utiliza el atributo DllImport
Este atributo proporciona la información necesaria para llamar a la función que es exportada desde una DLL no manejada.
Cuando se utiliza el atributo DllImport, se debe incluir el nombre de la DLL que contiene el punto de entrada a una aplicación.
El siguiente ejemplo llama al método Add de una DLL no manejada llamada math.DLL:
class ManagedMath{
[DLLImport("math.DLL", EntryPoint="Add")]public static extern int Add(int a, int b);
}
Desarrollo de aplicaciones con Windows Mobile
Optimización y Despliegue de Soluciones de Movilidad
Desarrollo de aplicaciones con Windows Mobile
Contenidos
Midiendo y ajustando los recursos del sistema
Habilitando contadores de rendimiento en un dispositivo móvil
Firmando una aplicación basada en Windows Mobile
Empaquetando y desplegando aplicaciones basadas en Windows Mobile
Trabajando con herramientas remotas para Visual Studio 2005
Desarrollo de aplicaciones con Windows Mobile
Introducción
Antes de desplegar una aplicación basada en Windows Mobile 5.0 en un dispositivo, se necesita optimizar los recursos y asegurar la aplicación.
El Microsoft .NET Compact Framework 2.0 proporciona soporte para administrar la memoria y la energía en un dispositivo móvil
El Microsoft .NET Compact Framework 2.0 proporciona soporte para firmar una aplicación
Es posible monitorizar desde una estación de trabajo remotamente conectada usando herramientas remotas
Desarrollo de aplicaciones con Windows Mobile
Midiendo y ajustando los recursos del sistema
El rendimiento de nuestras aplicaciones basadas en Windows Mobile 5.0 es mejorable, midiendo y modificando los recursos
Un dispositivo móvil ya que el dispositivo tiene limitada la RAM física y no el archivo de paginamiento de memoria virtual.
Para diagnosticar el monitor y el rendimiento implementar traza de código y contadores
Se debe considerar como nuestro dispositivo móvil maneja las situaciones de memoria baja e hibernación
Se debe considerar como nuestra aplicación reserva memoria para manejar variables, pilas y montículos
Desarrollo de aplicaciones con Windows Mobile
Manejando estados de memoria baja
Los dispositivos basados en Windows Mobile están diseñados para un acceso rápido
Cuando una aplicación necesita mas memoria el Shell detiene las aplicaciones inactivas automáticamente.
Se debe manejar la persistencia del estado dentro de nuestra aplicación.
Las aplicaciones en espera reciben un mensaje WM_CLOSE para liberar memoria para la aplicación activa
Desarrollo de aplicaciones con Windows Mobile
Administrando variables y pilas
• Variables globales y estáticas
o variables creadas cuando un proceso se iniciao No son liberadas hasta que el proceso terminao Limitar el uso de variables estáticas y globales
• Pilas
o Cuando un proceso es creado , una pila es creada para el hilo al que pertenece el proceso.
o Para cada nuevo hilo que es creado en el proceso, una nueva pila es creada
o La nueva pila proporciona memoria usable para almacenar los valores de los parámetros que son pasados a funciones
o La pila de la memoria que es usada por una función es liberada cuando la función devuelve un valor
Desarrollo de aplicaciones con Windows Mobile
Manejando la hibernación de la aplicación
• El Shell de dispositivos basados en Windows Mobile usa un mensaje WM_HIBERNATE para obligar a las aplicaciones a liberar memoria
• Envía los mensajes empezando con la aplicación que ha estado inactiva el mayor período de tiempo.
• El Shell no envía mensajes WM_HIBERNATE a ventanas invisibles
• Al recibir este mensaje la aplicación libera cualquier gran bloque de memoria que este reservado por la función VirtualAlloc.
• Se liberan tanto gráficos, ventanas y objetos del subsistema de eventos como ventanas, bitmaps y contextos de dispositivo.
Desarrollo de aplicaciones con Windows Mobile
El método GC.Collect
Fuerza la recolección de basura del CLR en un modelo mark-and-sweep (marcar y barrer)
Los objetos que están referenciados en código administrado no son recolectados.
No garantiza que toda la memoria inaccesible sea reclamada
Este método congela todos los hilos mientras están ejecutándose
Si se debe llamar al método GC.Collect, usar el método para manejar errores fuera de memoria (OOMs)
El método GC.Collect no libera toda la memoria disponible. Este método solo libera objetos que no son “disposables
Desarrollo de aplicaciones con Windows Mobile
Trabajando con herramientas remotas para Visual Studio 2005
Las herramientas remotas permiten conectar un dispositivo basado en Windows Mobile desde una estación de trabajo
También se pueden usar para administrar información de ficheros y de registro
Con las herramientas también es posible monitorizar el rendimiento de los hilos o procesos en un dispositivo Windows Mobile
Puede testear y depurar aplicaciones un dispositivo desde un equipo remoto conectado.
Desarrollo de aplicaciones con Windows Mobile
Herramientas remotas para Visual Studio 2005
Remote Process Viewer Esta herramienta muestra una lista de los hilos y los procesos que están ejecutándose en el
dispositivo destino e información acerca de cada uno de estos procesos e hilos.
Remote Heap Walker Esta herramienta muestra información acerca de identificadores de montículos, banderas, y
memoria del sistema para un proceso que está ejecutándose en un dispositivo destino.
Remote File Viewer Es una herramienta que muestra en una vista jerárquica el sistema de ficheros y permite
manejar el sistema de ficheros en el dispositivo destino.
Remote Zoom In Captura imágenes de pantalla de un dispositivo destino y almacena estas imágenes en
formato bmp. Se puede usar esta herramienta para capturar diferentes imágenes de pantalla en cada ventana.
Desarrollo de aplicaciones con Windows Mobile
Remote Spy Muestra las aplicaciones que están ejecutándose en el dispositivo
destino y los mensajes que estas aplicaciones intercambian unas con otras o a través de la red de los dispositivos
Remote Registry Editor Muestra el registro del dispositivo destino. Se puede añadir, modificar y
borrar las claves del registro y las entradas del registro usando esta herramienta.
Herramientas remotas para Visual Studio 2005
Desarrollo de aplicaciones con Windows Mobile
Técnicas para diagnosticar el rendimiento en los dispositivos móviles
La instrumentación permite monitorizar rendimiento de producto
La instrumentación permite diagnosticar errores
La instrumentación es la habilidad de una aplicación para implementar la traza de código, depuración y contadores de rendimiento
Desarrollo de aplicaciones con Windows Mobile
Usando contadores de rendimiento
Un contador de rendimiento colecciona datos de rendimiento acerca de los recursos
El contador de información incluye la categoría
Cada categoría está relacionada con un elemento funcional dentro del equipo y como un conjunto de contadores estándar asignados a él
Se puede usar el contador de datos para determinar el número de los recursos del sistema que están siendo utilizados
Es posible usar un contador de rendimiento para diagnosticar el bajo rendimiento de una aplicación
Se puede también trazar la ejecución del código en una aplicación instalada usando la clase Trace.
Desarrollo de aplicaciones con Windows Mobile
Habilitando contadores de rendimiento en un dispositivo móvil
• El .NET Compact Framework no soporta objetos PerformanceCounter
• El .NET Compact Framework tiene un conjunto de contadores de rendimiento predefinidos.
• Estos contadores analizan los tipos de carga que una aplicación provoca en los recursos del dispositivo.
• En un dispositivo móvil, los contadores de rendimiento son útiles para determinar el impacto del recolector de basura
• Los contadores de rendimiento también determinan el impacto de la compilación JIT en el rendimiento de la aplicación
Desarrollo de aplicaciones con Windows Mobile
Categorías de contadores de rendimiento
. Loader Contadores que se refieren a la operación del CLR
Generic Contadores que se refieren a métodos genéricos
Locks, Threads y Timers Contadores que se refieren a bloqueos, hilos, contenedor de hilos y temporizadores
GC Contadores que se refieren a operaciones del recolector de basura
Memoria Contadores que se refieren a los montículos de memoria administrada por el
recolector de basura
JIT Contadores que pertenecen a las operaciones del compilador JIT
Exceptions Contadores que se refieren a excepciones
Interop Contadores que se refieren a la interoperabilidad con código nativo
Networking Contadores que se refieren a las operaciones de red de enviar y recibir
Windows Forms Contadores que se refieren al nombre de espacio System.Windows.Forms
Desarrollo de aplicaciones con Windows Mobile
Monitor de rendimiento en tiempo de ejecución
• Gracias al monitor de rendimiento remoto, se pueden llevar a cabo las siguientes tareas:
• Ver los datos del contador de rendimiento mientras una aplicación se está ejecutando.
• Ver los datos del contador de rendimiento en un formato gráfico usando Perfmon.exe minetas una aplicación se está ejecutando.
• Habilitar la generación de ficheros .stat para duplicar el comportamiento que es soportado en versiones anteriores del .NET CF. Cuando se use esta característica, todos los ficheros .stat son escritos al disco cuando la aplicación se cierra.
• Ver los ficheros .stat generados previamente en el .NET Compact Framework 2.0.
• Habilitar y deshabilitar el logging.
Desarrollo de aplicaciones con Windows Mobile
Generar estadísticas de rendimiento
Para obtener las estadísticas de rendimiento, llevar a cabo los siguientes pasos:
1. Abrir el editor de registros de Windows y buscar la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETCompactFramework\PerfMonitor.
2. Ajustar la subclave Counters del registro PerfMonitor a 1
3. Ejecutar la apliación que se quiere examinar para el rendimiento. No ejecutar otras aplicaciones de .NET Compact Framework al mismo tiempo.
4. Examinar el fichero de estadísticas generado en la unidad raíz de nuestro dispositivo. El fichero tiene el mismo nombre que la aplicación de .NET CF que tiene una extensión .stat y esta ejecutándose actualmente.
5. Para apagar los contadores de rendimiento, ajustar la subclave Counters de PerfMonitor a 0.
Desarrollo de aplicaciones con Windows Mobile
Introducción al modelo de seguridad de aplicación
Desarrollo de aplicaciones con Windows Mobile
Herramientas en el modelo de seguridad
TestCert_Privileged.pfx y TestCert_Unprivileged.pfx Certificados que ayudan al desarrollo de seguridad. Pueden contener tanto el
certificado como la llave privada. El firmado falla si intentamos firmar una aplicación con un certificado que no tenga una llave privada correspondiente.
Load.xml Configura un modelo de seguridad de dos capas. Avisa al usuario con una
confirmación antes de ejecutar aplicaciones y no ejecuta aplicaciones no firmadas.
Prompt.xml Prompt.xml establece un modelo de seguridad de dos capas. Avisa al usuario de una
confirmación antes de continuar ejecutando aplicaciones, y ejecuta aplicaciones no firmadas como no privilegiadas.
Open.xml Open.xml configura un modelo de seguridad de una capa. No avisa al usuario con
una confirmación antes de ejecutar aplicaciones, y ejecuta todas las aplicaciones, incluyendo las aplicaciones no firmadas, como privilegiadas.
Desarrollo de aplicaciones con Windows Mobile
Herramientas en el modelo de seguridad
ActiveSync ActiveSync actúa como un Gateway entre un equipo basado en Windows y un
dispositivo basado en Windows Mobile 5.0, permitiendo la transferencia de información de Outlook, datos, y aplicaciones del equipo al dispositivo.
RapiConfig.exe RapiConfig.exe es una herramienta de configuración basada en XML que se puede
usar para configurar un emulador de dispositivo. Este fichero está localizado por defecto en \Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SDKTools
Signtool Signtool es una herramienta de línea de comandos que firma digitalmente
ficheros, verifica firmas en ficheros o archivos de marcas de tiempo (time-stampfiles)
Desarrollo de aplicaciones con Windows Mobile
Firmar el ensamblado de una aplicación
Para firmar un ensamblado en un proyecto de dispositivo en Visual Basic o Visual C#, llevar a cabo los siguientes pasos:
1. En el explorador de soluciones, hacer clic en el botón derecho del ratón sobre el proyecto y después seleccionar Propiedades
2. Abrir la página de Firma
3. En la página de Firma seleccionar la casilla de verificación de Firmar el ensamblado
4. Para usar un fichero de claves de nombre seguro que ya existe, en la lista Seleccione un archivo de clave de nombre seguro seleccionar
Desarrollo de aplicaciones con Windows Mobile
Firmar una aplicación usando un certificado privilegiado de confianza o no privilegiado
Para firmar un proyecto de dispositivo en Visual Basic o Visual C#, llevar a cabo los siguientes pasos:
1. En el Explorador de soluciones hacer clic con el botón derecho del ratón sobre el proyecto y después seleccionar Propiedades.
2. Para abrir la página de Dispositivos en la página del nombre del proyecto, hacer clic en Dispositivos
3. En la página de Dispositivos en la sección de Firmar con Authenticode, seleccionar la casilla de Firmar el resultado del proyecto con este certificado
4. Para abrir el cuadro de diálogo Seleccionar certificado hacer clic en Seleccionar certificado
5. En el cuadro de diálogo de Seleccionar certificado de la lista de certificados, seleccionar el certificado que se quiera y después hacer clic en OK.
Desarrollo de aplicaciones con Windows Mobile
Empaquetando y desplegando aplicaciones basadas en Windows Mobile
El despliegue es el proceso de transferir una aplicación al dispositivo destino
Antes del despliegue se debe empaquetar la aplicación creando un archivo CAB
El archivo CAB es un ejecutable que puede contener nuestra aplicación, ficheros dependientes, recursos y ficheros de ayuda
Después de crear el archivo CAB se debe escoger una opción de despliegue.
Desarrollo de aplicaciones con Windows Mobile
Crear un proyecto CAB de dispositivo móvil
Para añadir un proyecto CAB, llevar a cabo los siguientes pasos:
1. Para abrir un proyecto de dispositivos inteligentes existente, en el menú Archivo hacer clic en Abrir y después en Proyecto/Solución
2. En el cuadro de diálogo de Abrir proyecto, seleccionar un proyecto de dispositivo inteligente y después hacer clic en Open
3. Para añadir un proyecto CAB, en el menú Archivo hacer clic en Añadir y después hacer clic en Nuevo proyecto
4. En el cuadro de diálogo de Añadir nuevo proyecto en el panel de Tipos de proyecto expandir Otros tipos de proyectos y después hacer clic en Instalación e implementación
5. En el panel de Plantillas, seleccionar Proyecto CAB de Smart Device
6. En el cuadro Nombre escribir CABProject y después hacer clic en OK.
Desarrollo de aplicaciones con Windows Mobile
Llenando el proyecto CAB
1. Asegurarse de que los ficheros que se seleccionan después en elproceso, están instalados dentro de la carpeta de aplicación en eldispositivo destino, en el panel de la izquierda del editor deficheros del sistema, seleccionar el nodo Carpeta de aplicación.Si el editor de ficheros del sistema no está visible, acceder alexplorador de soluciones, hacer clic con el botón derecho delratón sobre el nombre del proyecto CAB y hacer clic en Ver y enSistema de ficheros
2. En el Visual Studio 2005 en el menú Acción hacer clic enAñadir y después hacer clic en Resultado de proyecto
3. En el cuadro de diálogo de Añadir grupo de resultados deproyecto¸ de la lista de Proyectos seleccionar nuestro proyectode dispositivos inteligentes
4. De la lista de opciones de resultados, seleccionar Resultadoprincipal y después hacer clic en OK.
Desarrollo de aplicaciones con Windows Mobile
Personalizar el proyecto CAB
Cambiar el nombre del producto1. En el explorador de soluciones, seleccionar el proyecto CAB
2. En el menú Ver hacer clic en la Ventana de propiedades
3. En el campo Nombre de producto de la ventana de propiedades, escribir el nombre del nuevo producto
Especificar la localización del fichero de resultados1. En el explorador de soluciones, seleccionar el proyecto CAB
2. En el menú Ver hacer clic en el Editor y después en Sistema de ficheros
3. Hacer clic con botón derecho en Resultado Principal y después hacer clic en la Ventana de propiedades
4. En la ventana de propiedades, cambiar la propiedad Carpeta
Desarrollo de aplicaciones con Windows Mobile
Añadir dependencias si fuera necesario
1. En el explorador de soluciones, seleccionar el proyecto CAB
2. En el menú Proyecto seleccionar Añadir y después hacer clic en Archivo
3. En el cuadro de diálogo de Añadir ficheros, buscar el fichero que queramos añadir y después hacer clic en Abrir.
Desarrollo de aplicaciones con Windows Mobile
Crear un acceso directo
1. En el panel derecho del editor de sistema de ficheros, seleccionar Resultado principal de <nombre de proyecto de aplicación>
2. En el menú Acción seleccionar Crear un acceso directo al resultado principal de<nombre del proyecto de aplicación>
3. Botón derecho sobre el acceso directo que se ha creado y hacer clic en Renombrar
4. Escribir un nombre para el acceso directo
Desarrollo de aplicaciones con Windows Mobile
Editar una entrada de registro
1. Para editar una entrada de registro, llevar a cabo los siguientes pasos:
2. En el explorador de soluciones, seleccionar el proyecto CAB.
3. En el menú Ver, hacer clic en el Editor y después hacer clic en el Registro
4. En la pestaña Registro<nombre de proyecto> bajo el nodoRegistro en la máquina destino hacer clic en el botón derecho de ratón sobre HKEY_CURRENT_USER
5. En el menú de accesos directos, hacer clic en Nueva clave
6. Escribir un nombre para la nueva clave y después hacer clic con botón derecho de ratón en la nueva clave
7. En el menú de accesos directos, hacer clic en Nuevo y después hacerclic en Clave
8. Escribir un nombre para la clave y hacer clic con botón derecho de ratón sobre la clave.
9. En el menú de accesos directos hacer clic sobre la Ventana de propiedades
Desarrollo de aplicaciones con Windows Mobile
Opción de despliegue, ActiveSync
ActiveSync que permite copiar los archivos CAB de la aplicación a un dispositivo móvil.
El usuario puede el archivo CAB en el dispositivo para instalar la aplicación.
ActiveSync incluye una herramienta llamada ApplicationManager
Application Manager qproporciona un mecanismo para instalar y eliminar aplicaciones desde un dispositivo conectado.
Desarrollo de aplicaciones con Windows Mobile
Opción de despliegue, HTTP
Con HTTP los usuarios son dirigidos a la URL de los ficheros CAB en los que están localizados.
Cuando los usuarios acceden a la URL desde sus dispositivos Windows Mobile,pueden descargar e instalar la aplicación
Desarrollo de aplicaciones con Windows Mobile
Tarjeta de almacenamiento
Las tarjetas de almacenamiento se usan para desplegar aplicaciones en dispositivos desconectados
Windows Mobile detecta la tarjeta de almacenamiento cada vez que la tarjeta es insertada
Windows Mobile almacena el fichero autorun.exe
Este fichero de forma automática inicia la instalación de los ficheros CAB.
Autorun.exe también permite al software de Windows Mobile detectar la retirada de la tarjeta de almacenamiento
Autorun.exe indica a la aplicación a llevar a cabo una operación de limpieza y para eliminarse a si misma de la memoria activa.
Desarrollo de aplicaciones con Windows Mobile
Suministro de cliente WAP Suministro OMA DM
OMA DMinalámbrico
Suministro deExchange
inalámbrico
DesktopActiveSync®(RAPIConfig)
USB
Bluetooth
.CAB
OMA DM
iniciado por
SMS
WAP
iniciado por
SMS/SCCMExchange
Server 2007
ActiveSync
XML de configuración
en la ROM
Inicialización
de
Arranqueen frío
Obtención deun archivoinstalable
en eldispositivo
Provisión decliente WAPinalámbrica
Instalador de aplicaciones
WAP Push
Desktop ActiveSync
Cliente OMA DM
Proveedores de servicios de configuración (CSP)
Novedad Novedad
Métodos de aprovisionamiento en dispositivos –Ejecución de la administración de dispositivos
Desarrollo de Soluciones Windows Mobile
DATOS DE CONTACTO:
EDUARDO ORTEGA [email protected]
VISITE NUESTRA WEB EN:
HTTP://WWW.MICMOVILIDAD.ES
COMUNIDAD DESARROLLADORES:HTTP://WWW.MOBILENUG.COM
Parque Tecnológico de Boecillo. Anexo Edificio Solar · 47151 Boecillo (Valladolid)Tlf: 983 549 630 · Fax: 983 549 752 · www.micmovilidad.es