jueves, 24 de julio de 2014

¡Odio android! Pero con cariño

Pues algo tan sencillo como un AsyncTask que se supone se ejecuta en un hilo independiente del hilo principal de tu flamante aplicación android se ejecuta por defecto secuencialmente respecto de otros hilos.

¡Uy que bien! ¡fiesta! para que co** quiero yo un AsyncTask que se ejecuta después de otro AsyncTask y quizás después de algo que este haciendo mi hilo principal. Cuando yo lo que buscaba es que hiciera varias tareas paralelas de forma asincrona.

Señores, esto es android y para jodernos un poquillo tienes que buscarte la vida para que funcione de forma optima. En el siguiente enlace encontrareis la solución Executing Multiple AsyncTask's Parallely

Básicamente en vez de iniciar la tarea asíncrona llamando al método execute que te enseñan en todos los tutoriales (incluidos los de Google) debes iniciar la tarea llamando al método executeOnExecutor.

Luego me preguntan por qué lo odio tanto... y que no estoy siendo justo ¬¬

jueves, 12 de junio de 2014

Cordova, Android y su madre

Buenos días porque al final he conseguido sacarlo que sino...

Resulta que los Android 4.2 y 4.3 cuando les solicitas crear una carpetas a través del api de html5(el cual ha dejado de dar soporte), por algún motivo que escapa a mi compresión luego no es capaz de recuperarlo nuevamente para escribir en él.

La solución  no ha sido fácil, pues el único error que retornaba era unknown chromium error -6.

Para solucionarlo la cosa no es muy obvia, pero la encontré en un foro donde pasaba algo similar pero en iOS. Y es que si después de crear la carpeta no creamos un fichero hueco aunque sea, el sistema no se da por aludido de que esa carpeta existe.

Y este es el problema a una incidencia que me ha tenido 3 días pegado al teclado.

Espero os pueda ser útil a los que andáis perdidos con errores como estos.

martes, 1 de abril de 2014

Poner icono y splash screen a tu aplicación Cordova

Recientemente introducido en el fantástico mundo de Cordova y sus puñeteros bugs he dado con la formula para copiar en la plataforma android los iconos y splash screen que tenemos en nuestra carpeta www/res

Lo primero de todo cambiar los iconos y splash que deseemos en www/res

Luego ir a la carpeta hooks (se encuentra en la raíz de vuestro proyecto) y añadir una carpeta con el nombre after_prepare. Para más información sobre los distintos hooks ir a: https://github.com/apache/cordova-cli/blob/master/templates/hooks-README.md

Cordova y sus bugs

Leyendo he visto que Cordova tiene un bug que afecta a la declaración de la orientación de la pantalla en plataformas android.

Antes de solucionar nada, hacer un npm update -g cordova para saber que es la última.

Para solucionarlo deberemos ir a: [USER_HOME]\AppData\Roaming\npm\node_modules\cordova\src

Abrimos el fichero ConfigParser.js y en la linea 88 ponemos esto:

ret = preferences[i].attrib.value;

Luego guardamos y abrimos otro fichero que esta en metadata\android_parser.js

a continuación de la linea 95 añadimos:

break;
case 'portrait':
    act.attrib["android:screenOrientation"] = 'portrait';
    break;
case 'landscape':
    act.attrib["android:screenOrientation"] = 'landscape';

Y en las lineas 91 y 94 ponemos respectivamente userPortrait y userLandscape donde pone portrait y landscape.

Ya que no se quien decidió que era bonito poner un atributo de orientación móvil que solo existe en android 4.3 o superior.

En iOS aun tengo que testear el cambio. De momento esto es todo.

viernes, 28 de febrero de 2014

wiiii, mi primer artículo de OpenCms

Recientemente pregunte en los foros de OpenCms como se creaba una "lista de log" para un módulo de administración. Ante la ausencia de gente que versara sobre esa materia me tuve que buscar las habichuelas.

El resultado fue que al publicar mis conclusiones me preguntaron si se podía publicar en un artículo
Puntos de Administración de OpenCms: ¿Cómo usar el A_CmsListReport?

Espero animarme más con el blog. Ya que tengo en mente darle caña a Unity3D e iOS + Object-C.