jueves, 14 de noviembre de 2013

SOLUCION PARA EL ERROR: 25001 STARBACKS NO ES COMPATIBLE CON BITDEFENDER


1. DESCARAGUE EL PROGRAMA BlueStacks_HD_AppPlayerPro_setup_0.7.8.829_REL.msi (159 MB) LES DEJO EL ENLACE:

http://cdn.bluestacks.com/public/beta-1/BlueStacks_HD_AppPlayerPro_setup_REL.msi

2. SI TIENE INSTALADO EL BITDEFENDER ENTOCES DESISTALELO CON LA HERRAMIENTA BD2013_Uninstall_Tool.exe, LES DEJO EL ENLACE:

http://www.bitdefender.com/files/KnowledgeBase/file/BD2013_Uninstall_Tool.exe

3. UNA VEZ DESISTALADO EL BITDEFENDER EJECUTE EL PROGRAMA STARBACK Y SIGA LAS INSTRUCCIONES Y LISTO POR SE ACASO TIENE QUE TENER UNA CUENTA GOOGLE SI NO LA TIENEN TIENEN QUE CREARLA Y LISTO

4. UNA VEZ EN EJECUCION EL STARBAKS INSTALE EL BITDEFENDER NUEVAMENTE Y LISTO FUNCIONANDO AMBOS PROGRAMAS CHAUUU

NO SE OLVIDEN DE COMENTAR, GRACIAS

miércoles, 13 de noviembre de 2013

Qué es y cómo funciona Snapchat
Envía mensajes privados y de duración limitada
Qué es y cómo funciona Snapchat
Las aplicaciones móviles más populares son, por lo general, aquellas que cuentan con un sencillo pero atractivo modo de funcionar, y que a la vez presentan una manera de comunicarse original o que ha sido mejor implementada que en aplicaciones similares. Una de estas aplicaciones originales es Snapchat. Si ya la has oído nombrar pero no sabes de qué se trata, te invito a que conozcas qué es y cómo funciona Snapchat.

·         Qué es Snapchat
La aplicación Snapchat es un programa de mensajería instantánea que te permite enviar fotos y videos a uno o más amigos. La diferencia con otras aplicaciones normales de mensajería de texto o con WhatsApp está en que los mensajes de Snapchat tienen una duración definida. Cuando las fotos o videos que has enviado a una persona alcanzan su duración límite, esas imágenes se borrarán del teléfono móvil de la persona que los recibió de manera automática.

·         Cómo funciona Snapchat
Utilizar Snapchat es muy sencillo. Tan solo debes tomar una foto o video y enviárselos a una o más personas dentro de tu lista de contactos. Antes de enviarlo, tendrás la posibilidad de agregar texto a tu imagen. Si bien no se verá como otras fotos con texto en las redes sociales, si te servirá para incluir un mensaje a tus amigos. Una vez tengas listo tu mensaje para enviarlo, podrás elegir la duración de el mismo. Cuando haya pasado este tiempo, el mensaje se borrará de los teléfonos de quienes lo hayan recibido.

·         Disponibilidad
La aplicación de Snapchat se encuentra disponible para teléfonos móviles que tengan sistemas operativos iOS (iPhone) o Android. Si tu teléfono no es de este tipo, no podrás instalar Snapchat.

·         Costo
Esta es otra de las gracias de Snapchat. Al igual que WhatsApp, tus mensajes serán enviados como datos, y no como mensaje de texto multimedia o SMS. Esto significa que si cuentas ya con un plan de datos para tu equipo móvil, no tendrás que pagar nada extra para enviarlos.
Y si te encuentras en una red de WiFi, y tu teléfono está conectado a ella, tus mensajes también podrán ser enviados sin costo. De esta manera, si no cuentas con un plan de datos podrás seguir comunicándote con tus amigos mediante Snapchat de manera gratuita.

·         Privacidad
Al igual que en muchas otras aplicaciones, podrás configurar la privacidad que deseas para tu cuenta en Snapchat. Si tienes en tu lista de contactos de Snapchat a una persona con la que ya no te interesa comunicarte, podrás bloquearlo para que ya no te pueda enviar mensajes. Y si cambias de parecer, podrás deshacer tus pasos y volver a habilitar a esta persona para que pueda contactarte. Si ya has tenido que bloquear o desbloquear a personas en sitios como Facebook, por ejemplo, seguramente te darás cuenta de lo útil que pueden llegar a ser este tipo de herramientas para controlar tu privacidad.
Otra opción interesante de Snapchat es que podrás seleccionar si deseas que usuarios desconocidos te contacten o no. Con tan solo unas sencillas modificaciones podrás cambiar esto para que solamente tus amigos más cercanos te puedan escribir.

·         Consideraciones antes de usar Snapchat
Debido a la facilidad con la que es posible enviar fotos y videos personales, son muchas las personas que no consideran a Snapchat una aplicación apta para sus hijos. Si los tuyos ya tienen teléfonos móviles y desean comenzar a usar esta aplicación, conversa con ellos acerca de los riesgos de las redes sociales en Internet. Revisa también con ellos los Términos de Uso de Snapchat y su Política de Privacidad. Finalmente, asegúrate de monitorear de manera permanente pero no obsesiva su comportamiento en esta red.


TODO SOBRE EL NUEVO SISTEMA OPERATIVO TIZEN OS


¿Quien quiere ganarse unos euros? Pues consíguelos con Tizen OS

Y es que la mejor manera para conseguir que una plataforma móvil despegue, es tener un buen número de aplicaciones disponibles para los futuros usuarios. Sin embargo, convencer a los desarrolladores para que inviertan su tiempo y dediquen esfuerzo en desarrollar, no es fácil y salvo que haya algún motivo de peso, muchos (sobre todo los más modestos y pequeñitos) seguiran trabajando en lo que conocen. Y ¿cual es el mejor combustible para mover a la gente? pues está claro que el vil metal y Samsung está dispuesto a gastarse una suma interesante, en conseguir que Tizen disponga de un buen abanico de aplicaciones en sus comienzos.
Asi que, al igual que sucedió con nuestro querido Bada (y esperando que esto no sea sinónimo de un fracaso similar), Samsung ha organizado un concurso el Tizen App Challenger, en donde nos invitan a participar y a subir nuestras aplicaciones hasta el próximo 1 de Noviembre de 2013.  Los premios son bastante jugosos, la categoría de juegos se puede llevar hasta 200.000 dólares y las aplicaciones “más serias” hasta 120.000.
Para poder participar, hay que crear la aplicación (obvio) y luego subirla al market de Tizen y pasar el proceso de certificación, pasado dicho proceso, ya podéis registrar la aplicación para el concurso.
Asi que, ¿a qué esperas para hacerte con el primer puesto? bueno con el segundo, el primero será para un servidor ;-)
Buena suerte!!

Tizen está que arde. O cómo hacer un efecto fuego en Tizen nativo.

En otras ocasiones, ya he comentado, que uno de los motivos por el cual acabé interesándome por Tizen, fue precisamente la desaparición de la injustamente maltratada plataforma Bada, lo reconozco me dolió en el alma lo que se hizo con ella, y aún hoy, tomo alguna que otra pastilla para dormir por ello (es broma claro ;-) ).
En aquellos tiempos ya lejanos (bueno tampoco es que haga tanto, pero de este modo queda más poético) estuve colaborando con una web, llamada Badadev.com, capitaneada por Wit, en donde algunos intrépidos corsarios, tuvimos a bien publicar nuestros Bada-conocimientos, para uso y disfrute de toda la Internete. Fruto de aquella colaboración, elaboré algunos artículos bastante interesantes (los escribí yo, así que, qué voy a decir, ¿verdad?), que he tenido la feliz idea de rescatar, retraducir al español (porque en Badadev escribíamos en la lenguaje de Skespeare) y adaptar a la plataforma Tizen.
Con esto de la migración de aplicaciones de Bada a Tizen, ya comenzamos el otro día, cuando estuvimos viendo, cómo funcionaba el asistente de migración, pero creo que es una buena idea dedicarle algunas entradas adicionales, básicamente para que aquellos que como yo, naufragamos en el océano de Bada (para el que no lo sepa Bada en coreano significa océano) y ahora disfrutamos de las cálidas playas de la isla de Tizen.
Generalmente, cuando uno comienza con un lenguaje, lo primero que intenta aprender es como hacer el “Hola Mundo”. Para mí, el “Hola Mundo”, se resume siempre, en ver como implementar una simulación del efecto fuego con dicho lenguaje. Supongo que es una pequeña herencia de cuando más joven, comenzando con el mundo del PC, llegaron hasta mi las primeras demoscenes, y en ellas, una de las virguerías de programación que siempre me alucinaba era el tema de las partículas y como simular fuego en la pantalla. Hoy en día, está prácticamente chupado, y casi cualquier motor 3D dispone de un conjunto de primitivas, que permiten crear sistemas de partículas, en donde modificando unos parámetros básicos, se consigue crear agua, niebla y por supuesto fuego, pero suponiendo que no disponemos de estas herramientas, ¿cómo podríamos crear un efecto fuego en la pantalla de nuestro dispositivo Tizen?
La idea que presentamos es muy simple en su concepción, de hecho, lo que vamos a hacer es crear un efecto fuego en 2D. Para ello, vamos a jugar con la paleta de colores, de modo que cambiando los colores de los pixeles de alrededor de uno dado, conseguiremos simular ese efecto fuego. Referencias en Internet, a cómo se implementa esta idea, hay cientos y una simple búsqueda en Google os mostrará muchos resultados con algoritmos de manipulación de píxeles, más o menos elaborados pero que se reducen a la idea que os cuento yo a continuación.
¿Cómo funciona el algoritmo que implementamos? Muy simple, imaginamos que la pantalla es cómo un enorme enrejado compuesto de celdas, en cada una de ellas tendremos un pixel de un color diferente. Ahora seleccionamos un pixel (comenzando desde la fila de más abajo), realizamos una simple operación matemática, que consiste en la media de los colores de los pixeles que tenemos a la izquierda, a la derecha, encima y debajo del que queremos calcular su valor, y voila, repetimos el proceso por todo el enrejado hasta acabar con la celda superior de la esquina derecha, hecho lo cual volvemos a repetir el proceso. Como en cada iteración, los valores de los pixeles que calculamos, dependen de los de alrededor, y estos se han actualizado en la iteración anterior, sucede que a medida que transcurre la ejecución del proceso, obtenemos un efecto fuego de lo más realista.
Cómo se suele decir, una imagen vale más que mil palabras, así que, suponiendo que nuestra pantalla consta de 4×5 celdas, y que buscamos el color del pixel que la imagen está en amarillo, tendríamos algo similar a lo siguiente:
efectoFuego
Para hacer que todo esto funcione, he creado una clase llamada “Fire” que hereda de la clase formulario y que implementa la interface “IRunnable” y su método “Run”. La forma de invocarla es sumamente sencilla ya que desde el objeto de entrada de la aplicación (“FireEffectApp“) creamos un nuevo Thread al que pasamos el control de nuestra clase “Fire” cómo vemos (no olvidar que dado que “Fire” implementa “IRunnable” podemos hacer estas cositas que la POO habilita al programador) y llamar al método “Start” que a su vez no es más que la ejecución del código del método “Run“:
void
FireEffectApp::OnForeground(void)
{
// TODO:
// Start or resume drawing when the application is moved to the foreground.
Frame *pFrame = Application::GetInstance()->GetAppFrame()->GetFrame();
Thread* _pThread = new Thread;
Fire* fire = new Fire();
fire->Initialize();
_pThread->Construct(*fire);
_pThread->Start();
pFrame->AddControl(*fire);
pFrame->SetCurrentForm(*fire);
fire->Draw();
fire->Show();
}
El método “Run” es un bucle infinito, en donde se manipula una tabla que es la que contiene los valores de colores asociados con cada casilla. Esta tabla tiene de nombre “fire[][]” y y se usa para realizar los cálculos sobre el canvas (o lienzo) de la aplicación (ya hablaré en otra entrada sobre esta parte del API), el tamaño de esta tabla se define en dos variables “screenWidth” y “screenHeight”, para el ancho y alto respectivamente .  Una cosilla que viene de antiguo, es el problema del pintado en pantalladirectamente, tradicionalmente esto suele producir problemas de parpadeos o de un bajo rendimiento, para evitarlos, en vez de utilizar un único canvas, uso dos (“_pCanvas” y “pCanvas“), para implementar un doble buffer de pintado en pantalla.
Una consideración importante de mi implementación es que, para obtener un mejor rendimiento, no realizo un cálculo de cada punto individual de la pantalla, sino que añado una constante denominada “pixelization” que tiene un valor de 5×5, y que determina cuantos pixeles manipulo como un grupo. La lógica para el cálculo del valor del color es la misma que expliqué anteriormente, pero aplicando el efecto a grupos de cinco pixeles, en vez de a uno individual. Lo mejor es que cambies este valor y hagas pruebas para ajustar cómo se ve mejor, y es que cuanto menor es el valor de la pixelización, el efecto resulta más suave, pero el rendimiento será un poco peor.
¿Dónde está el truco del efecto? Pues todo está en la paleta de colores que elijamos y en los valores que pongamos en ella. En este caso, yo he dividido la paleta en cinco tramos, que van desde el negro al blanco, pasando por el rojo, el naranja y el amarillo. Fijaros, que si lo que queremos es un fuego de color azul o verde, lo único que habrá que hacer es cambiar los valores de la paleta y listo, tendremos el fuego del color que deseemos. La paleta se define en el método “Initialize” de la clase, rellenando un array de nombre “palette” y jugando con los colores en formato RGB y el método “GetRGB32()” del API, establecemos los colores para la misma, en el rango que os comenté anteriormente, luego el método “Run” se encarga de hacer los cálculos sobre la matriz “fire”, teniendo en cuenta los valores establecidos en la paleta:
Object*
Fire::Run(){
while (true) {
//Randomize the bottom row of the fire buffer
for(int x = 0; x < screenWidth; x++)
fire[x][screenHeight - 1] = Math::Abs(32768 + Math::Rand()) % 256;
//Do the fire calculations for every pixel, from top to bottom
for(int y = 0; y < screenHeight – 1; y++) {
for(int x = 0; x < screenWidth; x++) {
fire[x][y] = ((fire[(x - 1 + screenWidth) % screenWidth]
[(y + 1) % screenHeight] +
fire[(x) % screenWidth]
[(y + 1) % screenHeight] +
fire[(x + 1) % screenWidth]
[(y + 1) % screenHeight] +
fire[(x) % screenWidth]
[(y + 2) % screenHeight]) * 32) / _intensity;
}
}
Rectangle* rectangle;
int offsetX; // Control fire offset over X axis
int offsetY; // Control fire offset over Y axis
offsetX = 42;
offsetY = 80;
// Print the fire in the double buffering area
for (int x=0; xfor (int y=0; yrectangle = new Rectangle(offsetX, offsetY, pixelization, pixelization);
_pCanvas->FillRectangle(Color(palette[fire[x][y]]),*rectangle);
offsetY = offsetY + 5;
}
offsetX = offsetX + 5;
offsetY = 80;
}
delete rectangle;
RequestRedraw(true);
}
}
Y nada más, aquí os dejo como queda la cosa sobre el emulador, los botones “+” y “-” sirven para variar la intensidad del fuego en pantalla, y es que a partir de hoy, Tizen está que arde.
fireEffect
Ahhh!!!! y el enlace al código fuente lo tenéis aquí desde mi Google Docs.
Nos vemos.

