| Artículos | 01 ENE 2009

Ejemplo de desarrollo de aplicaciones para dispositivos móviles

Tags: Histórico
Curso de programación para dispositivos móviles (y III)
José A. Alvarez.
"En esta última entrega vamos a presentar un par de sencillos programas para mostrar el desarrollo y el traslado de las aplicaciones a los dispositivos. Es evidente que podemos crear proyectos tan avanzados como se desee pero siempre respetando unas directrices de desarrollo. Estos dos primeros ejemplos han de servir para afianzar al programador neófito en esta nueva plataforma de desarrollo, que no es tan nueva si se tiene en cuenta que en gran parte el desarrollo es idéntico en plataformas de escritorio que en éstas.

El primer ejemplo versa sobre el desarrollo de una aplicación convencional, un simple hola mundo que pretende mostrar en primera instancia que se puede desarrollar de manera idéntica en las dos plataformas: móvil y convencional. En segundo lugar, que si se opta por un desarrollo como C/C++ no existe ningún marco de trabajo (máquina virtual o plataforma) que haga el trabajo de cara a la memoria, batería, etc. Por ejemplo, debemos cuidar en estos desarrollos las reservas de memoria, aplicar todo lo dicho sobre la memoria en los apartados anteriores, etc. Y, en tercer lugar, mostrar que podemos trasladar el ejecutable de manera transparente a un UMPC (Samsumg Q1) sin más que pasarlo a través de la red y ejecutarlo allí. Evidentemente este ejecutable no usa aspectos de interfaz de usuario avanzados.
En el segundo ejemplo se muestra cómo desarrollar un simple programa en Visual Studio 2008 que permita al software actuar en consecuencia al consumo de la batería. De esta forma, al pasar el programa al dispositivo podemos controlar las operaciones en función del estado de la batería (desarrollado en VB.NET). Este ejemplo muestra que, desarrollando bajo el amparo de un runtime o plataforma, el desarrollo se alivia y facilita bastante y que, además, se ofrecen componentes cuidados para desarrollar aplicaciones con interfaces de usuario.

1.- Aplicación Win32 C++ sencilla
Uno de los méritos más destacables de los UMPC y MID es que en ellos existe un alto grado de compatibilidad con todo el software existente para los portátiles y equipos de sobremesa. El uso de un compilador de alto rendimiento como el ofrecido por Intel está en este segmento de procesadores más que justificado pues, como bien decíamos antes, gran parte del rendimiento de la aplicación se le debe al compilador. Este ejemplo muestra cómo construir un sencillo “hola mundo” con el compilador Intel C++ versión 9.1 para los sistemas operativos Windows.
El equipo de desarrollo ha sido un Dell xps m1330 con el compilador instalado por defecto. Este equipo ha estado conectado a través de una LAN a un UMPC (Samsumg Q1). El programa se desarrolla en el portátil y se pasa al UMPC.

El proyecto
Se ha usado Visual Studio 2008 para el ejemplo. Se procede a abrir el entorno de desarrollo, se accede al menú: File->New->Project… o bien se pulsa directamente Ctrl-Shift-N. Ver Figura 1.
Cuando se tienen en el IDE abierto el archivo que contiene la creación de la ventana principal, se le añade la sentencia MessageBox(NULL, L”Hola Mundo”, L” Hola Mundo”, MB_OK); en el método int APIENTRY _tWinMain.
Generar el proyecto como versión “release” o definitiva. Seleccionar el archivo ejecutable, enviarlo a través de la LAN, la mejor forma es compartir la unidad C: del dispositivo y enviarlo desde el portátil allí. También se puede usar el escritorio remoto.
Cuando el ejecutable esté en el UMPC, use el stylus para hacer clic en el ejecutable y lanzarlo. Pruebe a abrir el menú about con el stylus. Podrá comprobar cómo una aplicación sencilla desarrollada y compilada en C++ ha sido trasladada a su UMPC y ejecutada sin mayor complicación (la aplicación tampoco reviste demasiados entresijos tecnológicos). Ver Figura 2.

2. Aplicación desarrollada en la plataforma .NET. Gestión de energía
Como se ha dicho en este curso, controlar el estado de la batería es una característica que deberían incorporar todas las aplicaciones que se enviaran a ejecutar, tanto a los UMPC como los MID o smartphones y, en definitiva cualquier dispositivo que dependa de la batería.
Para probar este código basta con iniciar con Ctrl-Shift-N la interfaz de nuevo proyecto en visual Studio y elegir Visual Basic como lenguaje. Seleccionar Windows bajo la etiqueta de lenguaje de Visual Basic. Y como plantilla de proyecto seleccionar Windows Forms Application. Tal y como se ve en la Figura 3.
Cuando se inicie el proyecto y se disponga la interfaz, se debe añadir desde el panel de herramientas o toolbox (panel izquierdo en la siguiente figura) dos elementos: una etiqueta de texto a la que deberemos cambiar el nombre de Label1 a EtiquetaGestor–Energía (como atestigua la figura). Esto se hace seleccionando a la etiqueta y accediendo a su panel de propiedades, concretamente a la propiedad “Name”. Y por último se debe añadir un Timer o cronómetro. En las propiedades y tal y como se aconsejó al principio, la frecuencia de este timer debe respetar intervalos suficientemente separados como para no afectar a las baterías. Ver Figura 4.
Tras este paso se debe pegar el siguiente código (debidamente comentado) en la pestaña de código que controla el formulario, para esto se debe pulsar la tecla F7.

Imports System.Runtime.InteropServices

Public Class Form1
Dim gestorEnergia As New GestorEnergia()

Sub New()

‘ Llamada para configurar todos los componentes añadidos al formulario
InitializeComponent()

‘Configuración inicial de la etiqueta que usaremos para mostrar el estadoo.
EtiquetaGestorEnergia.Text = gestorEnergia.ToString()
End Sub

‘Cronómetro con el que cada cierto intervalo de tiempo inspeccionaremos el estado de la fuente de energía.
Sub timerTickHandler(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
EtiquetaGestorEnergia.Text = gestorEnergia.ToString()
End Sub


End Class


‘ Clase que contiene las definiciones de los métodos “no manejados” o unmanaged.
‘ los structs y las enumeraciones que se usaran para las llamadas a la API de gestión de energía

Public Class GestorEnergia

‘ GetSystemPowerStatus() será la única llamada a método no manejado a la que llamaremos.

Declare Auto Function GetSystemPowerStatus Lib “kernel32.dll” Alias “GetSystemPowerStatus” (ByRef sps As SystemPowerStatus) As Boolean

‘Necesitamos serializar la información para enviarsela a la etiqueta. Usaremos el método ToString.

Public Overrides Function ToString() As String
Dim estado As String = “”

‘instancia del struct EstadoEnergeticoSistema
Dim sysPowerStatus As SystemPowerStatus

‘ Lectura de la medida de energía.

If GestorEnergia.GetSystemPowerStatus(sysPowerStatus) Then

‘ Determinar la fuente de energía actual - AC/DC

Dim currentPowerStatus = sysPowerStatus.ACLineStatus
estado += “Sistema alimentado por: “ + sysPowerStatus.ACLineStatus.ToString() + Environment.NewLine

‘ Estado actual de la batería
estado += “Estado de la fuente: “

‘ Comprobar si se ha sido capaz de determinar el origen y el estado.
If sysPowerStatus.BatteryFlag = GestorEnergia._BatteryFlag.Unknown Then
estado += “Desconocido”
Else

‘ Comprobar si está cargando<

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información