Mono for Android – Desarrollo Kindle Fire

Parámetros y permisos de la aplicación

En el Faq de Amazon Kindle viene más información de la que vamos a emplear en este artículo, puedes visitar el faq accediendo al enlace #1 de la parte inferior del artículo.

Configuración de nuestra aplicación de Android

Arrancamos la ventana de depurado y seleccionamos la opción Create new emulator image:

Create_new_emulator_image

Con esto se iniciará el Android SDK Manager, nos vamos a Tools|Manage AVD, y veremos la pantalla del Android Virtual Device Manager:

Android_Virtual_Device_Manager

En name ponemos Amazon Kindle Fire, Target lo rellenamos con Android 2.3.4 – API Level 10, en Skin resolution ponemos 600 x 1024.

Create_new_Android_Virtual_Device

En hardware añadimos los parámetros:

  • Abstracted LCD density: 169
  • Device ram size: 512 mb

Le damos a Create AVD y ya tenemos listo nuestro emulador.

Bibliografía

#1 – https://developer.amazon.com/help/faq.html

Traducción: Mono.Addins – Localización de Complementos por defecto

Introducción

Este artículo es una traducción del original disponible en [1], las licencias aplicadas al original se aplican a esta traducción.

mono-logo

La traducción

Mono.Addins incorpora un modelo flexible para indicar donde deberían estar los complementos (add-ins). Por defecto, los complementos están en dos rutas:

  • En la carpeta donde está el ejecutable de la aplicación, es decir, dónde está en .exe.
  • En la carpeta ‘addins’, que es la ruta de registro de los complementos.

Por ejemplo, si una aplicación está instalada en ‘/usr/lib/MiAplicacion/inicio.exe’, y la aplicación inicializa el motor de complementos tal que así:

   1:  AddinManager.Initialize("[ApplicationData]/MiAplicacion");

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, «Courier New», courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

Entonces los complementos se buscaran por defecto es:

  1. /usr/lib/MiAplicacion
  2. ApplicationData/MiApplication/addins

Incluyendo carpetas de complementos

Se pueden añadir rutas para la búsqueda de complementos utilizando el archivo .addins. Un archivo .addins es una archivo XML que se ve tal que así:

   1:  <Addins>
   2:     <Directory>/alguna/carpeta</Directory>
   3:     <Directory include-subdirs="true">/alguna/carpeta</Directory>
   4:     <Directory>../ruta/relativa/carpeta</Directory>
   5:     <Exclude>alguna/carpeta</Exclude>
   6:  </Addins>

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, «Courier New», courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

Cuando un registro está buscando complementos en una carpeta y encuentra un archivo .addins, lo analizará sintácticamente y de manera recursiva buscará en las carpetas declaradas, que a su vez incluirán archivos .addins. La etiqueta Directory se usa para declarar nuevas carpetas, esta búsqueda no es recursiva por defecto, para activar la búsqueda recursiva utilizamos el atributo include-subdirs. La etiqueta Exclude se usa para no buscar en una carpeta determinada, puede ser una ruta o un archivo.

Patrón de Diseño: Model View ViewModel (I)

logo

Introducción

El patrón de diseño Modelo Vista VistaModelo es usado por las tecnologías Windows Presentation Foundation, Silverlight y Moonlight. Es un patrón de interfaz de usuario como lo son Modelo Vista Controlador o Modelo Vista Presentación. En este post vamos a ver su uso en WPF/Silverlight/Moonlight.

El patrón MVVM

El patrón MVVM e compone de 3 elementos:

  1. El Modelo es la entidad que representa el concepto de negocio, puede ser cualquier cosa desde una entidad usuario hasta una entidad compleja de almacenaje (que contiene a su vez otras entidades).
  2. La Vista es la representación gráfica del control o un conjunto de controles que muestran el Modelo de datos en pantalla. Una vista puede ser desde un ventana de WPF, una página con Silverlight o una plantilla de un control de datos en XAML. La Vista es un observador (Observer) de la VistaModelo, tan pronto cambie la VistaModelo la interfaz de usuario se actualiza, para esto debe implementar el interfaz INotifyPropertyChanged e implentar el evento PropertyChanged.
  3. La VistaModelo es la que une todo. Contiene la lógica del interfaz de usuario, los comandos, los eventos y una referencia al Modelo. En MVVM, la VistaModelo no se encarga de actualizar los datos mostrados por el interfaz de usuario.