¿Nos vamos de compras? TizenStore

Pues sí, lo cierto es que se me había pasado por alto esto, pero lo cierto es que ya tenemos nueva tienda para que podamos publicar nuestras aplicaciones para Tizen. El proceso para hacerlo es muy sencillito y se resume en los pasos siguientes:
  1. Nos vamos a la tienda desde el siguiente enlace.
  2. Seguidamente pulsamos sobre “Join Now“  e indicamos si somos un vendedor privado (Private Seller) o no (Corporate Seller).
  3. Nosotros nos hemos registrado como Private Seller, asi que rellenamos un formulario con unos cuantos datos básicos y nos leemos los acuerdos de licencia y los aceptamos.
Tizen Store 01
  1. Recibimos un mensaje a la dirección de correo de registro, con un enlace para confirmar el proceso de registro.
Y listo, ya podemos logarnos dentro de la Tizen Store, que tiene la misma apariencia que la tienda de aplicaciones Android de Samsung, y si no juzgar por vosotros mismos:
La tienda de Tizen es:
Tizen Store 04
Y la tienda para Android (y Bada) es:
Tizen Store 03
Como comentario, por defecto solamente podemos subir aplicaciones gratuítas, y en caso de querer subir aplicaciones de pago, tendremos que solicitar una autorización por parte de Samsung (esto es igual que cuando desde Bada creabamos aplicaciones para este sistema). Esto lo podemos hacer pulsando sobre el botón “Request Commercial Seller Status“, en donde se nos pide información adicional sobre nuestros datos bancarios y nos piden un documento de identificación para poder hacerlo.
Tizen Store 02
Y nada más.

Y en quinto lugaarrrrrr: Tizen OS

Bueno, una entradita rápida antes de irnos a comer y que acabo de leer, y es que según ABI Research, han publicado que la quinta plataforma móvil, más importante de 2013, será (ruido de platillos y tímbales aquí, por favor), pues si Tizen.
Sobre todo hacen hincapie, en que tendrá mucho éxito en Asia, en donde operadores como NTT DoCoMo o KT, van a apostar por él.
Veremos que pasa al final.
Nos vemos pronto!!

Tizen 2.1. Nectarina, ¿hacemos un zumo?

Bueno pues aunque la versión 2.1 de Tizen, llevaba liberada desde hace algunos días, o al menos así nos enteramos en los grupos de Linkedin de Tizen, lo cierto es que hasta el pasado 17 de Mayo, no lo vimos colgado en el site de Tizen y pudimos ponernos manos a la obra en el proceso de actualización (vamos si alguien pudo, genial, pero yo no pude, que le vamos a hacer).
Como siempre, obtener la última versión es muy fácil: la primera manera consiste en descargarnos todo el SDK desde la web (desde luego ya estáis tardando) y ejecutar el instalador. Éste, no presenta demasiados cambios con respecto a versiones anteriores, es el mismo asistente al que ya estamos acostumbrados con las mismas opciones.
En caso de tener ya instalado el SDK (chicos listos!!!!), para actualizarnos a la versión 2.1, tenemos que hacer uso del “Install Manager” y seleccionar la opción “Install or update the Tizen SDK“.
Tizen01
En el siguiente paso del asistente, desplegamos en el árbol “Platforms” y marcamos la versión “Tizen 2.1” y pulsamos sobre “Install“.
Tizen02
Dependiendo de cuanto os gastéis cada mes en la conexión ADSL, tardará un ratín más o menos largo, ya que se tiene que bajar casi un 1Gb de datos.
Y ¡listo! ya tenemos Tizen OS 2.1 Nectarine en nuestro sistema, ¿alguien quiere un zumo? porque vamos a exprimirlo ;-) en unos días comentamos que novedades son las que presenta esta nueva versión.

Tizen Developer Conference 2013

Una entradilla rápida antes de irnos a dormir.
No olvideis que ayer comenzó la Tizen Developer Conference 2013, yo la estoy siguiendo de cerca aunque de manera virtual (ya me habría a mi gustado estar en San Francisco estos días) pero no ha podido ser, pero seguro que pronto tenemos algún evento en Europa que merezca la pena y al que podremos apuntarnos.
De momento os dejo uno de los vídeos que he visto, en donde se puede ver en funcionamiento a Tizen sobre un Ultrabook de Intel, para ir haciendo boca, no está nada mal:
Seguir atentos, porque en breve contaré todo lo que haya dado de sí.

Migrando de Bada a Tizen (Parte 1/2)

Bueno pues hoy vamos a hacer un pequeño paréntesis a esto de los APIs, y voy a hablar de cómo podemos migrar nuestras aplicaciones hechas en Bada a Tizen. Y es que a pesar de que Bada era una gran plataforma, y fue, a mi juicio, injustamente tratada por Samsung, afortunadamente para todos los que desarrollamos en algún momento para este S.O, vemos como nuestros proyectos Bada, pueden seguir teniendo continuidad en Tizen, algo muy de agradecer y que hace que la inversión en tiempo que hicimos en ese momento no haya quedado en saco roto.
Y es que aunque no se instala por defecto, tenemos una herramienta para usar con el SDK para realizar este proceso de conversión, así que vamos a ver como tenemos que hacerlo.
En primer lugar, ejecutamos el asistente de instalación del SDK de Tizen, dado que yo trabajo desde Linux, este fichero, de nombre “InstallManager”, lo encontráis en la carpeta “install-manager”(¡que original!), al ejecutarlo obtenemos la siguiente pantalla:
migrationBada01
Pulsamos sobre el botón “Extra repository” y añadimos en el cuadro destinado a agregar nuevos repositorios el que contiene el asistente de migración y que se encuentra ubicado en:  http://developer.samsung.com/bada/repository/add-on/migration-tool. El aspecto que tendrá esta operación será similar a lo siguiente:
migrationBada02
Hecho lo cual, al volver a la ventana del instalador, desplegamos “Extras” y seleccionamos el check“Migration tool for bada projects”, y pulsamos el botón “Install” seguidamente.
migrationBada03
Se descarga el paquete y se instalará en vuestro sistema, y si todo ha ido bien, que será lo más probable, tendremos la siguiente ventana como resultado, en donde se nos indica que para finalizar la instalación debemos reiniciar la herramienta.
migrationBada04
Si ahora entramos dentro del IDE, para importar nuestro proyecto Bada, tendremos que irnos a la opción “File >> Import” y en el cuadro de diálogo que nos aparece seleccionamos la rama “Tizen >> Import bada project”, como muestra la figura siguiente:
migrationBada05
Lo que resta es muy sencillo, y consiste en seleccionar la ruta en donde está nuestro proyecto Bada y seguir los pasos del asistente, pero eso ya lo haremos en nuestra siguiente entrada en donde veremos como migrar la aplicación que desarrollé para Bada “Talking with God” a Tizen, y finalizaremos con esta utilidad.
Hasta la próxima!!!

TizenCup o como ir desarrollando en Tizen OS tazita a tazita (Parte 3). APIs de Programación

Pues habiendo finalizado el tema del empaquetado de aplicaciones, vamos a retomar nuestra serie de artículos dedicamos a la programación de Tizen, y dentro de nuestra serie denominada TizenCup,  iniciamos una serie de entradas cuyo objetivo es a dar a conocer el funcionamiento de las diferentes APIs de programación que vienen con el SDK.  
Sin un API de programación (Application Programing Interface), el acceso a las diferentes capacidades de cualquier hardware que tengamos a nuestra disposición, se convierte en un trabajo arduo y difícil, y tardaríamos mucho tiempo en llegar a ser productivos, al tener que pegarnos con la documentación de bajo nivel y crear nuestras propias rutinas de funcionamiento, afortunadamente, estas labores son las que el API nos facilita.
En Tizen, disponemos de varias de ellas, y en dependerá de si estamos creando una aplicación de tipo web, una nativa o una híbrida el uso de unas u otras. Veamos que nos aporta cada una de ellas:
API para el desarrollo basado en Web
Este API se divide en las siguientes:
  • Web Device API: Es el API básico de desarrollo para las aplicaciones basadas en Web, de aquí obtendremos la mayor parte de los elementos que usemos en nuestra programación más habitual.
  • Web UI Framework API:  Aquí tenemos elementos que están relacionados con la programación a nivel gráfico, cómo es la creación de widgets,  control de eventos, efectos y animaciones.
  • W3C/HTML5 API: Se compone de la especificación de Tizen para los estándares de la W3C y HTML5.
De las tres anteriores, probablemente la más importante es la primera ya que es la que nos permite acceder a todas las capacidades del dispositivo. Cómo podéis imaginar este API está basado en JavaScript y desde él se puede controlar todo el ciclo de vida de la aplicación, acceder a los datos del terminal, realizar intercambio de datos, pagar con NFC, y cualquier otra cosa que se os pase por la cabeza.
En la tabla siguiente tenemos la división las diferentes funcionalidades que nos proporciona este API:
Tizen Common
Tizen
Es el objeto base para el acceso a todo el API Web
Application
Alarm
Provee de funcionalidad para manipular las alarmas del terminal
Application
Facilita información sobre las aplicaciones que están en ejecución o instaladas y nos da el control sobre ellas
Communication
Bluetooth
Acceso y control del Bluetooth.
Messaging
Controla todo lo que tiene que ver con el sistema de mensajería, tanto SMS, MMS, como el envío y recepción de emails
NFC
Control para la realización de transacciones con NFC
Content
Content
Se usa para acceder al contenido multimedia (imágenes, videos o música)
Download
Proporciona interfaces y métodos para descargarnos objetos remotos vía peticiones HTTP
Input/Output
Filesystem
Lo usaremos para acceder al sistema de archivos del dispositivo. Se prevé que este API quede obsoleto en un futuro cuando se comience a utilizar el API de la W3C de acceso a ficheros
Social
Calendar
Control y gestión de la información del calendario
Call History
Acceso al registro e histórico de llamadas y VoIP
Contact
Para todo lo que tiene que ver con la administración de la información de los contactos del terminal
System
Power
Permite el control del uso de la batería
System Information
Acceso al tipo de pantalla, características de la red, almacenamiento y resto de capacidades que tiene el dispositivo
System Setting
Controla todos los ajustes (settings) del terminal
Time
La usaremos para obtener información sobre fechas, horas y zonas horarias.
User Interface
Notification
Se utiliza para notificar al usuario de cualquier tipo de evento que sucede dentro de la aplicación
API para el desarrollo nativo
En este caso, se disponen de un conjunto de espacios de nombres (namespaces) en donde tenemos un buen montón de clases que podemos invocar directamente en nuestro código, muchos de ellos comparten nombres muy similares a los que hemos indicado en la tabla anterior, no obstante hay que tener en cuenta que el desarrollo nativo y por tanto el acceso a estos espacios de nombres, siempre se realizará en C++, y si venís del mundo de Bada, me parece que os van a sonar la mayor parte de ellos ;-) , porque son muy parecidos. Los espacios de nombres con los que nos encontramos en este caso son:
  • App: Contiene las clases e interfaces básicos para el desarrollo de aplicaciones nativas.
  • Base: Complementa a la anterior con un conjunto de tipos de datos y métodos básicos que son usados en cualquier aplicación que desarrollemos.
  • Content: Provides classes and interfaces that allow you to handle content management and content search.
  • Graphics: Posibilita que las aplicaciones puedan visualizar imágenes (bitmap), polígonos y texto, gracias a las primitivas de renderizado y al soporte a OpenGL
  • Io: Como su nombre indica, nos permite el trabajo sobre ficheros,  directorios y la manipulación de datos
  • Locales: Contiene lo necesario para la realización del proceso de localización e internacionalización de la aplicación para diferentes países.
  • Locations: Posibilita que las aplicaciones puedan incorporar funcionalidades adicionales basadas en la localización del dispositivo y el acceso a servicios locales.
  • Media: Para el control de audio, video, procesamiento de imágenes y su gestión  por parte de las aplicaciones.
  • Messaging:  Tendremos control de todos los sistemas de envío de mensajes, ya sean estos SMS, MMS,  correos electrónicos o notificaciones de tipo Push
  • Net: Para la gestión de las conexiones de red, y para el control de la transferencia de datos entre dispositivos Tizen.
  • Security: Herramientas para el control de la seguridad como son los certificados digitales y otras clases con funcionalidad básica de criptografía.
  • Shell: Nos proporciona herramientas para gestionar diversas características de la shell del terminal.
  • Social: Facilita la creación de aplicaciones que tienen que interactuar con los datos personales del usuario sobre las redes sociales
  • System: Para accede a la información y características disponibles de nuestro dispositivo.
  • Telephony: Gestión de las llamadas, acceso a la información de la red y de la tarjeta SIM.
  • Text: Es un namespace de utilidad para garantizar la interoperabilidad entre los estándares de codificación usado tanto en las aplicaciones Web, como en los SMS y MMS.
  • UI: Son las clases básicas necesarias para la creación de la interface gráfica de usuario.
  • Uix: Complementa a la anterior al proporcionar un mecanismo de acceso al uso del terminal de maneras no convencionales, por ejemplo, en este namespaces tenemos acceso a clases para el control de los sensores incorporados.
  • Web: Permite integrar características Web en las aplicaciones.
Y por hoy nada más, en las próximas entradas iremos viendo ejemplos de uso de cada uno de estos APIs.

iOS ¡pero sigo siendo el rey!!!! ¿seguro?

