Cómo ver contenidos web Flash desde Android 4.4

La última versión de Android no es compatible con Adobe Flash lo que deja de lado la compatibilidad con ciertas páginas web. Si quieres navegar por páginas Flash tenías que recurrir a otro dispositivo, ahora ya puedes hacerlo desd tu smartphone con Android KitKat.

Parece que el mercado está dando de lado Adobe Flash Player como soporte principal para vídeos y multimedia, sin embargo no son pocas las páginas web que aún lo usan y es por ello que queremos comentaros un método sencillo para poder navegar con soporte Flash.

Para ello os ofrecemos tres sencillos pasos que se resumen en instalar el navegador Dolphin, bajar un reproductor Flash hackeado y compatibilizado con Android 4.4 y habilitarlo en este navegador.

  • Descarga el navegador Dolphin y Dolphin Jetpack
  • Descarga la versión hackeada de flash player desde aquí. Tendrás que habilitar Orígenes desconocidos desde Ajustes -> Seguridad.
  • Habilita la opción de Flash en Dolphin Browser: Menú -> Settings -> Web Content -> Flash Player -> On demand.


  • www.asociacionaepi.es




    ¿Problemas de almacenamiento en tu móvil con Android? Cassini te ayuda


    Las tendencias del sector de la telefonía móvil, con smartphones equipados con 16, 32 ó 64 gigas de almacenamiento interno – aunque ya os hemos hablado de algún que otro que alcanza los 128 gigas – nos hacen olvidar que hasta hace cuatro días la falta de almacenamiento interno era uno de los mayores quebraderos de cabeza a los que nos teníamos que enfrentar muchos de los usuarios de teléfonos conAndroid. Aún así no son pocos los dispositivos de la gama básica o algo más antiguos que los que estamos acostumbrados a ver en Android Ayuda, que siguen teniendo limitaciones en lo referente a la capacidad de almacenamiento. Así que vamos a intentar echaros una mano gracias aCassini.

    La solución que os proponemos – y que nos llega de parte de los expertos de xda-developers -, se llama Cassini y, si bien no se trata del ‘Bálsamo de Fierabrás’ que acabará de una vez por todas con vuestros problemas de almacenamiento, sí que conseguirá aliviar la situación en cierto modo y os ofrecerá un poco más de espacio disponible en vuestro dispositivo.
    ¿Qué es y cómo funciona Cassini?
    Cassini es una herramienta basada en PC, que os permitirá minimizar el espacio que ocupan las aplicaciones instaladas en el smartphone mediante la compresión de los archivos de imagen de dichas apps. De este modo, habrá menos almacenamiento ocupado por las aplicaciones y más capacidad disponible para nuestras fotos, música, vídeos, etcétera.
    Según sus desarrolladores, Cassini funciona con todas las aplicaciones de sistema a excepción de LatinIME.apk, del mismo modo que también hace su trabajo a la perfección con una considerable lista de aplicaciones que encontraréis en Google Play como Solid Explorer ZPlayer. Desgraciadamente, está comprobado que no funciona con Whatsapp y con la inmensa mayoría de juegos con los que se ha probado, así que tenedlo en cuenta.

    ¿Cómo se instala y cómo se usa?
    Antes de poder dedicarnos a ganar almacenamiento interno en nuestro smartphone con Cassini, tendremos que llevar a cabo un proceso de configuración en el que la parte más complicada será la de instalar y poner a punto Java 7. El primer paso, después de descargar e instalar en nuestro ordenador Java SE Run-time Enviroment 7, será desplazarnos a la pestaña Advanced dentro del menú System Properties.

    Una vez allí, nos adentraremos en Environment Variables y crearemos una nueva variable del sistema, que llevará por nombre ‘JAVA_HOME’ y que en el apartado de Variable value tendrá la ruta del directorio en el que hayamos instalado Java 7. El siguiente paso es posiblemente el más complicado, ya que tras la creación de la variable de sistema anteriormente descrita, tendremos que buscar en el listado la variable llamada Path. Una vez localizada, la seleccionaremos y pulsaremos ‘Editar’ para poder buscar al final de su Variable value un punto y coma – ‘;’ sin las comillas -, tras el que tendremos que añadir la ruta de la carpeta ‘bin’ del Java 7.
    Una vez hecho lo anterior, tan sólo tendremos que darle a ‘Ok’ y ya estaremos preparados para el siguiente paso, que nos llevará a descargar Cassini e instalarlo siguiendo las instrucciones del asistente.

    La utilización de Cassini es mucho más sencilla que su instalación, ya que tan sólo tendremos que copiar los archivos apk que queramos comprimir en la carpeta indicada dentro del directorio bautizado con el nombre de la herramienta. Con las aplicaciones ya copiadas, abriremos Cassini y pulsaremos Intro para proceder a la compresión. Cuando el proceso haya finalizado los archivos apk estarán disponibles para su uso, con la sorpresa añadida de que ocuparán mucho menos espacio que antes.
    Descarga Cassini v 1.1 y consulta en xda-developers toda la información

    www.asociacionaepi.es



    ¿Cómo Acelerar el Emulador de Android?


    Si eres un desarrollador Android, sabes que el emulador toma mucho tiempo para arrancar (sin mencionar el lento desempeño una vez que ya está funcionando) y esto afecta tu productividad.

    Afortunadamente, si cuentas con un equipo razonablemente moderno con un procesador Intel® que tenga Intel® Virtualization Technology habilitada, puedes hacer uso de esta tecnología para acelerar significativamente el emulador de Android. En este artículo explicaremos los pasos necesarios para hacer esto. Es posible hacerlo tanto en sistema operativo Windows como en Mac OS y Linux. En los dos primeros casos se utiliza Intel Hardware Accelerated Execution Manager (Intel HAXM), y en el caso de Linux se utiliza KVM.

    1. Introducción
    A continuación te guiaremos para realizar la instalación del Intel® Hardware Accelerated Execution Manager (Intel HAXM), un motor de virtualización asistido por hardware (hipervisor) que usa Intel® Virtualization Technology (Intel VT) para acelerar el desarrollo de Android en Windows y OSX. También explicamos cómo configurar una máquina virtual basada en kernel (KVM) asistida por hardware en Linux.

    2. Instalación 2.1. Prerrequisitos
    • Tener instalado el kit de desarrollo de software (SDK) de Android.
    • Tu equipo debe tener un procesador Intel compatible con Intel VT-x y EM64T, y con la funcionalidad Execute Disable (XD) Bit habilitada desde el BIOS.

    2.2. Instalación en Windows

    Después de haber instalado el SDK de Android, abre el SDK Manager. En la sección de extras, podrás encontrar el Intel HAXM.
    Marca la casilla y haz clic en el botón “Install packages…”; cuando hayas instalado el paquete, el estado aparecerá como “Installed”. Esto es engañoso, ya que en realidad no queda instalado. El SDK tan sólo copia el ejecutable de Intel HAXM a nuestra máquina, pero todavía tenemos que instalarlo. Para instalar el ejecutable de Intel HAXM, busca en tu disco duro IntelHaxm.exe (o IntelHAXM.dmg en Mac OS X). Si dejaste todos los valores predeterminados, debería estar en C:Program FilesAndroidandroid-sdkextrasIntelHardware_Accelerated_Execution_ManagerIntelHaxm.exe.
    Intel HAXM sólo funciona en combinación con una de las imágenes de sistema x86 de procesador Intel Atom. Al momento de publicar este artículo existen imágenes x86 disponibles para Android 2.3.3 (API 10), 4.0.3 (API 15), 4.1.2 (API 16), 4.2.2 (API 17) y 4.3 (API 18). Estas imágenes de sistema de Intel se pueden instalar de la misma manera que las imágenes basadas en ARM, mediante el administrador de SDK.
    Cuando das clic en el ejecutable de IntelHaxm, se muestra una pantalla de bienvenida como esta:
    Puedes ajustar la cantidad de memoria RAM que se asigna a Intel HAXM. Después de ajustarla, haz clic en “Next”. La pantalla siguiente confirma la asignación de memoria. Si todo está como lo desea, haz clic en “Install”.
    A fin de poder instalar el Intel HAXM, debes tener habilitada Intel VT-x en el BIOS, si no, verás un error como este durante la instalación:
    Si se produce este error, ve al BIOS y habilítala.
    La segunda opción para descargar el Intel HAXM y la imagen de sistema del emulador x86 Emulator System Image es ir directamente al sitio web: http://software.intel.com/es-es/android y descargar de allí todos los componentes necesarios.

    2.3. Instalación en Linux
    Los pasos para acelerar el emulador de Android en Linux son diferentes que en Windows y Mac OS X, porque Intel HAXM no es compatible con Linux, así que es necesario usar KVM en su lugar. Los pasos que se muestran a continuación corresponden a Ubuntu* 12.04 y pueden diferir ligeramente en otras distribuciones de Linux.

    2.3.1. Instalación de KVM
    Para instalar y ejecutar KVM, primero necesitas comprobar que tu CPU admite virtualización de hardware. Tal vez la forma más práctica de hacer esto es con el comando “kvm-ok” que se encuentra en el paquete “cpu-checker”.
    $ sudo apt-get install cpu-checker
    $ sudo kvm-ok
    Este comando nos indicará si nuestro equipo cuenta con la capacidad de ejecutar KVM y si ya está habilitado en el BIOS o tenemos que habilitarlo.
    El siguiente paso es instalar la KVM y otros paquetes necesarios. Para hacerlo, escribe:
    $ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
    Si obtienes una pantalla de configuración de Postfix, selecciona “No configuration”.
    A continuación, agrega tu usuario al grupo KVM y al grupo libvirtd. Para hacerlo, escribe:
    $ sudo adduser your_user_name kvm
    $ sudo adduser your_user_name libvirtd
    Después de la instalación, vuelve a iniciar sesión y los cambios surtirán efecto. Para probar la instalación, escribe:
    $ sudo virsh -c qemu:///system list
    Ahora puedes ir al paso siguiente, que es crear y ejecutar el dispositivo virtual de Android (AVD). Este procedimiento es el mismo para Linux y Windows.

    2.4. Cómo crear un AVD (dispositivo virtual de Android*)
    Después de instalar el SDK e Intel HAXM (o KVM en Linux), puedes crear un dispositivo virtual que tenga emulación acelerada por hardware. Para hacerlo, ve a AVD Manager y crea un nuevo dispositivo. Asegúrate de seleccionar Intel Atom (x86) como CPU/ABI. Esta selección sólo aparece en el menú desplegable si tienes instalada la imagen de sistema x86 Intel; para que los gráficos sean más suaves, activa la emulación de GPU cuando crees el AVD.
    Haz clic en New y crea tu AVD x86. Asegúrate de elegir una API compatible con imágenes de sistema x86, que CPU/ABI esté establecido en x86 y de haber habilitado la emulación de GPU (OpenGL ES*). Cuando hayas hecho esto, haz clic en Create AVD para crear el AVD.
    Para iniciar el AVD x86, haz clic en Start y luego en Launch.
    Si la instalación fue exitosa, cuando se esté iniciando el emulador, aparecerá un cuadro de diálogo que indicará que Intel HAXM se está ejecutando en modo virtual rápido. También puedes revisar los detalles en “About phone” dentro del emulador.
    Conclusión
    En este artículo hemos revisado cómo podemos apoyarnos en las capacidades de los procesadores Intel para acelerar el emulador para Android en Windows, Mac y Linux. La mejora de rendimiento que apreciarás con Intel HAXM o KVM depende de tu equipo, pero debería ser entre 5 y 10 veces mejor que al no usar aceleración.
    Si deseas conocer más herramientas y recursos que ofrece Intel para desarrolladores Android, te recomendamos que visites la zona para desarrolladores Android en http://software.intel.com/es-es/android.


    www.asociacionaepi.es



    Desarrollando en Android 4 – Parseando un XML

    Vamos a tocar una parte muy importante de un proyecto: parsear un XML. Según lo definido inicialmente, la gracia de toda esta aplicación es que yo recibiré un archivo .xml y a partir de aquí mostraré en el mapa las posiciones. Para ello, vamos a parsear este archivo primero y luego vamos a utilizar los datos para insertar marcadores en nuestro mapa.
    Parsear un XML
    Antes de nada, qué significa “parsear”. El parseo es un proceso de análisis y posterior transformación de un bloque en un lenguaje/estructura determinada en otro bloqueo de lenguaje/estructura diferente. Básicamente lo que quiero es que mi programa sepa entender el archivo que le paso, y me detecte lo que son posiciones geográficas, lo que son títulos o el indicador de si está libre o no un parking.
    Así que, antes de nada, he creado un archivo .xml que alamcena posiciones de parkings:
    <?xml version=”1.0″ encoding=”UTF-8″?>
    <ParkingPositions>
    <parking>
    <name>Parking UPC</name>
    <lat>41.387179</lat>
    <lng>2.1125849</lng>
    <free>1</free>
    </parking>
    <parking>
    <name>Parking Casa Adri</name>
    <lat>41.3845864</lat>
    <lng>2.1392143</lng>
    <free>1</free>
    </parking>
    <parking>
    <name>Parking Palau Reial</name>
    <lat>41.38575629197152</lat>
    <lng>2.1175289154052734</lng>
    <free>0</free>
    </parking>
    <parking>
    <name>Parking Liceo Frances</name>
    <lat>41.392059</lat>
    <lng>2.117139</lng>
    <free>0</free>
    </parking>
    </ParkingPositions>
    Este archivo no es nada más que un conjunto de objetos <parking> que contienen un nombre <name>, una latitud <lat>, una longitud <lng> y un indicador de si el parking está libre o no <free>. Ahora toca interpretarlo.
    En Android se puede parsear un XML de muchas maneras: la que ellos proponen utilizando XMLPullParser, DOM o SAX entre muchos. Personalmente he probado de hacerlo de dos maneras diferentes, con el XMLPullParser y con SAX, y tras muchísimos muchísimos quebraderos de cabeza al final he optado por el SAX.
    Nota: Muchísimas gracias a Salvador Gómez por su tutorial en el parseo con SAX, que ha sido de mucha utilidad.
    Paso 1: La clase de objetos
    El objetivo final del parseo es obtener una serie de objetos en el formato que queramos. Como yo quiero obtener parkings con los cuatro atributos mencionados anteriormente, lo primero que hay que hacer es crear la classe ParkingMarker:
    Paso 2: El Handler
    A medida que se parsea un documento se van produciendo eventos que se han de tratar. Estos eventos indican por ejemplo que se ha acabado una etiquetao que has llegado al final del documento entre otros.
    Los principales eventos son:
    • startDocument(): comienza el documento XML.
    • endDocument(): termina el documento XML.
    • startElement(): comienza una etiqueta XML.
    • endElement(): termina una etiqueta XML.
    • characters(): fragmento de texto.
    Así pues en nuestro código vamos a tratar todos ellos
    Analicemos con detalle lo que hemos hecho. Primero hemos definido una lista de objetos parkings, un objeto parking y un objeto sbText. Este último sirve para ir almacenando el texto que se recupera del parseador.
    En el startDocument, tan solo hay que instanciar los dos tipos de objeto y en startElement decimos que si nos encontramos con la etiqueta <parking> significa que empieza un nuevo objeto. La función characters tan solo va acumulando el texto para luego tratarlo.
    Y la gracia de todo está en el endElement. Aquí definimos qué hay que hacer cuando llegas al final de un elemento. He definido en mi caso las siguientes situaciones:
    • Si estaba en la etiqueta <name>, almacena el contenido en el apartado name del ParkingMarker.
    • Si estaba en una de las etiquetas de <lat> o <lng> que lo almacene en su campo correspondiente
    • Si estaba en el campo <free>, que recoja el valor y si es un “1″ entonces asignaremos el valor de TRUE al campo y FALSE si es el caso contrario.
    • He añadido un caso en el que si no viene ni un “1″ o un “0″ que indique que ha habido error en el parseo.
    Paso 3. El Parser
    Y finalmente el parseador. Esta clase recibe una URL con el XML y empieza a Parsearlo utilizando el ParkingHandler que hemos creado anteriormente.
    Insertando el Parseador al proyecto y añadiendo puntos al mapa
    Aquí hay un tema delicado que he aprendido a base de prueba y error. Desde la versión 3 de Android, no se permite a las aplicaciones ejecutar operaciones de larga duración en el hilo principal que puedan bloquear temporalmente la interfaz de usuario. Así pues, hay que crear una llamada asíncrona que lo hará en segundo plano.
    En resumen, lo que toca hacer ahora es lo siguiente. En el método onCreate añadimos las siguientes líneas:
    RetrieveFeed task = new RetrieveFeed(); task.execute(“https://dl.dropboxusercontent.com/u/123539/parkingpositions.xml”);
    Y al final de la MainActivity.java, justo antes de cerrarla creamos una clase que extienda AsyncTask
    Analicemos también con más detalle lo que pasa aquí. En el primer método doInBackground definimos lo que se realiza en segundo plano. En nuestro caso es crear un nuevo parseador con la URL dada y ejectuarlo.
    Y en onPostExecute ponemos lo que se ha de hacer a continuación: tratamos la lista y para cada elemento (parking) de ella
    • recuperamos la latitud y la longitud
    • si el parking está libre definimos el color verde y si está ocupado el color rojo
    • finalmente añadimos un marcador en la posición recuperada, con el nombre (también recuperado) por título y el icono de un color u otro según su estado.
    Como véis, no es excesivamente complicado pero os puedo asegurar que me estuve horas y horas para conseguir que funcionase. Ahora ya lo tenéis todo bien puesto y funcionando a la perfección.
    www.asociacionaepi.es



    Espresso, framework Android para hacer tests de la interfaz de usuario


    Los tests UI en Android nunca han acabado de cuajar del todo para ser ágiles.. Conllevan diversas problemáticas como los elevados tiempos de ejecución o la sincronización entre las distintas llamadas a la acción. Buscando el santo grial podemos probar un recién estrenado framework propuesto por Google a la comunidad. Se trata de Espresso, de cuál tuvimos las primeras noticias en la pasada GTAC (Google Test Automation Conference).

    Disponible como versión preliminar podemos comenzar a plantear complejos tests a nivel de interfaz de usuario que hasta ahora requerían un esfuerzo extra y nada trivial. Espresso dispone de una simple API, fácil de aprender y adaptar a nuestra necesidades.
    Elimina la complejidad de la gestión de distintos hilos de ejecución. Sólo debemos escribir el test de forma concisa tal cual son las verdaderas acciones Espresso se encarga de sincronizar las distintas acciones y ejecutarse cuando cada evento esté disponible siguiendo su ciclo de ejecución).
    Algunos ejemplos de lo que podemos hacer con Espresso en nuestra aplicaciones Android para testear:

    onView(withId(R.id.my_view)) // withId(R.id.my_view) is a ViewMatcher .perform(click()) // click() is a ViewAction .check(matches(isDisplayed())); // matches(isDisplayed()) is a ViewAssertion
    Testear los elementos visibles del action bar:
    public void testClickActionBarItem() { // We make sure the contextual action bar is hidden. onView(withId(R.id.hide_contextual_action_bar)) .perform(click());
    // Click on the icon – we can find it by the r.Id. onView(withId(R.id.action_save)) .perform(click()); // Verify that we have really clicked on the icon by checking the TextView content. onView(withId(R.id.text_action_bar_result)) .check(matches(withText(“Save”))); }

    Como dato a tener en cuenta, es otro de los proyecto Open Source que surgen de necesidades reales del equipo de desarrollo de Google. Ha sido usado para más de 30 aplicaciones en Google como Maps, Google+ o Drive.

    Ahora toca el turno de que los desarrolladores envíen feedback y colaboraciones al proyecto para poder construir un framework los bastante potente para que no sea un trauma testear la interfaz de usuario.

    www.asociacionaepi.es