Proyecto en Moonlight bajo MonoDevelop

MonoDevelopLogo

Nota: la librería Moonlight no está disponible directamente para su uso cuando inicias un proyecto Moonlight en MonoDevelop, hay que obtenerla compilando el proyecto Mono, para más información recomiendo la lectura del enlace [2].

Creando la solución

Seleccionamos el menú Archivo|Nuevo|Solución, en la Ventana de Nueva Solución picamos en C# y posteriormente en Moonlight, teniendo dos posibles opciones:

  1. Librería de Controles: una librería con controles XAML sin ejecutables.
  2. Aplicación: una aplicación con un punto de entrada de ejecución.

Agregando las referencias

Para solventar la incidencia de las referencias bajo Windows, puedes utilizar tu instalación de Silverlight disponible en la ruta “C:\Archivos de programa\Microsoft SDKs\Silverlight\v2.0\Reference Assemblies”si tienes instalada la versión 4 o cualquier otra posterior a la 2 saldrá un mensaje de error informándote que requiere Moonlight 3 o Silverlight 2.

Tendrás que eliminar las referencias que vienen por defecto en el proyecto, e insertar las nuevas utilizando el apartado de Ensamblados .Net. Quedando las referencias como siguen:

silverlight_referencias

Pero…

Seguimos sin poder compilar debido a que surge un mensaje de error que nos dice lo siguiente:

Error: Framework ‘Silverlight 2.0’ not installed. (EjemploMoonlight)

Sin embargo si está instalado el SDK, una vez navegas por el foro de Mono te encuentras con que no está implementado el backend para proyectos Silverlight, y alguien debería hacerlo [1]:

Ideally someone would implement a SilverlightFrameworkBackend for the
DotNetTargetRuntime, so that MD could find the Silverlight SDK
assemblies. This would be very easy, but I don’t have time to do it
myself right now.

Editando el complemento Moonlight para MonoDevelop

Es necesario bajarse el código fuente de MonoDevelop de GitHub que parece la versión más actualizada del proyecto y preparar el entorno de desarrollo para Windows.

Pero eso será otra historia.

Bibliografía:

Building Enterprise Applications with Windows Presentation Foundation and the MVVM – Raffaelo Garofalo – Microsoft Press – ISBN 978-0-735-65092-3

Enlaces

[1] – http://go-mono.com/forums/#nabble-td1508851

[2] – http://go-mono.com/forums/#nabble-td2323130

Imagen Logo Moonlight: http://www.go-mono.com/moonlight/

Imagen Logo MonoDevelop: http://www.monodevelop.com

CartujaDotNet: Grupo de Usuarios de .Net en Sevilla

3_1

Introducción

@cartujadotnet es el grupo de usuarios de .net de Sevilla, por lo menos el único por ahora. Hoy hemos quedado 2 de los coordinadores de Cartuja Dot Net y otros programadores de .Net de Sevilla, aunque finalmente sólo hemos contado con la gran presencia de @jmaguilar, autor del blog Variable Not Found e impartidor de cursos en Campus MVP de Krasis.

Contacta con el grupo de usuarios

Para contactar con el grupo de usuarios, puedes seguir la cuenta @cartujadotnet a tu cuenta de twitter, acceder a la web del grupo de usuarios en facebook o escribir un correo electrónico a la dirección cartujadotnet@groups.facebook.com

Próximas charlas