Bueno, bueno, bueno, pues con tantas noticias sobre Tizen que están llegando a mis manos, no estamos teniendo mucho tiempo para seguir avanzando en los artículos de programación, pero tranquilos que volveremos a ellos en cuanto tengamos un ratinin, pero creo que la noticia que traemos hoy por estos lares merece un comentario.
Si leeis los post anteriores que he ido escribiendo, veréis que tengo cierta tendencia a meterme un poco con Android, ¡ojo! que yo a este sistema operativo no le tengo nada de manía y me gusta mucho, pero no por eso todo tienen que ser alabanzas ¿no? el caso es que hasta ahora no habéis tenido oportunidad de meternos con iOS, como si la aparición de Tizen no fuera con él, ¿verdad?
Pues nada más lejos de la realidad, y es que si en la entrada de ayer decíamos que temblara Android, hoy podemos decir lo mismo con iOS, y es que si bien Tizen poseerá mecanismo de compatibilidad directa con Android como los de Infrawared o los de OpenMobile, resulta que en Intel han dicho que no van a ser menos con los desarrollos ya realizados sobre iOS, asi que están desarrollando una aplicación llamada APP Porter Tool (podeis encontrar aquí la versión beta) la cual permite portar aplicaciones de IOS a HTML5… si si, habéis leído bien, a HTML5, con lo cual llevarlo a Tizen se convierte en un proceso muy rápido.
Digo muy rápido, porque la herramienta no es una solución completa que realice una transformación 100% de una aplicación iOS, pero acelera el proceso de migración de manera exponencial, se enfoca principalmente en el proceso de los siguientes elementos:
  • El código fuente de Objective-C a JavaScript.
  • Transforma las llamadas del API de iOS a llamadas de objetos JavaScript/HTML5.
  • Iden para las vistas  con Xcode Interface Builder (XIB) y su transformación en ficheros  HTML  y CSS.
  • Conversión de los proyectos Xcode a proyectos Microsoft Visual Studio 2012.
En el siguiente gráfico se resume el proceso de migración de un modo simple para que os hagáis una idea:
translation_objc_into_javascript_high_level
Y si queréis verlo en acción, solamente hacer clic al siguiente vídeo que se presentó en la pasada Game Developer Conference 2013:
Seguimos informando ;-)

Tiembla Android!!! Tiembla!!

Y es que si yo fuera los señores de Google, estaría muy nervioso ante lo que voy a contaros a continuación.
Resulta que la empresa Infraware ha dado a conocer su generador App Polaris (PAG) que se compromete a ejecutar aplicaciones y juegos para Android en la plataforma Tizen sin problemas. Todos los detalles e información adicional sobre su servicio de publicación de Android para Tizen utilizando PAG se dará a conocer en la Conferencia Tizen 22 a 24 mayo 2013.
PAG Infraware se basa en su singular Polaris Android Framework (PAF), desarrollada después de largas investigaciones en la máquina virtual Dalvik (que para quien no lo sepa es la máquina optimizada de ejecución de la que hace uso Android). PAF es una plataforma tecnológica que permite a las aplicaciones Android ejecutarse en plataformas no-Android incluyendo Tizen. Permite a los juegos y las aplicaciones convertidas a Tizen, con la extensión .Tpk, operar sin problemas en diversos dispositivos que utilizan el sistema operativo Tizen.
Y es que las  palabras de Kwak Min Cheol, presidente de Infraware no pueden ser más rotundas:
“Infraware apoyará el nuevo sistema operativo para móviles y su crecimiento constante con nuestra innovadora tecnología y know-how “
para añadir a continuación
“Además, con Tizen y otros plataformas móviles emergentes, estamos comprometidos a explorar y promover el crecimiento continuo de la eficiencia y las oportunidades de mercado de expansión para los desarrolladores de juegos y aplicaciones a través de los esfuerzos tecnológicos y de servicios que minimicen sus costos adicionales.”
A principios de este año OpenMobile ha demostrado su propia solución para ejecutar aplicaciones y juegos de Android en Tizen y sin duda será bueno para ver los pros y los contras de ambas soluciones. Si recordáis a la tecnología de OpenMobile y a su ACL (Application Compability Layer) ya le dedicamos una entrada hace algunos meses, pero la aparición de la solución de Infraware refuerza la solidez con la que Tizen va a presentarse ante los desarrolladores de aplicaciones, que tendrán la posibilidad de ejecutarlas sobre Tizen sin necesidad de tener que reescribir el código. Y cómo desarrollador os aseguro que es algo que se agradece.
De cualquier manera, Android ahora se podrá ejecutar en Tizen! Así que lo dicho tiembla Android!!! tiembla!!! ;-)
La noticia original podéis verla haciendo clic aquí.
Fuente

Próximos temas que se verán en la Tizen Conference 2013

Muy buenas a todos los que me seguís, hoy os traigo noticias frescas y que espero resulten de vuestro interés.
Poco a poco vamos viendo como esto de Tizen va muy en serio, y ya sabemos los temas que han sido elegidos (de entre más de los 160 propuestos) para hablar en los próximos 22 al 24 de Mayo de 2013, en San Francisco, en la Tizen Conference 2013.
Los temas se han dividido en tres grandes categorías a saber:
  • Desarrollo y despliegue de aplicaciones.
    • Una visión general del Framework nativo de Tizen
    • Fundamentos de desarrollo de juegos HTML5
    • Cordova en Tizen Magnolia
    • Presentaciones de Developers: el desarrollo de aplicaciones nativas para dispositivos Tizen
    • Presentaciones de Developers: Desarrollo de aplicaciones Web para dispositivos Tizen
    • HAXM acelera al emulador de Tizen en Windows / Mac
    • Juegos Altamente portables en HTML5 para Tizen
    • Características de HTML5 en Tizen
    • Introducción a las herramientas de desarrollo web minimalistas del Tizen SDK
    • Haciendo aplicaciones nativas con los Frameworks Nativos de Tizen.
    • Migración de Aplicaciones Web existentes para Tizen
    • Portar aplicaciones existentes en PhoneGap para Tizen OS
    • Portar Aplicaciones iOS y Android para Tizen
    • La protección de código fuente de JavaScript en el Runtime Web
    • Concepto de Plataforma Social y Demo: más allá de Tizen 2.x
    • Tizen: Guía de diseño y experiencia de usuario
    • Tizen habilitadores de apoyo (Enablers) y motores de juego
    • Tizen APIs para dispositivo Web y Hands-On Lab
    • Tizen: Utilizando el enfoque inteligente para atraer Aplicaciones
    • WebGL y WebSockets para juegos 3D multijugador y multiplataforma
    • Escriba su Juego “Angry Birds” en Tizen por diversión y dinero
  • Plataforma y el desarrollo para dispositivos
    • Renderizado de HTML5 acelerado para la Plataforma Tizen
    • Gestión de audio para Tizen IVI
    • Mejores prácticas para la plataforma Tizen: desde el código hasta el dispositivo
    • Framework de Contenido de seguridad
    • Experiencias en desarrollo a Wayland HMI basado en Tizen IVI
    • Habilitación de administración de energía y puesta a punto para IA teléfono Tizen
    • WebKit2
    • Wayland para Tizen
    • Puede ser simple, pero ¿Cómo es útil?
    • Proxima generacion BlueZ y dispositivos Bluetooth inteligentes
    • Optimización del rendimiento del Webkit de Tizen: memoria y gráficos
    • Renderizado de Calidad con la Fuente de Pila de Gráficos en WebKit (WebKit’s Open Source Graphics Stack)
    • Descarga de Tizen & Go for IVI
    • Vision General del Servicio de Entrada de datos al dispositivo Tizen (Input Service Framework)
    • Telefonía en Tizen 2.1: ¿qué hay de nuevo?
    • Tizen Web Runtime Update
  • Tizen: proyecto, proceso y progreso
    • Enfoque de desarrollo “In-Vehicle” en software de código abierto
    • Análisis de la seguridad de aplicaciones nativas para la plataforma Tizen
    • El modelo de desarrollo Tizen
    • Tizen: Pruebas de cumplimiento (TCT)
    • Tizen: Descripción y Arquitectura
    • Tizen: introducción al Store
    • Tizen.org: Infraestructura Web
    • Web OS oportunidades y desafíos en el mercado de China
Lo cierto es que los temas elegidos son espectaculares, y muy interesantes, y yo que vosotros si estáis cerca de San Francisco, no me lo perdería.
Para acceder a  la noticia original solo tenéis que hacer clic aquí.
Y nada más, seguimos avanzando.

Nos Vamos de Viaje o Empaquetado de Aplicaciones (Parte 1)

¿Qué tal cómo estamos desde nuestro último post? Espero que la semana se esté desarrollando con buen pie. La nuestra no está yendo del todo mal, y poco a poco los proyectos van avanzando y vamos consiguiendo los objetivos marcados.  Uno de estos objetivos es mantener actualizado TizenSpain.com de manera más asidua, y estoy consiguiendo sacar tiempo de debajo de las piedras para hacer más pruebas con el entorno y me he lanzado a portar algunos programas que tengo hechos en otras plataformas, algo de lo que os hablaré en otra ocasión.
Hoy quiero que nos paremos en otro aspecto muy importante del desarrollo en Tizen, y que consiste en comprender como funciona su completo sistema de empaquetado de aplicaciones. Sabemos, porque lo he repetido en otras ocasiones, que Tizen permite desarrollar aplicaciones siguiendo tres técnicas diferentes:
  • el desarrollo basado en estándares web (HTML5, CSS y JavaScript),
  • el desarrollo nativo (C y C++)
  • y el desarrollo híbrido, en donde se combinan los dos anteriores para crear una aplicación.
Cada uno de ellos empaqueta la aplicación de un modo diferente. Cuando digo empaqueta me refiero al resultado final o conjunto de ficheros finales que se agrupan en uno mayor (paquete) y que obtenemos cuando hemos acabado nuestro desarrollo y queremos ponerlo en marcha sobre un dispositivo. Supongo que queda más claro si echamos un vistazo a la figura del ciclo de vida de una aplicación:
imagen01
Vemos que el proceso de empaquetado, se produce una vez que hemos finalizado lo que es la fase de depuración y tenemos nuestra aplicación lista para su distribución, ciclo que se puede gestionar con las herramientas que están disponibles desde el SDK, algunas de ellas, ya las hemos visto cuando creamos nuestra primera aplicación de ejemplo basada en una de las plantillas por defecto.
Tizen Package Manager
El Package Manager o Administrador de Paquetes es uno de los componentes básicos del framework de aplicaciones y es el responsable de realizar la instalación, desinstalación y cualquier modificación en los paquetes que tengamos instalados en el dispositivo, de hecho, es posible obtener información sobre qué está instalado preguntándole a él.
Debido a la versatilidad en el desarrollo de aplicaciones, el Package Manager ha sido diseñado para poder manipularlas sin problemas, pero fijaros en una cosa muy importante y es que Tizen tendrá la capacidad de operar no solo con aquellos elementos diseñados específicamente (siguiendo alguna de las técnicas que comentábamos al principio) sino que entre sus posibilidades también reside la ejecución de aplicaciones hechas en Java, por lo que el diseño del Package Manager, está pensado para poder añadirle módulos adicionales que permitan gestionar estos paquetes de aplicaciones en formatos tan diversos.
El aspecto que presenta el Package Manager es el siguiente:
imagen02
Todo el proceso de manipulación de un paquete por parte de nuestro dispositivo, comienza cuando nos descargamos la aplicación de la tienda de aplicaciones (y no sólo de la Tizen App Store), en ese momento el adminstrador de paquetes determina que debe de hacer con la aplicación descargada (insertar/desinstalar/actualizar) y a partir de ahí cede el control a otros dos componentes del sistema:
  • osp-installer: es el encargado de realizar la manipulación de aquellas aplicaciones del tipo “.tpk”
  • wrt-installer: es a su vez el responsable de trabajar con las aplicaciones del tipo “.wgt”
En cualquier caso, el Package Manager puede saber en todo momento que aplicaciones hay instaladas en el dispositivo y actuar en consecuencia.
Formatos de Paquete Soportados
¿Cuáles son los formatos de paquete con los que nos vamos a encontrar?  Pues son básicamente dos:
  • el Tizen  Package: Que se destina a aplicaciones en C++ o contenidos exclusivos de Tizen. Funciona como un fichero zip con extensión “.tpk”
  • el Tizen Web Package: Que lo destinaremos para aplicaciones basadas en los estándares web y aplicaciones híbridas. También funciona como un fichero zip pero con extensión “.wgt”, y este último se basa en el estándar de la W3C para el empaquetado y configuración de aplicaciones.
En la tabla siguiente se resume muy bien estas posibilidades y los tipos de aplicaciones que representan:
imagen05
Algunos detalles del Tizen Package (.tpk)
En este tipo de empaquetado hay dos ficheros que son muy importantes:
  • El fichero de información del paquete o “manifest.xml” (Package Information File), que contiene un conjunto de información detallada acerca de la aplicación, por ejemplo, aquí encontramos el Application ID, la versión, tipo de paquete, autor, idioma, requerimientos de la aplicación, etc.
Pulsa aquí para obtener la lista completa de propiedades (Package Information File)
  • El fichero de configuración o “config.xml” (Configuration File), es el que enlaza con el fichero anterior, y contiene atributos de carácter opcional.
Pulsa aquí para obtener la lista completa de propiedades (Configuration File)
Toda aplicación tiene asociado un AppId o Identificador de Aplicación, que obviamente la identifica dentro del sistema y que sirve como nombre base para el directorio en donde estarán contenidos todos sus archivos.
La estructura de directorios que la aplicación tiene cuando esté instalada dentro de un dispositivo es similar a la del siguiente esquema:
imagen06
Algunos detalles del Tizen Web Package (.wgt)
Este tipo de paquetes al estar basados en la normativa de la W3C siguen dicho formato en cuanto a ficheros y estructura de directorios. La estructura de directorios que la aplicación tiene cuando esté instalada dentro de un dispositivo es similar a la del siguiente esquema:
imagen06En la figura vemos que en el “.wgt” se encuentra definidos los recursos de nuestra aplicación, es decir, ahí encontraremos nuestros javascript (en “/js”), hojas de estilo (en ‘/css’) y resto de elementos como los html, los iconos, etc. De todos los archivos que vienen dentro de un Web Package los más importantes son los siguientes:
imagen04
Y por hoy lo dejamos aquí.
En la siguiente entrada veremos cómo relacionar todo esto que acabamos de ver con lo que tenemos dentro de nuestro entorno de trabajo.
Seguiremos informando!!!

Tizen Application Framework

Pues ser nuevamente bienvenidos a estos mares, pasada la Semana Santa y habiendo recargado las pilas, vamos a ver si seguimos metiendo mano a nuestro sistema operativo favorito para sacarle un poco más de jugo, además como estamos de cumpleaños, que mejor regalo que una nueva entrada.
Hace unas semanas hicimos un pequeño “Hola Mundo” siguiendo uno de los asistentes que vienen con el SDK, sin embargo, no vimos mucho de qué sucede por debajo, ni entramos en detalle en el ciclo de vida de la aplicación. Hoy vamos a ver cómo funciona este modelo interno y quien es el responsable de hacerlo posible, pero tranquilos, que nadie se asuste, no es nada complicado y sigue un esquema muy similar al resto de sistemas operativos.
Application Framework (AF),
Entonces, ¿qué os parece que un S.O os permita crear aplicaciones haciendo uso de soporte Web (HTML5, CSS, JavaScript), en modo nativo (C/C++) o de un modo híbrido (Web & Nativo)? Pues que os debe de parecer, pues genial, y al fin y a la postre cuantas más posibilidades tengamos, más posibilidades para hacer llegar a los demás nuestra creatividad, ¿verdad?. Y todo esto se consigue gracias al Application Framework (AF), que es quien proporciona toda la funcionalidad para empaquetar, lanzar y administrar una aplicación Tizen, y cuyo aspecto es el siguiente:
Application_Framework
El AF también nos permite lanzar otras aplicaciones usando su nombre de paquete, URI o MIME type, pero además también se encarga de ejecutar servicios predefinidos (como el system dialer) o notificar al resto de aplicaciones en ejecución de eventos comunes, como estado bajo de memoria, baja batería, cambios en la orientación de la pantalla o notificaciones push. La figura nos muestra que el AF tiene dos elementos clave: el AppCore y la AUL.
Ciclo de Vida de la Aplicación (AppCore)
De las cajitas anteriores el AppCore es el que gestiona el ciclo de vida la aplicación y los eventos del sistema, es decir, es quien controla la creación, reseteo, pausado, reanudación y terminación de las aplicaciones, y proporciona los manipuladores para los eventos de sistema que decía antes (como que tengamos poca memoria). Fijaros, que el AppCore, se asienta sobre otro elemento denominado RUA, que se encarga de gestionar las aplicaciones recientemente utilizadas (Recently Used Application).
Cuando una aplicación se arranca por el AppCore, la historia que va a seguir puede verse resumida en el siguiente gráfico:
Ciclo_de_Vida
El significado de  cada una de las cajas anteriores es el siguiente:
  • CREATE – Se llama inmediatamente después de que la aplicación ha sido lanzada. Se encarga de inicializar la aplicación y crea una ventana para la misma, reserva memoria para las estructuras de datos, etc.
  • RESET – Se ejecuta en cada solicitud de lanzamiento o relanzamiento de la aplicación.
  • PAUSE – Se ejecuta cuando la ventana de la aplicación es invisible para el usuario. Las tareas de una aplicación pueden ser suspendidas en el estado de pausa.
  • RESUME – En este estado se entra cuando la ventana de la aplicación vuelve a ser visible otra vez.  Las tareas pausadas de una aplicación pueden ser reanudadas de nuevo.
  • TERMINATE – Se llama después de la finalización del bucle principal de ejecución de la aplicación. En él, la aplicación termina.
Cuando se entra en cada estas cajas, la aplicación cambia su estado, ni que decir tiene que el motivo por el cual una aplicación pasa de una caja a otra (o dicho de otro modo, pasa de un estado a otro) se debe a la recepción de diferentes tipos de eventos por parte de la misma. Los estados asociados son los siguientes:
Estados_Aplicacion
Cuando la aplicación es lanzada por primera vez, pasa al estado de READY para pasar a continuación al estado CREATED cuando se el evento de creación es llamado. La aplicación se inicializa en el estado CREATED y una vez realizada esta inicialización, se entra en el bucle principal de ejecución (en donde la aplicación realiza la función para la cual ha sido programada) y queda en el estado de RUNNING, para recibir las entradas por parte del usuario y los eventos. En este estado va a permanecer dependientdo del administrador de ventanas y del reto de peticiones de lanzamiento de aplicaciones, y en este caso la aplicación puede pasar al estado de PAUSED o RESUMED según corresponda. Finalmente el estadoTERMINATED se alcanza cuando el evento de terminación de la aplicación se ejecuta, momento en el cual la aplicación finaliza.
Manipulación de Eventos
Otro elemento muy importante del Aplication Framework es el AUL (Application Utility Library), encargado de proporcionar los mecanismos necesarios para enviar / recibir las peticiones de lanzamiento y terminación de las aplicaciones. La AUL funciona como un demonio y dispone de información sobre todas las aplicaciones en ejecución. Su funcionamiento se resume en:
AUL
Como se aprecia por la figura, el demonio está al tanto de todas las peticiones que se realizan (launch, resume, terminate) y actúa en consecuencia consultando la base de datos de información de aplicación, en el caso que la aplicación ya haya sido lanzada, se realiza un resume de la misma, en caso contrario, si no está ejecutándose, se procede a su lanzamiento y a la actualización de las base de datos de información de aplicación. 
En este esquema, es posible que dos aplicaciones quieran interactuar entre si, y para ello Tizen provee del Application Data Exchange (ADE) que mediante el intercambio de paquetes habilita tal posibilidad. La forma de hacerlo consiste en crear un paquete (bundle), añadirle información y hacer que una aplicación (sender) se lo envíe a otra destinataria (receiver). Los paquetes que se envían siempre funcionan siguiendo un esquema del tipo “clave + valor”. La siguiente figura ejemplifica este comportamiento muy bien:
Application_Data_Exchange
Finalmente y por ir acabando,  me gustaría que os comience a sonar otra palabrota a la que ya dedicaremos más tiempo, el Application Information Library o AIL es el último de los elementos que está relacionado con el Application Framework, y sirve para añadir, actualizar o borrar información de la aplicación, como puede ser su nombre, tipo, ruta al icono, etc.  Si nos fijamos en la figura vemos que cuando una aplicación se descarga y se almacena en el dispositivo, una petición de instalación es efectuada al administrador de paquetes (pkgmgr), el cual invoca al wrt-installer o  Web Runtime Installer.
Application_Information_Library
Y por hoy nada más, en el próximo post hablaremos de como funciona el API de aplicaciones, lo que nos servirá de base para ir conociendo los que hay disponibles y hacer aplicaciones que tengan un poco de gracia.
Estar pendientes!! :-)

Cumpleaños Feliz!!!!

Pues sí y es que más o menos hace un año que TizenSpain.com echó andar por estos mundos cibernéticos de Dios. Si hacemos balance, tengo que decir que ha sido un año con muchos altibajos, y que he tenido más de una intención de tirar la toalla y dejar el blog, sobre todo ante el retraso constante de dispositivos que tengan Tizen instalado en el mercado o que al menos, puedan estar a disposición de una parte de la comunidad de desarrolladores que estamos siguiendo a este S.O. Lo digo en serio, no me habría importado pagar una cantidad simbólica por haberme hecho con un terminal de pruebas, pero chico no ha habido forma. 
Sin embargo, no hemos tirado la toalla, creo que 2013 va a ser el año en el que por fin Tizen verá la luz y espero con mucho entusiasmo el próximo Mobile World Congress, seguro que hay alguna sorpresa, no sé, tengo ese presentimiento, y aunque es cierto que algún amiguete mío (eso va por ti Alberto) me dice que estoy un poco mal de lo mío y que dedique más tiempo a BigData, y que Tizen parece el cuento de Pedro y el lobo, yo siempre digo, acordaros que si usamos ese cuento como símil y Tizen es el lobo, el lobo, al final, apareció, ¿será capaz de comerse una parte de la tarta? Eso lo veremos, pero yo apostaría a que sí.
En cualquier caso, seguiremos por aquí otro añito más, mi intención es potenciar el blog con más contenido y actualizaciones más regulares. Por eso daros las gracias a todos los que habéis pasado por aquí en algún momento o me habéis hecho algún comentario sobre el blog, esto no habría sido igual sin vosotros.
tarta

TizenSpain.com funciona de nuevo!!

Bueeeenoooooo! pues arreglados los problemas de hosting y dominio, nuevamente estamos operativos a través de tizenspain.com.
En fin, cosas del directo. Seguiremos informando, por que el mundo Tizen está lleno de sorpresas. Asi que estar atentos y no os despisteis.

TizenSpain.com no funciona bien

Pues sí, estas en lo cierto, estoy teniendo ciertos problemillas técnicos que espero resolver en breve debido a unos cambios en el registro del mismo. Mientras tanto puedes seguir conectándote al blog a través de tizenspain.wordpress.com
Y perdona las molestias!!

Tizen 2.0 Magnolia. ¿Magnolias de Acero?

Bueeeenooooo, pues ahora que hemos acabado con “La Aventura Original” para Android, un proyecto en el que llevaba trabajando unas cuantas semanas y con el que he pasado uno de los mejores momentos en cuanto a desarrollo se refiere, resulta que nos descuidamos un poco de Tizen, y ¡zas! nueva actualización al canto del SDK,  y es que Tizen 2.0 Magnolia ya está entre nosotros desde el pasado 18 de Febrero.
Por lo que llevo visto hasta el momento, mejora muchos aspectos de la versión 2.0 alpha, sobre todo en lo referente en cuanto a estabilidad y actualiza el soporte para HTML5 y asi como los wizards para crear proyectos. A nivel de rendimiento ha mejorado muchísimo, y en Ubuntu va muy bien, aunque en Windows todavía le falta un pelín de trabajo, aunque claro, esa es mi impresión personal je, je. 
Como siempre, y mientras voy preparando un análisis del mismo, si queréis podéis ir trasteando y jugando con él desde el siguiente enlace.

Samsung GT-I9500 ¿Tizen a la vista?

Ayer día de Navidad, en Sammobile apareció una noticia importante para aquellos de nosotros que dedicamos alguna hora de sueño a trastear con Tizen OS, y es que parece ser que desde la empresa coreana están trabajando en un nuevo terminal, con nombre GT-I9500, que bien podría ser el que se convierta en el punto de inflexión Android-Tizen.
Si esto es así y se confirmara, es muy probable que dispongamos de los primeros terminales con Tizen a lo largo de 2013, algo que cómo ya sabemos, hemos ido comentando por aquí.
Os dejo el enlace a la noticia aquí.
Seguiremos informando.

Tizen SDK 2.0 Alpha liberada!

Que si! Que lo sé! que como dice el dicho popular, tengo menos vergüenza que un gato en una matanza ;-), y es que hace casi un mes que no publico nada, y lo cierto es que no ha sido por falta de ganas, pero la cosa es que hemos cambiado de proyecto y el “aterrizaje” aunque ha sido suave, ha requerido su tiempo, además estoy dándole los últimos retoques a un nuevo juego que pronto verá la luz a través de mi pequeña empresa de juegos casuales z-games.es y que si todo sigue su curso, usaremos para nuestros post de programación en Tizen, pero todo a su debido tiempo.
Y es que en estos días han pasado algunas cosas interesantes dentro del mundo Tizen, aunque la más importante si duda ha sido, la publicación de la versión 2.0, de momento en Alpha, del SDK y que podéis descargar desde el siguiente enlace.  La publicación de una nueva versión del SDK, aunque sea en fase Alpha, parece confirmar que Tizen sigue todavía vivo y que los rumores que hemos ido publicando de una apuesta seria por él, no son solamente rumores.
Lo más llamativo a simple vista (a parte del cambio del logo triangular por el de un molinillo), es que en esta ocasión podemos descargarnos todo el SDK en un zip sin tener que hacer que la instalación sea de manera online (algo que para mi es muy interesante ya que no tengo siempre conexión a la red) aunque ¡cuidadin! no basta con descargar el zip y descomprimir, sino que tendréis que usar el instalador que va asociado a la versión que vayáis a probar.
Los requerimientos para ejecutar esta versión no distan mucho de los anteriores: procesador con doble núcleo (de como mínimo 2 GHz), 2 GB de RAM (aunque yo recomiendo 4 GB para que vaya con soltura la cosa) y unos 3Gb de disco duro, y como en versiones anteriores se recomienda usar la versión 7 del JDK y olvidarnos de OpenJDK, y algo parecido pasa con el navegador web, para que funcione el emulador web, se recomienda el uso de Chrome.
Sabiendo lo anterior, el proceso para instalar esta nueva versión, desde cero, es sencillo:
  • Descargamos el fichero zip que más nos interese (por ejemplo “tizen-sdk-image-2.0.0a-windows32.zip” para la versión Windows de 32 bits) y el programa de instalación asociado (que  en el caso anterior sería “tizen-sdk-2.0-windows32.exe“).
  • Ejecutamos el fichero .exe anterior y accedemos a la pantalla siguiente:
  • Pulsamos en el botón “Advance” y en el campo “SDK Image” indicamos la ruta en donde hayamos descargado el zip conteniendo la imagen (y nos olvidamos del servidor de paquetes que viene por defecto), hecho lo cual el programa instalador extraerá los paquetes contenidos en el zip y los instalará.
  • Aceptamos el acuerdo de licencia, y en la pantalla siguiente indicamos el tipo de instalación que queremos realizar. Ahora tenemos dos opciones adicionales que no aparecían en las versiones anteriores: la primera “SDK Development Tools” son utilidades que van a usar los desarrolladores del propio SDK, mientras que “Extras” son  paquetes de extensión de terceras partes (todavía no he visto cuales son exactamente).
  • Y poco más, el resto de la instalación sigue igual que en versiones previas y se resume en seleccionar la ruta donde instalar y en el copiado de los ficheros a dicha ruta.
Y nada más por hoy, en cuanto acabemos de probarla os indicaremos que cosas nos gustan y cuales no.

TizenCup o como ir desarrollando en Tizen OS tazita a tazita (Parte 2). PhoneGap o Cordova