Las charlas de @cartujadotnet las dan los propios componentes del grupo de usuarios, la temática de las charlas impartidas hasta ahora versan desde la robótica con Microsoft Robotics Studio, pasando por la programación en Gtk#, programación del puerto serie… todas ellas impartidas por profesionales que tienen a .Net presente en su vida profesional.

mfa-pro

La siguiente charla que impartirán los miembros de @cartujadotnet versará sobre "Programación de Android en .Net", la inscripción será obligatoria y limitada debido a que el espacio es cedido por una pequeña empresa sevillana dedicada a los blogs corporativos.

Imagen Logo .Net: www.microsoft.com

Imagen Logo Mono Android: http://mono-android.net

31 días como MonoDroid: tercer día, configurando tu android para depurar

Introducción

En este artículo vamos a seguir los pasos indicados en [1] en un dispositivo real con Android. Concretamente un HTC Magic con la versión 1.6 de Android.

Para empezar a configurarlo tenemos que ejecutar el archivo por lotes android.bat que se encuentra en el directorio de instalación del SDK de Android, en mi caso está en la ruta C:\android-sdk-windows\tools

Ejecutamos Android.bat y aceptamos los permisos:

A continuación nos aparece una ventana de Terminal de Windows (CMD) y la ventana de configuración de dispositivos:

Miramos los paquetes que tenemos instalados en Installed Packages y si no está instalado USB Driver Package lo instalamos seleccionando la opción Avaliable Packages. En mi caso, ya lo tengo instalado:

Ahora pasamos a configurar nuestro Android, para ello seguimos los siguientes pasos:

Ajustes | Aplicaciones | Desarrollo | Depuración USB

Automáticamente Windows 7 buscará el driver:

Si nos vamos al Panel de Control|Administrador de Dispositivos lo podemos ver instalado:

Ya podemos pasar a depurar nuestra aplicación en nuestro Android.

Referencias

[1] – http://monodroid.net/Documentation/Set_up_Device_for_Development

31 días con MonoDroid: día 2 realizando la primera aplicación real

Introducción

Ya existen vídeos en  Youtube de cómo realizar aplicaciones para MonoDroid, justamente uno de esos videos me ha servido como guía para realizar la primera aplicacion, que es un cliente de Twitter. Parece que los clientes de Twitter se están convirtiendo en los Hola Mundo 2.0 de la era de Internet.

Aquí os dejo el vídeo, y despues de este paso a detallar los inconvenientes que me he encontrado en la codificación.

Pasos que no vienen descritos en el vídeo

  1. Es necesario instalar NuPack y Pro Power Tools para encontrar los paquetes que no están instalados por defecto, en este caso se usa para tratar con JSon.
  2. Además el nombre de dicho paquete es diferente al que usa en el vídeo.

Enlaces

El vídeo: http://www.youtube.com/watch?v=TKXgugOj56I

Los complementos para Visual Studio 2010:

31 días con MonoDroid: día 1 Instalación de MonoDroid

Introducción

Para trabajar con MonoDroid es necesario que se disponga del siguiente software instalado en el equipo:

Una vez tengamos instalado Visual Studio y el SDK podemos instalar MonoDroid siguiendo tres sencillos pasos según se puede ver en las imágenes inferiores:

Hay que configurar una serie de parámetros una vez estemos desarrollando bajo Visual Studio, toda esta información está disponible más detalladamente en la web de MonoDroid.

Desarrollando la primera aplicación

Una aplicación bajo Android para mostrar una pantalla debe tener una Activity, la cual se encarga de cargar el interfaz de usuario disponible en un archivo XML. Pero antes de entrar a ver cómo es internamente el código fuente de una aplicación en MonoDroid, vamos a crear un nuevo proyecto Archivo | Nuevo |Proyecto, y seleccionamos la plantilla que vemos en al imagen:

Ahora le damos directamente a Iniciar Depuración (F5), MonoDroid nos solicitará la imagen que vamos a cargar en el emulador (podemos crear una facilmente) y tras esto tendremos nuestra primera aplicación en MonoDroid funcional.

Y como resultado tenemos nuestra aplicación funcionando…