Siguiendo con nuestra serie de post relacionados con la programación usando el SDK, hoy voy a centrarme en hablar de cómo podemos realizar un desarrollo multiplataforma en Tizen, y dejaré para más adelante los diferentes tipos de proyectos que vienen de serie con el entorno. Además, creo que este tema puede seros de más interés y a la vez es posible que lo reutilicéis si venís del mundo Android o iOS (por citar los más populares), y porque no decirlo, puede ser la excusa perfecta para conocer un poco más Tizen y darle una oportunidad.
Me explico, uno de los dolores de cabeza que tenemos los desarrolladores de aplicaciones para móviles, es que tenemos que lidiar con infinidad de lenguajes y entornos de programación, si queremos que nuestras aplicaciones tengan el mayor abanico de usuarios posibles. Ahora mismo, aparte de Tizen, personalmente conozco la programación en Bada usando C++, la programación en Android usando Java y la programación en iPhone con Object C, sin hablar de J2ME (en los viejos tiempos, je, je). Si quiero que una aplicación funcione para los tres entornos, no me queda más remedio que ponerme manos a la obra y darle a la tecla, si bien es cierto, que ambos lenguajes presentan similitudes en muchos aspectos (e incluso muchas clases de utilidad reciben nombres muy similares o casi idénticos) y algunas partes del código son fácilmente convertibles, pero como decía, el desarrollo de una nueva aplicación, se transforma en el desarrollo de n aplicaciones, siendo n el número de entornos en donde deseamos que funcione.
¿Hay solución a este problema? Pues afortunadamente sí que lo hay, por un lado el hecho de usar Tizen, ya nos asegura la compatibilidad al menos con Android y con Bada, y el hacer uso de HTML5 es ya una facilidad cara a portar nuestras aplicaciones a otro entorno, sin embargo, nos gustaría que hubiese un modo más, digamos, integrado de hacer esto, y es aquí donde entra lo que os voy a contar a continuación. Hace algún tiempo que le vengo siguiendo la pista a varias herramientas de programación móvil multiplataforma, y probando muchas de ellas y viendo sus pros y contras, debo decir que la que más me convence es OpenGap, aunque hay otras como Sencha que también son buenas opciones.
La ventaja que tenemos al usar OpenGap o Cordova, es que al estar basada en estándares web un mismo código funciona para todas las plataformas para las que está disponible (la lista es bastante amplia: Bada, Android, iOS, Blackberry, Tizen…), además dispone de un servicio de compilación en la nube, que nos permite crear los ejecutables para las distintas plataformas de un modo muy sencillo.
Veamos entonces como podemos usarla en el IDE de Tizen, suponiendo que éste ya lo tenemos instalado y funcionando en nuestra máquina, aunque si no lo tenéis aún, podéis ir a estos enlaces para obtener más información sobre los SDKs en sus versiones 1.0 Larkspur y 2.0 Alpha.
Paso 1. Obtener el software e instalarlo
Lo primero que tenemos que hacer es descargarla desde Apache (unos 40Mb) y descomprimir el zip. Este zip viene a su vez con otro montón de zips, cada uno asociado con las plataformas que soporta, en nuestro caso, nos interesa el fichero denominado “incubator-cordova-tizen.zip”. Daros cuenta, que también hay disponible documentación sobre la plataforma, pero ¡ojito! si nos vamos a la versión en español, está desactualizada y solo es válida para la versión 1.0.0, y la última versión disponible, a día de hoy, es la 2.1.0.
Entonces, descomprimimos el fichero “incubator-cordova-tizen.zip” y tendremos un montón más de ficheros en nuestra máquina.
Veamos qué hacemos con ellos.
Lo primero que os recomiendo es que instalar la plantilla de proyecto de Tizen Cordova, a vuestra instalación de Tizen, de este modo podemos crear los proyectos directamente desde el IDE de un modo muy facilón. Es decir, copiamos el contenido de la carpeta “/templates” (son dos carpetas con dos plantillas diferentes)  a la carpeta “/IDE/Templates/web” de Tizen (no tiene pérdida ya que está en el raíz de la ruta donde lo tengáis instalado).
Paso 2. Crear un nuevo proyecto
Para crear un proyecto en Cordova hay dos métodos:
  • Metodo 1. Importar el proyecto de ejemplo:
    • Lanzamos el IDE
    • Seleccionamos “File >> Import >> Tizen Web Project” y damos a “Next
  • Metodo 2. Usar la plantilla importada
    • Nos aseguramos de marcar “Select root directory” y “Copy projects into workspace”
    • Hacemos clic en “Browse “
    • Buscamos en la carpeta de Cordova Tizen y nos movemos a “samples“, y seleccionamos el proyecto básico “cordova-basic
    • Hacemos clic en “Finish
    • Tenemos un proyecto Cordova básico importado en nuestro entorno, que podemos ver en la vista del “Project Explorer
Este método es aún más fácil, aunque presupone haber copiado la carpeta de “templates” como os dije antes. Suponiendo que lo hemos hecho los pasos a seguir son:
    • Lanzamos el IDE
    • Seleccionamos  “File >> New >> Tizen Web Project
    • Seleccionamos los elementos “User Template” y “User defined”
    • Seleccionamos una de las plantillas de Tizen Cordova (por ejemplo “CordovaBasicTemplate”)
    • Completamos los datos básicos de nombre de proyecto y ubicación (“Project name” y “Location” respectivamente).
    • Hacemos clic en “Finish
    • Se ha creado un nuevo proyecto y aparece en la vista “Project Explorer”
Paso 3. Hola Mundo.
Si hemos seguido estos pasos tenemos un pequeño “Hola Mundo” ya preparado para su ejecución, para verlo en acción solo hay que:
  • Botón derecho sobre el proyecto en la vista  ”Project Explorer” y selecciona “Build Project”
  • Se genera un widget en el directorio raiz del proyecto (algo del estilo “cordova-basic.wgt“)
Ahora lo ponemos en marcha en el simulador, lo más rápido es hacer clic con el botón derecho sobre el nombre del proyecto en la vista del “Project Explorer” y seleccionar “Run As and Tizen Web Simulator Application” si lo que queremos es ejecutarlo sobre el simulador web.
En el caso de querer ejecutarlo sobre el emulador de dispositivos tenemos que asegurarnos que hay un dispositivo destino correctamente configurado y lanzado (recordar todo lo que os he contado sobre el Emulator Manager y las configuraciones). Suponiendo que tenemos un emulador en marcha, entonces hacemos clic con el botón derecho sobre el nombre del proyecto en la vista del “Project Explorer” y seleccionamos seguidamente ”Select Run As and Tizen Web Application”.
Fácil, ¿verdad? Ahora mismo tendremos una aplicación Cordova funcionando sobre Tizen que nos podemos llevar a cualquier otro entorno sin necesidad de tener que programar y saber n-lenguajes. Pero esto lo dejamos para otra entrega, ¿vale?

Por favor, en la próxima rotonda gire a la izquierda

Este mundo de Tizen no deja de dar giros de lo más insospechados, algo que sin lugar a dudas me alegra mucho y que los que me seguís sabéis lo que opino respecto a la aparición de nuevos sistemas y la democratización que ello supone para el usuario y los desarrolladores.
Y es que si hace unos días os contaba que no se sabe muy bien que pasará en un futuro cercano, debido al retraso de los primeros dispositivos que no verán la luz hasta principios de 2013, resulta que la Linux Foundation acaba de anunciar un nuevo grupo de trabajo, destinado al desarrollo de una plataforma integrada y que se convierta en el estándar de referencia para el desarrollo de sistemas y aplicaciones en la industria de la automoción. ¿Y sabes cual es el sistema operativo que han decidido utilizar para impulsar esta iniciativa? Exacto, la respuesta correcta es Tizen OS.
Y es que a través del Automotive Grade Linux Workgroup se está intentando dar continuidad a una idea que con MeeGo ya se planteó, con un éxito relativo a través del consorcio GENIVI. La pelea por el título no va a ser fácil, ya que Windows Embedded Automotive está más maduro y  Android también se ha sumado a esta lucha, aunque en palabras de Jim Zemlin, director ejecutivo de la Fundación Linux  “Este grupo de trabajo usará Tizen para crear un proyecto como Debian o Fedora para la industria automotriz”, una afirmación que a priori parece ser bastante seria.
No obstante, la apuesta Tizen ha conseguido el apoyo de grandes marcas automovilísticas como Land Rover, Jaguar, Toyota o Nissan, lo que le posicionan en una muy buena posición de salida.
Y es que en nuestro próximo viaje por carretera, es probable que una aplicación Tizen sea quien diga, por favor, próxima rotonda gire a la izquierda.

Rectificar es de sabios ¿o no?

Rápidamente para que nadie se me despiste, y es que si hace unos días estaba bastante mosqueado por que parecía que tanto Tizen como Bada no iban a tener continuidad (al menos este ultimo) en los planes de futuro de Samsung, resulta que llega la IFA de Berlin, y uno de sus vicepresidentes Kang-Hyun Kwon, anuncia que nuevos terminales llegaran con Bada a principios de 2013, junto con el Wave 4.
Podéis echar un vistazo a la nota publicada en SamMobile y sacar vuestras propias conclusiones, ¿habrá Bada 3.0? ¿sera un refrito con Tizen? ¿Sucederá lo como pasa con Tizen y Android, que llevara su propia implementación de Bada y ambos sistemas seguirán conviviendo en el mismo plano astral?
Lo cierto es que si están jugando al despiste, lo están consiguiendo y es que Samsung parece no tener clara su trayectoria a futuro, parece que sigue inmersa en el mundo del hardware y los móviles, sin darse cuenta que si no es capaz de crear alrededor suyo algo similar a lo que tiene Apple, en donde hardware, software y servicios se integran de un modo natural y por ello la gente compra, estarán haciendo un pan con unas tortas. ¿Tal vez ese sea el motivo de su continuidad a Bada? lo veremos en los próximos meses.
Seguiremos informando.

Mal pero que muy mal

Y es que no es para menos mi desilusión. Seguramente habréis notado que no he actualizado el blog en unas cuantas semanas, y cualquiera podría pensar que se ha debido a falta de ganas o a la época de vacaciones, sin embargo la verdadera razón ha sido ver que pasa finalmente con Tizen y la aparición de dispositivos que lo soportasen, y las noticias no han podido ser más desalentadoras.
Si recordáis, Samsung prometía un terminal con Tizen para el último trimestre de 2012, pues bien, de momento se retrasa a 2013 (ya será 2014 en el mejor de los casos) y se centra en Android y el futuro Windows Phone 8, en un intento de quitar mercado a Nokia, lo que deja a Bada muerto y a Tizen agonizando. Además algunas de las excusas dadas, como que el hardware cada vez es más barato y potente para correr Android me parece un poco insulsas (¿esta gente no conocía la Ley de Moore antes de sacar estas plataformas?). Habrá quien se alegre, por que de este modo el mercado está menos fragmentado, sin embargo, en esta fragmentación es donde están las oportunidades, por un lado para los desarrolladores y por otro lado para que la competencia entre sistemas ayude a bajar precios, pero bueno, es mi opinión personal.
Os dejo aqui el articulo publicado por SamMobile en donde se comenta esta noticia.
¿Y nosotros qué? bueno, mi idea es seguir haciendo pruebas y jugeteando con el SDK, e ire subiendo mis conclusiones para compartirlas con vosotros, y me seguiréis viendo por aquí, al menos hasta 2013, cuando veamos que sucede realmente con Tizen y si este pasa también a ser parte de los sistemas operativos vaporware, es decir, software que se queda en el limbo y que nunca acaba de tener presencia en el mercado. Aunque quien sabe, igual Samsung esta esperando a que Intel de salida a sus nuevos microprocesadores  con tecnología Merrifield de 22nm, cuyo rendimiento y consumo los hacen ideales para dispositivos móviles y que tienen previsto salir a principios de 2013, y que estaría en línea con la afirmación de un primer dispositivo con Tizen para esas fechas.
Pero en cualquier caso, Samsung, Intel y compañía, mal pero que muy mal.

TizenCup o como ir desarrollando en Tizen OS tazita a tazita (Parte 1)

Con el sugerente nombre de TizenCup comienzo una nueva serie de entradas, cuyo objetivo es el ir viendo cómo desarrollar para Tizen OS. Por tanto, hoy nos vamos a dejar de vídeos y comentarios y nos remangamos para comenzar a codificar. En esta primera entrada de TizenCup nos centramos en explicar brevemente cómo funciona el Tizen IDE y de los tipos de proyectos que hay disponibles y veremos un pequeño ejemplo para introducir las herramientas básicas de desarrollo, herramientas que en posteriores entradas iremos viendo más detenidamente.
Por tanto, lo primero que hacemos es abrir el entorno, que se va a convertir en nuestro fiel compañero de viaje. Tizen IDE está basado en Eclipse, y si estáis familiarizado con esta herramienta, no tendréis demasiados problemas para crear nuevos proyectos y ejecutarlos, ya que el funcionamiento es análogo al que se sigue cuando desarrollamos para otro lenguaje (y si hay alguien que no lo conoce, no preocuparse, que iré explicando que voy haciendo)
Lo dicho abrimos Tizen IDE nos aparece la pantalla de bienvenida…
TizenIDE Splash
.. y seguidamente le tenemos que decir donde queremos poner nuestro espacio de trabajo (el workspace en nomenclatura Eclipse) que es en donde iremos guardando todos los proyectos que vamos a ir creando, y que yo por defecto he llamado “workspaceTizen” pero poner el nombre que os dé la gana.
TizenIDE Wokspace Launcher
La apariencia cuando se abre el IDE es muy parecida a la que tiene una versión estándar de Eclipse y a simple vista no hay nada que resulte especialmente llamativo (tal vez la ayuda y la barra de título con la descripción de Tizen IDE).
Preferencias para Tizen IDE
Antes de continuar vamos a echar un vistazo a la siguiente opción de menú “Windows >> Preferences”:
TizenIDE Preferences
Esta opción nos lleva a las preferencias del IDE, aquí hay una entrada denominada “Tizen SDK” en donde se configura la ruta en donde está instalado el SDK así como las preferencias Web que queramos utilizar y que de momento vamos a dejar tal y como están.
Crear un nuevo proyecto
Para crear un nuevo proyecto lo haríamos desde la opción “File >> New >> Tizen Web Project”:
TizenIDE Nuevo Proyecto
Accediendo al asistente de creación de proyectos de Tizen:
TizenIDE Nuevo Proyecto 2
El asistente es muy simple y bastante auto explicativo. Los proyectos se crean haciendo uso de una de las plantillas que vienen instaladas, siendo las más interesantes para nosotros ahora mismo, las que se alojan en la opción “Template” y “Sample”. La “User Template” hace referencia a plantillas definidas por el usuario y de momento no nos interesa demasiado, es más, si pulsáis en “User Template” veréis que nos lleva a la plantilla “Basic” que hay en “Template”.
Las plantillas que podemos usar son las siguientes:
  • En Template: Se corresponde con los tipos de aplicaciones que se pueden realizar desde Tizen IDE. Hay cinco grupos de plantillas:
    • Basic: Es la plantilla básica, desde ella se crea un proyecto en blanco sin ningún elemento adicional.
    • Tizen Web UI Framework: La usaremos para crear aplicaciones basadas en formularios. Se divide a su vez en cuatro tipos:
      • Single-Page Application: Una aplicación que consta de una única página.
      • Multi-Page Application: Para aplicaciones que hacen uso de más de una página
      • Master-Detail Application: Lo usaremos para aplicaciones maestro-detalle
      • Navigation Application: Aplicaciones de navegación
    • jQuery Mobile: La usaremos para crear aplicaciones de una única página basadas en jQuery Mobile.
    • HTML5 Boilerplate: Nos permite crear aplicaciones basadas en HTML5, aquí se integra conHTML5 BoilerPlate que es una manera de ponernos a trabajar con HTML5 de un modo muy rápido y del que ya os hablaré largo y tendido.
    • Web Presentation : Para crear presentaciones web de un modo muy sencillo gracias a lasplantillas de  CoderDeck
  • En Sample: Contiene cuatro aplicaciones de ejemplo para mostrar las capacidades del entorno y que son:
    • Kitchen Sink: Es un popurrí de ejemplos de uso del API
    • Systeminfo: Aplicación que muestra información del sistema haciendo uso del elemento Systeminfo de Tizen OS.
    • Contact: La típica aplicación de contactos.
    • FileSystem: Igual que la plantilla “Contact” es el ejemplo estándar de acceso al sistema de ficheros.
Todos proyecto Tizen, cuando se genera y se lleva al terminal para su ejecución hay que verlo como una aplicación web en su conjunto, es decir, como un todo cohesionado de elementos HTML5, JavaScript y CSS que se instalan en el dispositivo y que funcionan como una aplicación completa, es decir, como un widget que no necesariamente tiene porque tener necesidad de acceder a recursos externos y que puede auto contener todo lo que necesita para su ejecución.
Configuraciones
Independientemente del tipo de proyecto que vayamos a utilizar,  una vez que lo tengamos montado tendremos que ponerlo en marcha sobre un emulador, y para ayudarnos en este proceso tenemos lo que se denominan como configuraciones. Las configuraciones se definen de manera independiente según el modo de ejecución en el que vayamos a probar la aplicación, de este modo, podemos tener configuraciones para el modo depuración y configuraciones para el modo de ejecución normal. La ejecución en modo depuración permite que podamos ejecutar el código paso a paso, poner puntos de ruptura, inspeccionar variables…, en definitiva todo lo que hacemos en un proceso de depuración típico y que no está disponible cuando ejecutamos la aplicación en el modo de ejecución normal.
El modo de definir una configuración es muy sencillo:
  • Configuración Modo Depuración: Dos formas:
    • Desde la opción “Run >> Run Configurations…”
    • Desplegando la opción desde el botón de ejecución
  • Configuración Modo Ejecución Normal: Dos formas:
    • Desde la opción “Run >> Debug Configurations…”
    • Desplegando la opción desde el botón de depuración
En ambos casos, se abre el cuadro de diálogo correspondiente al editor de configuraciones:
Editor de Configuraciones
Hay una diferencia en este cuadro de diálogo según si estamos o no creando una configuración de depuración y una normal. En el caso del modo depuración, solamente podremos crear configuraciones del tipo “Tizen Web Application” mientras que en la de ejecución normal también podremos crear configuraciones del tipo “Tizen Web Simulator”. La diferencia entre una y otra radica en que en la primera tendremos que hacer uso del Emulator Manager y crear una instancia del emulador para poder hacer las pruebas de la aplicación, estando ante un entorno más real (y a la vez más pesado en cuanto a recursos) en donde hacer nuestras pruebas y en la segunda todo se realiza desde un navegador que simula el comportamiento del terminal (el Web Simulator
Crear la configuración es muy fácil, nos ponemos sobre una de las dos opciones (“Tizen Web Application” o “Tizen Web Simulator”) y pulsamos al botón de nueva configuración, le ponemos un nombre y aceptamos, sin olvidar poner en “Project” el proyecto que deseamos ejecutar sobre la configuración.
Manos a la obra
Para ver todo esto en funcionamiento vamos a crear una aplicación de ejemplo, y para ello usaremos la plantilla de aplicación de contactos.
  • Paso 1: “File >> New >> Tizen Web Project
  • Paso 2: Seleccionamos “Sample” y el proyecto “Contact” y le ponemos el nombre “ContactTestProject”, y pulsamos sobre el botón “Finish”
Contact Web Project
Al finalizar la ejecución del asistente, se nos crea toda la estructura de directorios y ficheros del proyecto, y que en esta entrada no voy a entretenerme en explicar, lo iremos viendo según vayamos creando proyectos en siguientes post.
  • Paso 3: Si no hemos creado una configuración antes, ahora es el momento de hacerlo tal y como explicamos anteriormente. Para que veamos las diferencias usamos el modo de ejecución normal y creamos dos configuraciones para “Tizen Web Application” y “Tizen Web Simulator” a las cuales ponemos los nombres “Tizen Web Application Configuration” y “Tizen Web Simulator Configuration” respectivamente.
  • Paso 4: Ejecutamos la aplicación. Y como hemos definido dos configuraciones para la ejecución vamos a ver qué sucede en cada una de ellas
Ejecución como “Tizen Web Simulator”
Este tipo de ejecución yo lo llamaría ligera, ya que la forma en la cual vamos a ver en funcionamiento la aplicación no requiere más que de un navegador para funcionar. En este navegador se realiza la ejecución de la aplicación como si de una página web estándar se tratase (al fin y al cabo estamos trabajando con componentes web ¿no?), la pantalla se divide en dos zonas, la de la izquierda en donde tenemos acceso a las capacidades del teléfono (orientación de la pantalla, acelerómetro, geolocalización, duración de la batería, mensajería, llamadas…) y la de la derecha en donde tenemos una simulación de la aplicación sobre el terminal.
Tizen Web Simulator
Según cambiamos los parámetros de ejecución en la zona de la izquierda, podemos comprobar cómo se comporta la aplicación al momento en la zona de la derecha.
Ejecución como “Tizen Web Application”
Hay una ventana de la que no hemos hablado hasta ahora, pero que aparece al arrancar el entorno de trabajo y que se denomina “Connection Explorer”. Esta utilidad es el puente de unión con el Emulator Manager y permite arrancar cualquiera de los terminales que hayamos definido allí.
Connection Explorer Tizen OS
Si pulsáis en el botón del Emulator Manager éste nos aparecerá en pantalla. En nuestro caso tenemos definido un emulador con una resolución de 480 x 800 y 512 Mb de RAM, pero podéis crear vosotros otro con las características que necesitéis.
Emulator Manager Tizen OS
Ahora lo arrancamos seleccionándolo y pulsando sobre el botón “Launch” y veremos un cambio importante en el “Connection Explorer” que ahora tiene este aspecto:
Connection Explorer en ejecucion
Es decir, estamos conectados al terminal definido y estamos viendo toda su estructura de carpetas.
Daros cuenta que estos pasos son previos y necesarios para poder realizar las pruebas en este modo de trabajo, ya que si no lo hacemos así cuando intentemos arrancar la aplicación nos dirá que no tenemos entorno para hacerlo. Si todo fue bien ahora tendremos la aplicación en marcha:
Emulator Tizen OS en ejecucion con aplicación Contact
Y nada más…
… creo que por hoy ya hemos hecho mucho trabajo y aprendido un montón de cosas, así que os dejo para que continuéis haciendo vuestras pruebas. En próximas entradas veremos cómo trabajar con el resto de proyectos, analizaremos las propiedades que se definen en ellos, y la estructura de carpetas y ficheros que tenemos que conocer para crear nuestras aplicaciones y volveremos sobre cada una de las herramientas que hemos ido viendo aquí para darles una vuelta de tuerca y conocerlas a fondo.
Nos vemos!

Análisis del Tizen SDK 1.0 Larkspur

Después de unos días de examen de la versión 1.0 de Tizen y que fue liberada el pasado 30 de Abril de 2012, cumpliendo con el calendario de tenerla disponible antes del segundo semestre del año, vamos a ver que nos trae de diferente respecto a la beta con la que hemos estado trabajando hasta ahora y de la que hablamos hace unas cuantas semanas en esta entrada.
A priori el proceso de instalación es igual que el proceso que vimos en su momento para la versión beta, partimos de un fichero que descargamos desde la web de Tizen.org y lo ejecutamos en su versión .bin o .exe, si trabajamos con Linux o Windows respectivamente. Una vez puesto en marcha el programa, lo que hace es conectarse con los servidores de Tizen para proceder a descargar el resto del software y comenzar el proceso de instalación, el cual no tiene ninguna variación con respecto a la beta, siendo el único cambio apreciable el que muestra la versión de los dispositivos que se van a instalar, que pasan de la versión 0.20.0 a la 1.0.0.
Una vez el programa se instala, tenemos una carpeta con los mismos elementos que en la beta, es decir, seguimos disponiendo del “Emulator Manager”, el “Install Manager” y el “Tizen IDE”. El “Install Manager” y el “Tizen IDE” se comportan exactamente igual que en la versión beta, siendo el “Emulator Manager” el que presenta un lavado de cara. Fijaros en las imágenes siguientes del antes y el después:
Emulator Manager antes y despues
En cuanto a funcionalidad añadida del “Emulator Manager”, no hemos encontrado nada que no estuviera en la beta, aunque ahora mismo hay que decir que el nuevo “Emulator Manager” gana mucho en cuanto a vistosidad con respecto al anterior y desde mi punto de vista resulta mucho más intuitivo su uso. No obstante, no añade nuevas características, por lo que os remito a esta entrada en donde lo analizamos a fondo, si es cierto que cambia el nombre de alguno de los botones (por ejemplo “Start” ahora se llama “Launch”) o las opciones que estaban a la derecha ahora aparecen en la parte superior de la ventana, pero por lo demás el funcionamiento es análogo y el objetivo que persigue es exactamente el mismo, crear un dispositivo que nos sirva para hacer correr nuestras aplicaciones.
Si creamos un dispositivo y pulsamos sobre “Launch”, forzaremos la ejecución del dispositivo creado, si recordáis una de mis quejas estaban en que el proceso de carga de este emulador se llevaba mucho tiempo y esperaba que la versión definitiva lo corrigiera y si bien es cierto que se han mejorado algo los tiempos, siguen siendo demasiado elevados si los comparas con el que lleva  arrancar Android, Bada, iOS o incluso Windows Phone. Si es cierto que una vez que el emulador está en marcha, todo se ejecuta con mucha fluidez y funciona muy bien, sin parpadeos en pantalla y respondiendo a las órdenes que le damos de una manera rápida. Supongo que en esto habrá tenido mucho que ver el uso del Intel Hardware Accelerated Execution Manager (HAXM), una herramienta que hace uso de la tecnología de virtualización de Intel (VT) pero que conviene no olvidar no se puede usar en sistemas que no dispongan de un procesador Intel (ojo a esto) o en ordenadores con procesador Intel que no soporten VT.
Una vez que el terminal se encuentra en ejecución, tenemos que proceder a configurarlo con las características típicas de zona horaria, formatos de fechas, idioma y demás, que no presenta variación con la beta. Si vemos que en la beta el emulador arrancado presentaba una imagen como fondo de pantalla que en la versión 1.0 no está, siendo en este caso el fondo de color azul. Los iconos no presentan demasiados cambios a lo visto hasta ahora, aunque considero que sería bueno darles una vuelta porque están poco trabajados y resultan muy poco vistosos.
El menú contextual del emulador presenta dos cambios: por un lado los iconos son diferentes, y se añade ahora una nueva utilidad llamada “Shell”. Esta opción nos abre un terminal en donde se arranca el programa SDB o Smart Development Bridge que sirve para enviar comandos de manera directa al emulador, por ejemplo (aunque ya hablaré en otra entrada de esta utilidad) si queremos copiar un fichero en el terminal tenemos que enviar un push al terminal o un pull si lo que queremos es coger un fichero del mismo.
Menu contextual Emulator Manager Antes y Despues
Hay algunos problemas que desde Tizen.org nos indican que esta versión tiene y que he podido comprobar en primera mano:
  • Internet no funciona si tenemos conectado el PC con proxy automático y configurado a través de un fichero .pac.
  • No se puede usar evasgl, webgl o OpenGL ES sobre plataformas Windows (increíble pero cierto) y hay problemas de OpenGL en Ubuntu 10.10 y tarjetas Nvidia, por lo que recomiendan que se actualice a la versión 11.04.
  • Desde el emulador no se pueden ver algunos videos que hay en YouTube o en otras páginas web
  • En ocasiones comentan que el emulador falla al arrancar y se queda mostrando una pantalla en negro. Esto no he conseguido reproducirlo, pero lo que si he visto es que los settings tienes que meterlo dos veces, algo que no es muy comprensible.
  • También hay que prestar atención al tamaño del fichero de log del emulador, ya que puede llegar a crecer de manera desproporcional.
  • Otra cosa que si he verificado que pasa es si desconectamos la salida de audio mientras el emulador está en ejecución, se bloquea el sistema de audio, lo que no deja de ser curioso al menos.
  • A nivel del entorno de ejecución el asistente para jQuery no funciona, una lástima.
Y poco más, estamos ante un sistema operativo que tiene que depurar algunas cosas, mejorar otras pero que en definitiva tiene una filosofía muy sólida detrás. No obstante, después de haber visto el SDK 1.0 definitivo, y probarlo, el sabor es un poco agridulce y mi ilusión inicial ha quedado un poco diluida aunque tampoco seríamos justos si echaramos por tierra el trabajo realizado.  Creo que el camino que tiene aun que recorrer Tizen OS es largo y si la respuesta de los principales promotores del proyecto se demora demasiado, podríamos tener una muerte más que prematura como ya sucedió con Meego. Esperemos que no  ;-) porque la plataforma promete mucho, sería un buen empujón que antes de acabar el año viéramos en el mercado teléfonos con Tizen instalado y funcionando y una actualización del SDK a una versión que corrija los errores que hay detectados.
Nos vemos en la próxima.

Videos de la Tizen Developer Conference 2012

¡Buenos días! llegamos al ecuador de la semana y he actualizado la portada del blog con algunos videos que he estado repasando de la Tizen Developer Conference 2012 y que me han parecido lo suficientemente buenos para compartir con vosotros.
Los videos en cuestión son los siguientes:
Nos vemos pronto!

Receta para coctel de Frutas de éxito: Tizen OS, Android, OpenMobile y la ACL.

Sé que todavía tengo pendiente el análisis del Tizen SDK 1.0, pero no he acabado de hacer todavía mis pruebas, pero puedo adelantaros que pinta muy bien. Mientras tanto, y dado que recientemente han aparecido unos videos muy interesantes, en donde vemos en marcha a Tizen sobre un Samsung Galaxy S2 y lo que probablemente sea más importante, la ejecución de aplicaciones Android sobre el propio TIzen OS, voy a comentar un poco este tema que creo es clave cara al futuro éxito de la plataforma (los videos están colgados directamente en la home).
Y es que nadie negará, que una de las principales barreras a las que se enfrenta una nueva tecnología móvil que quiera llegar a imponerse a las actuales, son desde mi punto de vista dos: la falta de desarrolladores para la nueva plataforma y la falta de aplicaciones para los usuarios que la utilizan. Indudablemente la segunda es una consecuencia directa de la primera, y es más es algo que las compañías de un modo u otro intentan paliar, atrayendo a los desarrolladores para así y garantizar un buen número de aplicaciones. De hecho, por poner un ejemplo que me toca de cerca, si miramos que está pasando por Bada, parece que Samsung ahora mismo toda su política de aplicaciones se basa en el patrocinio de las mismas, y no es raro encontrar buenos programas gratis en la tienda de Samsung que siguen esta política, en un intento, desesperado dirán algunos de evitar perder usuarios a favor de Android.
Como suele decirse, cuando una flecha acierta en el blanco es consecuencia de haber antes errado cien veces, y parece que con Tizen quieren evitar que suceda lo mismo que sucedió con Bada. Es por este motivo que Tizen OS incluye la denominada ACL o Application Compability Layer de OpenMobile, pero veamos qué es esto.
Por definirlo  sin muchos tecnicismos pero que creo que resulta claro, la ACL actúa como un intermediario, es capaz de entender el código escrito para una plataforma y ejecutarlo en otra, o dicho de otro modo, una aplicación Android se ejecutaría sin problemas sobre Tizen OS, gracias a que el ACL sabe como traducir el lenguaje que habla una en el lenguaje que habla la otra. Es más, lo que hace tan especial a la ACL, es que hoy por hoy, estamos ante el único producto que es capaz de tener una compatibilidad 100% con Android.
Lo más importante en un software que es capaz de realizar esta operación, es analizar el rendimiento que se obtiene cuando se produce la ejecución de la aplicación, ya que de poco o nada serviría que la aplicación Android funcionase sobre Tizen OS, si la experiencia de usuario al utilizarla fuese mala, y se penalizase el rendimiento de la misma, algo que la ACL nos garantiza. Seguramente muchos pensaréis, que la ACL realiza algún tipo de emulación o virtualización (al estilo de VirtualBox o VMWare), sin embargo esto no es así, sino que lo que se hace es integrar completamente el entorno de ejecución de Android (lo que se conoce generalmente como el Runtime) dentro de Tizen OS de manera nativa, como si fuera parte del propio sistema operativo, pero no solo se conforma con esto, Dalvik, la máquina virtual de Android vive dentro de Tizen OS.
Y esto significa que:
  • no hay que realizar cambios entre sistemas operativos (dejar uno para pasar a otro u arrancarlo dentro del mismo), sino que la aplicación Android aparece como si de una aplicación Tizen se tratara y se ejecutaría sin mayores problemas.
  • al estar integrado de manera nativa, se garantiza que no habrá problemas a nivel de compatibilidad multimedia ni problemas de rendimiento en su ejecución.
  • del mismo modo, las aplicaciones se ejecutan en su propia sandbox, es decir, su espacio de ejecución está controlado en todo momento y no pueden dañar al equipo, además se eliminan la necesidad de establecer controles de seguridad innecesarios como sucede en los sistemas de virtualización o emulación.
  • otro aspecto positivo lo tenemos en la integración completa con el gestor de tareas, una aplicación Android y una Tizen se ven igual en él y por tanto son independientes para el usuario cuando interactúa con el gestor.
  • además, también está disponible la comunicación interprocesos, es decir, una aplicación Tizen puede comunicarse con otra aplicación Android o viceversa, tal y como sucede ahora mismo en Android, en donde una aplicación puede hacer uso de servicios que otra haya expuesto.
¿No hay entonces limitaciones en la ejecución de las aplicaciones Android? Eso es, al disponer del entorno de ejecución y de la máquina virtual de Android, cualquier aplicación se ejecuta sin problemas y lo que es mejor para los sufridos desarrolladores, que no tenemos que modificar, recompilar o empaquetar de nuevo nuestras aplicaciones, el código desarrollado para Android  funciona en Tizen sin más.
¿Estamos ante un sueño hecho realidad? ¿Tenemos una plataforma móvil definitiva? El tiempo lo dirá, desde aquí seguiremos informando, aunque no dejaré de preguntarme que hubiese pasado si en Bada existiera esa posibilidad.
En cualquier caso lo dicho, coctel de frutas de éxito, no olvidar servir frio.
PD.
Para acabar, os dejo el enlace al documento en donde OpenMobile explica las características de la ACL para Tizen OS y su integración con Android.

¿Se te ocurre algo que Tizen OS deba tener? Participa en el concurso de Intel

Y es qué hace unos días en la web de Tizen, se publicó un pequeño concurso en donde todo aquel que quiera aportar su granito de arena en la mejora de Tizen OS puede hacerlo. La mecánica del concurso es muy sencilla, y consiste en enviar un comentario a los miembros de Tizen.org acerca de posibles mejoras que puede tener el sistema, problemas que se han encontrado durante el uso del SDK o cualquier otro aspecto que consideremos pueda ser de relevancia para ser evaluado por el equipo de Tizen OS, siempre y cuando se cumplan dos pequeños requisitos:
  • Los comentarios no pueden ser superiores a 100 palabras
  • Deben de pertenecer a una de las dos categorías  siguientes: un testimonio sobre tu experiencia en el desarrollo de aplicaciones o una recomendación / mejora para incluir en futuras versiones.
Para dejar tu comentario solo tienes que hacer clic aqui, hay varios premios que van desde una tarjeta regalo de 50 dólares hasta un flamante PC Intel Core i7.
¿A qué esperas para participar?

Ya llegó Tizen OS 1.0

Buenos días, ¿qué tal el puente? Hoy tenemos noticias frescas y es que por fin se libera la versión 1.0 de Tizen. El nombre que se ha dado a esta primera versión es Larkspur y promete corregir muchas de las deficiencias que la versión beta tenía (entre ellas recordaréis que hablé de su la enorme lentitud con la que se hacia todo).
De momento no me he decargado el nuevo SDK (aunque en breve os haré un análisis a ver si cumple con lo prometido), pero desde Tizen.org anuncian que los problemas de rendimiento y velocidad se han corregido y que las principales novedades se agrupan en torno a:
  • Soporte para las características adicionales de la especificación W3C/HTML5
  • Soporte de POI (Punto de Interés) y búsqueda de ruta en ubicaciones
  • Añadidas Direct key features para Wi-Fi
  • Mejora en las herramientas de depuración y en las plantillas
  • Mejora en el rendimiento OpenGL
Tenéis más información sobre todas las mejoras aquí.
Seguiremos informando.

Arquitectura de Tizen OS

Antes de comenzar la Semana Santa e irnos de vacaciones vamos dejar una nueva entrada lista, así no hay excusa y nadie podrá decir que no ha tenido tiempo de leerla, no obstante seré breve e iré al grano.
Hoy vamos a hablar un poco de arquitectura, pero que nadie se asuste, no vamos a dedicarnos a explicar las líneas maestras del románico o del gótico (lo sé, ha sido un chiste malo) sino veremos que hay debajo de la piel de Tizen y que tenemos a nuestra disposición para desarrollar.
Bromas aparte, conocer la arquitectura de un sistema, siempre es un paso básico para hacer uso de él, y si queremos ser capaces de desarrollar cualquier tipo de aplicación que tengamos en mente, no nos va a quedar más remedio que familiarizarnos, no sólo con sus posibilidades, sino también con sus limitaciones, a fin de sacar el máximo provecho en nuestros proyectos.
Dado que la arquitectura de Tizen está compuesta de varias capas, vamos a hacer una visión general de cada una de ellas, y a medida que vayamos adentrándonos en la programación de la plataforma, iremos volviendo sobre estas ideas a fin de complementar todo nuestro conocimiento.
Una de las características básicas que podréis leer por todos lados acerca de Tizen, es el ser una plataforma basada en estándares web y por tanto soportada por múltiples categorías de dispositivos.  Para conseguir esto, la arquitectura se ha dividido en tres capas, tal y como podemos ver en la siguiente imagen:
Veamos en qué consiste cada una de estas capas:
Application Layer:
Se corresponde con aplicaciones Web que desarrollemos y que a priori tienen una capacidad exactamente igual a aplicaciones de modo nativo. Y  ¿qué significa esto?, significa que en Tizen podemos desarrollar siguiendo un estándar web (HTML5, JavaScript y CSS) y de este modo aprovechar desarrollos realizados con estos estándares para que puedan portarse a Tizen, y que estos desarrollos tendrán un rendimiento óptimo como si hubiesen sido desarrollados de manera nativa, por ejemplo haciendo uso de C++ y librerías asociadas.
Core Layer:
A su vez, se divide en el Tizen API y en el Tizen Core Services.
  • Tizen API: Es el API que usaremos para desarrollar, lo que denominaremos a partir de ahora, como una Aplicación Web Tizen. Se basa en una colección de APIs de la W3C (como HTML5), de Khronos (WebGL) y otros APIs por definir y que estarán asociados a los dispositivos que soporten Tizen (aquí una aclaración: dado que de momento todo está en fase beta, no he podido indagar mucho más por aquí, en cuanto haya más en donde hincar el diente, os lo haré saber).
  • Tizen CoreService:Como su nombre indica, son los servicios principales que están disponibles para el desarrollo de las  aplicaciones web y que por tanto dan soporte al Tizen API.
    • Application Framework: Gestiona todo lo que tiene que ver con la ejecución de la aplicación (como puede ser su puesta en ejecución) y con los eventos que ésta recibe (por ejemplo, baja memoria o batería, cambios en la orientación de la pantalla, notificaciones de tipo push, etc.)
    • Base: Son las librerías esenciales del sistema Linux que proporcionan acceso a características claves como es el soporte de base de datos, la internacionalización, parseo XML, etc. No confundir con las librerías que forman parte del núcleo.
    • Connectivity: Todo lo que tiene que ver con red y con la conectividad se engloba dentro de este servicio (3G, Wi-Fi, Bluetooh, http, y cómo no, el tan de moda NFC o Near Field Communication).
    • Graphics and UI: Es el sistema gráfico y de interface de usuario, se basa en el uso de EFL (Enlightenment Foundation Libraries) propiedad de Samsung, y en el sistema de gestión de ventanas basado en X11 y en OpenGL ES. Aunque el corazón del sistema gráfico es EFL, y es el que proporciona acceso al lienzo de dibujo y los elementos para la creación de widgets.
    • Location: Proporciona los servicios de localización (LBS o Location Based Services), como es información sobre la posición actual, información satelital, estado del GPS, etc. Se basa en el uso de GeoClue (y del que hablaré más adelante).
    • Messaging: Soporte para SMS, MMS, Email e IM.
    • Multimedia: Basado en GStreamer, dispone de soporte para video, audio, imágenes y VoIP, así como administración de metadatos de los ficheros.
    • PIM (Personal Information Management): Calendario, contactos, tareas, y funciones similares son las que se encuentran agrupadas aquí.
    • Security: Lleva todo lo relacionado con los temas de seguridad: listas de control de acceso, gestión de certificados y la distribución segura de aplicaciones.
    • System: Controla el acceso a sensores, pantalla, vibración, gestión de energía, actualizaciones del sistema, etc.
    • Telephony: Gestiona todo lo relativo al modem.
    • Web: Implementa de manera completa, todo el Web API de Tizen, asi como distintos entornos de ejecución web para las aplicaciones. Incluye el WebKit, que es un motor diseñado para que los navegadores puedan mostrar páginas web.
Kernel Layer
Es la capa del núcleo de Tizen propiamente dicha, y en ella se incluye el núcleo de Linux y los drivers de dispositivos. Para nosotros debe de ser transparente y en caso de poder acceder a ella lo haremos a través de los servicios que se proporcionen en la Core Layer.
Y lo dejamos aquí. En la próxima entrada veremos como crear un nuevo proyecto y ponerlo en marcha, pero eso ya será después de las fiestas.
Disfrutar de estos días!

Emulator Manager

¿Qué tal como estáis hoy? Siguiendo con la línea de post de introducción sobre el funcionamiento de Tizen, hoy quiero explicaros una herramienta que va a resultar básica en nuestro trabajo diario y que recibe el nombre de “Emulator Manager”.
Si habéis trabajado con Android y conocéis el “Android SDK and AVD Manager” podréis haceros una idea de lo que voy a contaros, ya que nos encontramos ante una herramienta similar. Me explico para quien no me siga, en el kit de desarrollo de Android, existe una herramienta que nos permite realizar la gestión de los dispositivos destino contra los cuales queremos ejecutar nuestra aplicación, de este modo podemos configurar una máquina virtual con las capacidades que queramos: por ejemplo, tipo de pantalla y resolución, si posee o no GPS, cantidad de memoria, tipos de dispositivos de almacenamiento externo… y un largo etcétera, luego desde el entorno de desarrollo lo que hacemos es indicar qué máquina virtual es la que queremos usar para hacer la prueba de nuestra aplicación.
Solo por ilustraros el “Android SDK and AVD Manager” tiene este aspecto:
Y como podéis comprobar hay creado un dispositivo de nombre “Android” en su versión 2.1 con las capacidades siguientes:
La idea del “Emulator Manager” es exactamente la misma, es una utilidad que nos permite gestionar dispositivos virtuales sobre los que luego ejecutaremos nuestra aplicación. Más adelante, cuando entremos en el IDE, ya os explicaré como se enlaza con él, de momento lo que podéis hacer es iros a la carpeta en donde tenéis instalado el Tizen SDK y ejecutar el “Emulator Manager”. Debe de verse una imagen como la que os muestro a continuación:
En esta imagen vemos que, por defecto, se encuentra creado un dispositivo con el nombre “default” para la versión 1.0 de la plataforma Tizen,  y que además tiene como características básicas 512 Mb de RAM y una resolución de 480×800.  Si queremos ver más información acerca de este dispositivo, lo seleccionamos y pulsamos sobre el botón “Details” y en la pantalla que aparece tendremos todas las características definidas:
Fijaros en las dos rutas que aparecen en la descripción de la máquina, la denominada “Base Image Path” es en donde se encuentra los datos de configuración básicos para crear la “Image Path” de nuestro dispositivo. Si os vais al directorio “Image Path” os encontrareis con un el fichero de configuración (fichero de texto y de nombre “config”) y un directorio de log en donde se guardan las trazas de la ejecución del dispositivo desde su último arranque.
El significado del resto de botones del “Emulator Manager” es el siguiente:
  • “Create”:Permite definir un nuevo dispositivo y establecer las características que éste tendrá.  Estas características se dividen en cuatro secciones:
    • “Display”: Se refiere al tipo de pantalla usada y que viene marcada por la resolución. Aquí hay varias posibilidades:
      • HVGA (320 x 480)
      • WVGA (480 x 800)
      • WSVGA (600 x 1024)
      • HD (720 x 1280)
No voy a entrar en detalles sobre cada uno de estos tipos de resoluciones, ya que nos desvía del tema de esta entrada, personalmente me gusta mucho este gráfico (sacado de la Wikipedia) en donde ponen en relieve cada formato en relación al tiempo, más adelante cuando comencemos a desarrollar volveremos sobre este tema para ver que opciones tenemos para hacer interfaces de usuario independientes de la plataforma, aunque teniendo en cuenta el soporte de Tizen de los estándares web os podéis imaginar por dónde van los tiros:
  • “SD Card”: Sirve para definir una unidad de almacenamiento de tipo SD, los tamaños admitidos son 256, 512, 1024 y 1536. Si ya tenemos creada una imagen también podemos seleccionarla o bien dejarlo a “None” si no queremos incluir ninguna.
  • “Base Image”: Se refiere a la configuración de partida que usaremos para crear nuestra nueva máquina. De momento solamente tenemos disponible la imagen base para x86, que se encuentra ubicada en “\Tizen SDK\Emulator\x86” y que tiene el nombre “emulimg-1.0.x86”.
  • “RAM”: Es la cantidad de RAM disponible, puede tener valores 512, 768 y 1024.
  • “Modify”: Es útil si queremos hacer algún cambio sobre un dispositivo ya definido.
  • “Delete”: Borra el dispositivo seleccionado.
  • “Reset”: Realiza un reinicio del dispositivo.
Mención especial merece el botón “Start”, que pone en marcha el dispositivo que hayamos seleccionado. Como supongo que tendréis ganas de ver qué aspecto tiene Tizen vamos a pulsarlo y veamos que pasa…
Arrancando Tizen
… ¡vaya! Se nos abre en pantalla la representación de un teléfono móvil, con un pequeño cursor parpadeando en la pantalla en negro, después de un rato (aquí esperamos, que cuando la versión del SDK sea definitiva, se hayan puesto las pilas porque se lleva su tiempo y es además bastante chupón de memoria, si no tenéis un equipo medianamente decente va todo a pedales) aparece la animación con el logo de Tizen y podemos pasar a configurar las características básicas del terminal, como es el idioma por defecto, zona horaria y demás cositas necesarias para ajustarlo al gusto del usuario, hecho lo cual nos encontramos con la pantalla principal.
La pantalla principal muestra los iconos de las aplicaciones básicas instaladas por defecto (bloc de notas, calculadora, galería de imágenes y cosas por el estilo, os recomiendo que dediquéis un ratito y las echéis un vistazo). Los botones situados a la derecha sirven para subir y bajar el volumen (los situados en la parte superior del lateral) y para encender / apagar el terminal (situado en la parte inferior del lateral).  No obstante, este último al pulsarlo, aparte de esta opción permite también ponerlo en modo silencio o acceder a las opciones de accesibilidad.
El botón que tenemos en el centro del dispositivo, nos permite volver a la pantalla principal o bien acceder al administrador / conmutador de tareas si lo mantenemos pulsado unos segundos. Con esta utilidad podemos saber que aplicaciones están en ejecución, cuanta CPU están consumiendo y si queremos o no cerrarlas. Cómo aspecto interesante el administrador de tareas de Tizen, lleva un histórico de las últimas aplicaciones ejecutadas pudiendo volver a ellas o borrarlas definitivamente si así lo deseamos.
El Menu Contextual del Dispositivo
Si hacemos clic con el botón derecho sobre el dispositivo arrancado, obtendremos acceso a un pequeño menú contextual que presenta algunas opciones importantes como podéis ver en la figura siguiente:
El significado de cada una de estas opciones es el siguiente:
  • “emulator-26100”: Es el tipo de emulador y al pulsar nos lleva a las características que hemos definido anteriormente.
  •  “Always on Top”: El dispositivo siempre aparece en primer plano y no queda “cubierto” por otra ventana.
  • “Rotate”: Lo usaremos para girar el dispositivo en la dirección deseada.
  • “Scale”: Cambia el tamaño del dispositivo en pantalla en proporción a la escala elegida, por defecto está a escala 1/2x. A mayor escala mayor aparece en pantalla.
  • “Advanced”:
    • “Screen Shot”: Para capturar una instantánea de la pantalla.
    • “USB Keyboard”: Dependiendo de si está “on” u “off” cuando estemos trabajando sobre un cuadro de texto, en pantalla aparecerá el teclado virtual o no. Si está en “on” se supone que tenemos conectado un teclado USB y por tanto no es necesario usar el teclado virtual (y en este caso usaremos el teclado de nuestro ordenador para escribir). Una imagen vale más que mil palabras:
En la imagen de la izquierda el teclado USB está en “off” y por tanto nos aparece el teclado virtual para que podamos introducir nuestras notas. Cómo se ve por la imagen de la derecha, si está en “on” no tenemos el teclado virtual.
  • “About”: Nos muestra información de la versión del emulador y de la licencia (en este caso licencia del tipo GNU).
Y por hoy nada más, no vamos a saturarnos de conocimientos je, je. Echarle un vistazo a lo que os he contado y si puedo ayudaros en algo, por aquí estamos.  En los próximos post vamos a centrarnos en la arquitectura de Tizen y ya estaremos en disposición de meter mano al entorno de desarrollo.
Hasta la próxima!

Proceso de Instalación del SDK de Tizen

Bueno, pues vamos a ver qué pinta tiene esto. Ya os comentaba que por el momento, todavía no existe un SDK de desarrollo estable de Tizen, aunque se prevé tener la primera versión del mismo en el segundo semestre de 2012. De momento tendremos que conformarnos con la beta existente, aunque me imagino que el proceso de instalación una vez se libere la versión definitiva, no presentará demasiadas diferencias respecto a lo que os cuento aquí. Una vez salga la versión definitiva, contaremos que cambio presenta con respecto a la beta actualmente disponible.
Teniendo en cuenta esto, nos vamos a la página de desarrollo de Tizen (http://developer.tizen.org) y seleccionamos el enlace que pone “Download the Tizen SDK”, desde aquí accederemos a una nueva pantalla que nos permite descargarnos las versiones tanto para Linux (en su distro Ubuntu) como para Windows (en su versión 32 bits).
El que tengamos posible instalar sobre Linux es una gran alegría, que para los que venimos del mundo de Bada, hace tiempo llevamos demandando a Samsung. No obstante, el soporte sobre Ubuntu ha sido primero que sobre Windows, apareciendo la versión Windows al finalizar el periodo Alfa del programa, dicho lo cual, continuamos.
Antes de comenzar el proceso de instalación propiamente dicho, es muy importante que repaséis la lista de requerimientos necesarias para el SDK se pueda instalar y que pasan por tener una máquina con 2GB de RAM, un micro tipo dual-core y espacio suficiente en disco, vamos nada del otro mundo. Un aspecto importante está que si tenéis una máquina de 64 bits, la versión de Java que tenéis que tener instalada para que el instalador funcione tiene que ser la de 32 bits, de lo contrario obtendréis un error (lo he probado en dos máquinas que tengo de 64 bits y el resultado ha sido el mismo), aunque no se avisa que se ha producido un error, simplemente la aplicación de instalación no arranca y se para sin más información (un tirón de orejas aquí). Para saber lo que está pasando, tendréis que ir a la ruta en disco en donde se ha descomprimido el fichero descargado como os cuento ahorita mismo.
Instalación en Windows:
El proceso es muy simple, descargamos el fichero “tizen_sdk.exe” y lo ejecutamos. Como decía anteriormente, este fichero es un fichero comprimido, al descomprimirse obtenemos un fichero de nombre  “InstManager.exe” que es el que realmente se conecta a Internet y realiza la descarga de todo el software que conforma el SDK de Tizen.
El fichero “InstManager.exe” podéis encontrarlo dentro de la carpeta “AppData >> Local >> Temp >> tizensdk”, y que forma parte del conjunto de carpetas del usuario, por lo que tendréis que ir a la carpeta del usuario con el que estéis trabajando y buscarlo. En esta localización es donde aparece un fichero de .log que contiene información en caso de que algo vaya mal (por ejemplo, que la versión del JDK de Java no sea de 32 bits sino de 64 bits), si esto sucede podéis ver que error se ha producido e intentar buscar una solución. Afortunadamente, salvo el problema de la versión del JDK, el entorno se instaló sin demasiados problemas.
Instalación en Ubuntu:
En Ubuntu, la instalación tampoco es muy complicada. Hay que instalar un conjunto de librerias necesarias para que el programa funcione, pero nada que no se pueda arreglar con una linea al comando “apt-get”:
$ sudo apt-get install qemu-kvm binutils-multiarch debhelper fakeroot realpath libsdl-gfx1.2-4 gettext procps xsltproc libdbus-1-3 liblua5.1-0 libexif12 libcurl3
Hecho lo cual procederemos a ejecutar el fichero “tizen_sdk.bin” (sin olvidar previamente asignar al fichero permisos de ejecución).
Suponiendo que todo ha ido bien y que la versión del JDK es correcta, “InstManager.exe” (en Windows) o “tizen_sdk.bin” (en Ubuntu) se ejecutará mostrando el “Install Manager” de Tizen, como muestra la siguiente figura:
La instalación una vez tenemos la pantalla anterior es también muy sencilla, y básicamente consiste en aceptar los acuerdos de la licencia de Tizen, indicar que elementos queremos instalar y la ubicación en donde queremos hacerlo, para una vez contestadas estas cuestiones, ponerse a descargar todo el software y proceder a su instalación.
Las imágenes siguientes muestran esto que os comento:
  • Paso 1: Aceptar la licencia:
  • Paso 2: Seleccionar componentes a instalar:
  • Paso 3: Selección de la Ubicación:
  • Paso 4: Descarga de Componentes:
  • Paso 5: Instalación Postdescarga:
  • Paso 6: Fin del Proceso de Instalación:Paso 6. Fin del Proceso de Instalación
Hecho lo cual ya tenemos nuestro entorno dispuesto para comenzar a trabajar. El entorno de programación de Tizen está basado en Eclipse, por lo que si estáis acostumbrados a usarlo, tiempo que ganáis, el resto de vosotros no preocuparos por el momento ya que explicaré más adelante como funciona.

Bada será Tizen, o ¿no?

Ya os contaba el otro día, al poner en marcha este blog, que uno de los motivos por los cuales me acerqué a Tizen, era el rumor de una posible fusión de Bada, sistema operativo móvil propietario de Samsung, con Tizen. He decidido dedicar esta mini entrada, a hablar de esto, pues lo cierto es que no parece estar la cosa muy clara. A ver si conseguimos añadir un poco de luz al asunto.
La cosa ha sido más o menos así: a principios de año, la revista Forbes, publicó una entrevista,  en donde Tae-Jin Kang, actual vicepresidente de planificación, aseguraba que la compañía fusionaria Bada con Tizen, sin embargo, poco después Samsung se desmarcaba de esta noticia diciendo que la decisión aún no había sido tomada y que por tanto era una cuestión que estaba todavía más que abierta.
Estos son los hechos, más o menos como los he ido yo siguiendo. Si a alguien le interesa mi opinión personal, pienso que tal vez Samsung está esperando a ver como evoluciona la actualización de Bada a su versión 2.0, si aumenta su cuota de mercado, la cual teniendo en cuenta el tiempo que lleva Bada en el mercado no está del todo mal, y en caso que la operación resulte fallida, tener un plan B de escape, que además permita conservar el ecosistema de desarrolladores de aplicaciones que han ido ganando durante este tiempo, debido a la compatibilidad entre ambos sistemas.
¿A vosotros que os parece? Seguiremos contando que pasa finalmente, de momento volvamos a Tizen.

Historia de Tizen

Bueno, pues vamos a seguir con esta serie de breves entradas dedicadas a ir descubriendo poco a poco qué es Tizen.
Lo cierto es que el mundo de los sistemas operativos para móvil me recuerda al campo cuando llueve y se llena de setas, es increíble ver la cantidad de ellos que han aparecido (y desaparecido) en un lapsus de tiempo relativamente corto. No es difícil seguir la pista a los orígenes de Tizen, ya que éste se origina en el sistema operativo MeeGo, una especie de mix que a su vez evolucionó de la fusión de los sistemas operativos Maemo (de Nokia) y Moblin (de Intel), sistemas que como ya sabemos, no han tenido el éxito esperado.
Pero como no solo de Maemo y Mobblin encontramos contribuciones en Tizen. Samsung posee un proyecto interno denominado Samsung Linux Platform o STP, el cual también ha aportado su granito de arena en el desarrollo de Tizen. Concretamente de STP se han cogido lo que se denominan comoEnlightenment Foundation Libraries por lo que un desarrollador puede hacer uso de ellas además de su API basada en estándares Web (como el HTML5).
Ahora mismo Tizen se encuentra  patrocinado por dos fundaciones, la Linux Foundation y LiMo (o Linux Mobile), aunque el desarrollo se dirige por parte de Intel y Samsung, con la colaboración de desarrolladores de MeeGo y está pensado para usarse en una amplia variedad de dispositivos, que van desde tabletas, hasta televisores o dispositivos de guiado en vehículos. Nokia no aparece en el proyecto, por un lado porque han seguido por su lado desarrollando su propio sucesor de MeeGo denominado Meltemi, y por otro por su apuesta por Windows Phone.
Alguna curiosidad que igual no sabes es que MeeGo, según Intel se inicio por el poco soporte que Microsoft hizo de Windows 7 sobre procesadores Atom y que se canceló formalmente en Septiembre de 2011. Actualmente ha pasado a llamarse Mer, y se sigue desarrollando aunque con un futuro muy incierto. Es más, hay un error muy común de considerar a Tizen como la continuación del proyecto MeeGo y si bien como acabamos de decir tiene su origen en este, no debe considerarse como una continuación, de hecho uno de los elementos más interesantes de MeeGo era su API basada en Qt, algo que no encontraremos en Tizen por ningún lado.

Comenzando…

Pues después de un tiempo viendo hacia donde va o no va el mundo del desarrollo móvil, creo que Tizen puede ser un firme candidato a hacer frente a otros sistemas operativos que ya están en el mercado y que se encuentran sumamente asentados…. ¡uy!, perdón que no me he presentado, lo primero las buenas maneras.
Hola, mi nombre es Santiago Márquez y voy a intentar ayudarte en tú viaje en el descubrimiento de Tizen, y porqué no decirlo, juntos mejorar también mi conocimiento del mismo.
Mi interés por Tizen comenzó hace unos meses, cuando comenzó a sonar la posibilidad que Bada, sistema operativo propietario de Samsung y al que tengo especial cariño, y que personalmente creo que ha sido injustamente tratado, se fundiría (aunque ya hablaremos de esto) con Tizen. Dado mi carácter de naturaleza tecnológicamente inquieta, e indagando un poco, me puse a investigar qué era esto de Tizen, y aunque si bien lo cierto es que todavía está en pañales y no existe una versión estable, ¿qué mejor forma de acercarse a una nueva tecnología que cuando ésta es aún un bebe? además esto nos brinda a los desarrolladores, llamemosnos pioneros, un punto de ventaja si a posteriori queremos comercializar alguna aplicación, algo que ya sabemos todos, está muy de moda y no es raro ver exitazos del mundo Indie que han llegado muy, pero que muy lejos.
¿Porqué hacer un blog sobre Tizen? Bueno, cuando Bada apareció y comencé a trabajar con él, tuve la gran suerte de ser admitido como colaborador en Badadev.com, una comunidad dedicada a Bada, también pionera en muchos aspectos y comandada por el genial Witt (mis saludos desde aquí), y me apetecía hacer algo parecido, además páginas sobre Android, iOS, etc. hay muchas y de Tizen y además en español todavía no hay nada (ya saldrán ya).
Igual esta aventura que hoy iniciamos sea un fracaso, y realmente Tizen no llegue a nada, no pasa nada, solamente habremos perdido 12 dólares de la redirección del dominio, pero a mi me servirá para una vez más, tener de un modo organizado y estructurado todos mis avances, y quien sabe igual alguien también le saca partido. Además, estoy un poco cansado de escribir siempre en inglés, ¡con la cantidad de gente que habla español por el mundo!, dicho con todo mi cariño para los angloparlantes ;-) .
Asi que sin más dilación, comencemos…