domingo, 13 de noviembre de 2011

Como leer y escribir epub files

Hola muyy buenos dias a todos,

Hoy he encontrado un enlace super interesante, acerca de como podemos manipular desde android un fichero epub (formato que se utiliza en los libros electronicos). Con este ejemplo podemos hacer que nuestra aplicaciones puedan mostrar epubs o escribirlos.
 Aqui esta http://www.siegmann.nl/epublib/android

sábado, 29 de octubre de 2011

Android WebDriver , o como testear tus aplicaciones web para android

Hola buenas tardes o casi noches,


Hoy me gustaria hablarles de un herramienta para el testeo de webApp hechas para android utilizando html 5 javascript, CSS 3 . etc Este framework de testteo se llama WebDriver y es de Selenium HQ,  empresa que también tiene otros framework de testeo para aplicaciones J2EE.

Webdriver da un soporte multiplataforma como se puede ver en el siguiente link http://seleniumhq.org/docs/03_webdriver.html

Aqui les muestro lo facil que resulta realizar un test de un webApp hecha para android:



public class SimpleGoogleTest extends ActivityInstrumentationTestCase2
 <SimpleAppActivity> {

    public void testGoogleShouldWork() {
      // Create a WebDriver instance with the activity in 
      //which we want the test to run
      WebDriver driver = new AndroidDriver(getActivity());
      // Let’s open a web page
      driver.get("http://www.google.com");

      // Lookup for the search box by its name
      WebElement searchBox = driver.findElement(By.name("q"));

      // Enter a search query and submit
      searchBox.sendKeys("weather in san francisco");
      searchBox.submit();

      // Making sure that Google shows 11 results
      WebElement resultSection = driver.findElement(By.id("ires"));
      List<WebElement> searchResults = 
       resultSection.findElements(By.tagName("li"));
      assertEquals(11, searchResults.size());

      // Let’s ensure that the first result shown is the weather widget
      WebElement weatherWidget = searchResults.get(0);
      assertTrue(weatherWidget.getText()
      .contains("Weather for San Francisco, CA"));
    }
}
 
WebElement toFlick = driver.findElement(By.id("image"));
// 400 pixels left at normal speed
Action flick = getBuilder(driver)
.flick(toFlick, 0, -400, FlickAction.SPEED_NORMAL)
        .build();
flick.perform();
WebElement secondImage = driver.findElement(“secondImage”);
assertTrue(secondImage.isDisplayed()); 

Como se muestra en el codigo de arriba, solamente hay que crearse un proyecto de test de android, añadirle las librerias correspondientes y empezar a crearse tests cases . Tambien recomiendo ver el siguiente post del blog de google donde se explica http://android-developers.blogspot.com/2011/10/introducing-android-webdriver.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+blogspot%2FhsDu+%28Android+Developers+Blog%29

sábado, 22 de octubre de 2011

Nueva release de Lo Mas Barato: Gasolina




Desde Los Secretos de Android nos enorgullece anunciar que ya ha sido liberada la versión 1.4.2 de Lo Mas Barato: Gasolina y trae las siguientes novedades:

- Agrupacion de los iconos de busqueda.
- Boton de listado de las gasolineras encontrado para ir alli.
- Corrección de errores en posicionamiento GPS

Espero que la disfruteis y que opineis sobre oportando comentarios.


Un saludos

lunes, 17 de octubre de 2011

Something delicious is coming

Atentos porque algo delicioso esta apunto de llegar, os dejo un video promocional divertido de lo que nos viene encima



Estad atentos porque mañana a las 7 p.m hora del pacifico podeis ver la presentación aqui http://t.co/SxXf2tGG

Robotium, una buena herramienta para testear tus aplicaciones android.


Buenos dias,

Hoy me gustaria presentaros una herramienta que he descubierto hace muy poco cuando fui a la droidcon de londres y se llama Robotium. Esta herramienta es un framework que permite crear automaticamente test de caja negra en tus aplicaciones android, como pongo en la función de abajo, donde se puede ver como ejecuto mis casos de prueba interactuando con los elementos de la layout:

 public void testPreferenceIsSaved() throws Exception {
  
          solo.sendKey(Solo.MENU);
          solo.clickOnText("More");
          solo.clickOnText("Preferences");
          solo.clickOnText("Edit File Extensions");
          Assert.assertTrue(solo.searchText("rtf"));
                
          solo.clickOnText("txt");
          solo.clearEditText(2);
          solo.enterText(2, "robotium");
          solo.clickOnButton("Save");
          solo.goBack();
          solo.clickOnText("Edit File Extensions");
          Assert.assertTrue(solo.searchText("application/robotium"));
                
  }

Os dejo un enlace a la pagina del proyecto para que
podais examinar más a fondo esta magnifica herramienta
 http://code.google.com/p/robotium/

lunes, 19 de septiembre de 2011

Actualización a la versión 1.4 de Lo Mas Barato: Gasolina

Hola buenos dias desde la droidcon de UK, la conferncia de desarrolladores más importante a nivel europeo (de la cual os hare un reportaje, y os comentare detalle que he encontrado impressionantes), os anuncio que ya esta disponible la versión 1.4 de Lo Mas Barato: Gasolina




Esta version contiene  las siguientes novedades:

-Cambio visual de la aplicacion.
- Opción de podre escribir la dirección o ciudad donde quieres buscar las gasolineras.
- Icono de estado de que provider esta utilizando.
- Corrección de errores en el posicionamiento.


Un saludo y pronto habra más novedades interesantes

domingo, 18 de septiembre de 2011

Una guia para sobrevivir con el emulador de android

Buenas noches,

Hoy me gustaria mostrarar les un enlace muyyy bueno que he encontrado, que te muestra de la importancia de saber manejar el emulador de android para el desarrollo de las apps. Esta claro con el emulador no se puede hacer tooodoo todooo todoooo (el gps es mejor testearlo en real) pero te ayuda mucho en la mejora de la compatibilidad entre diferentes versiones de android y para el soporte de resoluciones de pantalla.

Os dejo el enlace: http://www.developer.com/ws/the-android-emulator-survival-guide.html

Ale a disfrutar

viernes, 16 de septiembre de 2011

Nace una Nueva aplicación para Android

Hola buenos dias weno mejor dicho buenas noches,

Me enorgullece daros a conocer una nueva aplicación para android que esta recien salida del horno y que se llama "Lo Mas Barato: Gasolina", se trata de una aplicación que te permite saber mediante GPS o WIfi cual es las gasolineras más cercanas y con mejor precio, también te ordena este precio y te permite saber como llegar hasta alli.

LA aplicación esta muyyy bien, yo mismo la utilizo y la verdad que hay veces que no solo para saber la más barata si no que para saber donde hay alguna gasolinera en un sitio desconocido viene bien. Les dejo el link en la market : https://market.android.com/details?id=com.masbarato.gasolina.main

domingo, 11 de septiembre de 2011

Droidcon 2011 en londres

Hola buenos dias,

Espero que hayais disfrutado de un veranito estupendo en las playitas, motañas, paises extranjeros .etc Vuelvo con fuerzo y energias renovadas a introducir posts en este blog dedicado al desarrollo de aplicaciones .

Para empezar, os dejo el enlace de la conferencia Droidcon 2011 que se va a celebrar en londres del 6-7 de octubre  y que va a reunir a un monton de desarrolladores de android y de programación movil, obviamente yo voy a asistir a este evento y os ire contando todo lo que pasa en este evento y a las personalidades que conozco en ella.

Aqui teneis el enlace para los que vayais: http://uk.droidcon.com/


Segundo deciros que he estrenado una segunda  aplición en la market de android (de momento esta a prueba) pero ya casi ha recibido 1000 descargas en poco tiempo y sin publicitarla (weno esta es la primera publicidad que le hago jejejejeje), se llama Lo Mas Barato: Gasolina y es la siguiente :

https://market.android.com/details?id=com.masbarato.gasolina.main


Espero que la probeis y que me digais vuestra opinion.


Un saludo y que paseis buen dia.

domingo, 17 de julio de 2011

10 herramientas que todo desarrollador de android deberia tener

Hola buenos dias,

Hoy me he econtrado con un interesante articulo que nos indica cuales son las 10 herramientas indispensables para desarrollar android de una forma eficiente y rapida.

Espero que les guste : http://www.developer.com/ws/10-must-have-android-tools-for-developers.html

Un saludo y muchas gracias por partcipar en mi blog.

sábado, 16 de julio de 2011

Gingerhair's Productions: Los gestos en Android

Gingerhair's Productions: Los gestos en Android: "Hoy para empezar os dejo un link muyyyy bueno de como implementar gestos especificos en android http://developer.android.com/resources/artic..."

jueves, 14 de julio de 2011

Mini tutorial para beginners de android

Hola amigos y amigas, a continuación os presento un video tutorial para iniciados en Android que es bastante util:


miércoles, 13 de julio de 2011

Los gestos en Android

Hoy para empezar os dejo un link muyyyy bueno de como implementar gestos especificos en android http://developer.android.com/resources/articles/gestures.html


(Voy a obviar la creación de un proyecto en android y la explicación de los ficheros que conciernen a ellos porque esta entrada trata de gestos, en posteriores entrada explicares como se hace un proyecto android de cero)

Lo primero que hay que hacer para implementar un programa que utilice gestos en android, es crearlos, ¿como se crean? Pues facilmente con la aplicación Gestures Builder que viene en las API Demos de android de cada versión desde la 1.6 .


Lo que yo hice fue crearme un proyecto nuevo de android importandome  las API Demos:


Eligiendo el proyecto mencionado anteriormente, luego lo compile y lo arranque en mi movil android. Este programa te permite definir tus gestos para finalmente guardarlos en un fichero dentro de la tarjeta SDCard , lo podreis encontrar aqui /sdcard/gestures . Una vez hecho esto os tendreis que llevar este ficherito al proyecto donde querais reconocer los gestos y ponerlo en la carpeta /res/raw/gestures (posiblemente bajo de res no tendreis creada la carpeta raw, la creas como una carpeta normal con eclipse y ya esta).




El siguiente paso es iros a vuestro fichero XML de vista (en mi caso se llama main.xml alojado en /res/layout/main ) y le añadiis lo siguiente:


        <android.gesture.GestureOverlayView
        android:id="@+id/gestures" android:layout_width="fill_parent"
        android:layout_height="0dip" android:layout_weight="1.0" />


Esto se trata de una vista que utiliza android especificamente para el tema de los gestos, por eso hay que especificar el path de la librería android.gesture.GestureOverlayView ya que no corresponde con ninguna clase estandard de android.

Una vez modificado el fichero main.xml , nos vamos a la clase GesturesDemoActivity (vamos la clase que implementa la actividad principal que le hayamos definido en nuestro fichero manifest ) . Para empezar tendremos que añadir en el metodo onCreate el siguiente codigo:

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        myGesturesLibrary = GestureLibraries.fromRawResource(this,
                R.raw.gestures);
        if (!myGesturesLibrary.load()) {
            finish();
        }

        // It adds the gesture area to register the gestures of the user
        GestureOverlayView gestures = (GestureOverlayView)                 findViewById(R.id.gestures);
        gestures.addOnGesturePerformedListener(this);


Elementos a destacar en este codigo,  tendremos que definirnos una variable dentro de la clase que se llame GestureLibrary myGesturesLibrary; que sera donde carguemos todos los gestos que nos hayamos definido con el programa GesturesBuilder.

Lo siguiente que hacemos es mediante el metodo load() cargamos los gestos, si no nos salimos del programa ya que de otra forma nos lanzara excepciones la demo.


La ultima parte del metodo onCreate, registra un GesturePerformedListener en nuestra GestureOverlayView para que podamos reaccionar a los eventos que ocurran en la pantalla. Cabe aclarar que el listener lo vamos a definir nosotros dentro de la clase GesturesDemoActivity por lo tanto hay que añadir en la cabecera lo siguiente implements OnGesturePerformedListener, de este modo nos podremos definir el siguiente metodo:


public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
        ArrayList<Prediction> predictions = myGesturesLibrary
                .recognize(gesture);

        // We want at least one prediction
        if (predictions.size() > 0) {
            Prediction prediction = predictions.get(0);
            // We want at least some confidence in the result
            if (prediction.score > 1.0) {
                // Show the spell
                Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT)
                        .show();
            }
        }
    }


A este metodo se entrara cuando se detecte un gesto en la  GestureOverlayView y sera el momento de utilizar la libreria de gestos que hemos introducido en nuestro proyecto para llamar al metodo .recognize(gesture) que apartir del gesto que recibe como parametro realiza una serie de predicciones o predictions que guarda en una ArrayList
Una vez tenemos la lista de predicciones podemos recorrerla y ver cual es la predicción que ha obtenido mayor score, en este caso mostramos solamente predicciones que tengan un score superior a 1.0 (por debajo son predicciones malas que no coincidirian con el gesto hecho).

Y finalmente lo que se ha hehco es mostrar el nombre de la predicción, que es el mismo nombre que nos hemos guardado con el programita Gestures Builder 




Bueno agradeceros a los que hayais leido o a los que hayais entrado a ver esta entrada y si teneis alguna duda o necesitais alguna aclaración, por favor no dudeis en pedirla.
 

Muchas gracias y buenos dias

Localización GPS

Hola, buenas tardes desde españa.

En primer lugar disculparme por la tardanza en actualizar el blog pero estos meses han sido de curro intenso con diversas aplicaciones y no he podido dedicarle el tiempo que merecia este blog.

A continuación, les voy a explicar como se puede realizar una sencilla detección de la posición donde nos encontramos  por GPS, utilizando un dispositivo android.

Primeramente para utilizar los recursos del GPS, hay que declarar en el AndroidManifest.xml (esta en el directorio raiz del proyecto) de nuestro proyecto los siguientes permisos :


    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />


Con esto ya podremos acceder al provider del GPS que tenemos en nuestro movil android, lo siguiente sería en el metodo onCreate de la actividad en la que vamos a utilizar el GPS añadir lo siguiente:

        // Hay que declararse en la clase un Location Manager
        locMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locListener = new LocationListener() 
           {
            public void onLocationChanged(Location location) {
                lastLoc = location;
            }

            public void onProviderDisabled(String provider) {
            }

            public void onProviderEnabled(String provider) {
            }

            public void onStatusChanged(String provider, int status,
                    Bundle extras) {
            }
        };

        locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, // minTime
                // in ms
                0, // minDistance in meters
                locListener);


En este codigo se realizan dos acciones, nos declaramos un LocationManager al cual le configuramos un LocationListener (el cual puede servir para muchas cosas, entre ellas para realizar acciones especificas cuando se cambia de posición) y se configura mediante el metodo requestLocationUpdates, cual es el minimo tiempo en la que la posición se actualiza, que distancia minima se necesita para que la posición se actualice y cual es el listener que vamos a utlizar.

Recordar que en la parte superior de la clase que estamos implementando hay que añadir lo siguiente:

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;

De esta manera os detectara las clases de android mencionadas en el codigo anterior.

El ultimo paso para obtener la posición donde nos encontramos seria realizar la siguiente ejecución:


Location lastLoc = locMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);

Una vez tenemos el Location, podemos hacer con el infinidad de operaciones por este objeto contiene la latitud y la longitud de donde nos encontramos o también se podríua localizar la distancia a otro punto, pero esto lo veremos en otro momento.


Otra opción interesante es declararse un metodo onResume que haga lo siguiente:

@Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();

        lastLoc = locMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);

        locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, // minTime
                // in ms
                0, // minDistance in meters
                locListener);
    }

Con este metodo conseguimos que si l usuario cambia a otra aplicación y deja la nuestra en background (o en segundo plano) cuando volvamos a ella recalcule la posición donde estamos.

Weno bloggeros hasta aqui es suficiente para poder montaros una mini aplicación que os permita obtener la posición donde estais, si teneis alguna pregunta o quereis que aclare algún concepto que haya quedado en el aire por favor no dudeis en poner vuestro comentarios .

Muchas gracias

sábado, 5 de febrero de 2011

Bienvenida

Hola bienvenidos,

Este blog nace con el objetivo de compartir las experiencias y los proyectos que tendre con el sistema operativo para moviles de google llamado Android. 

Lo primero es presentarme, soy un programador senior de entornos J2EE de una  importante empresa en España y en el mundo (que no voy a revelar por mantener mi privacidad) con más de 5 años de experiencia profesional en el mundillo este de programación a gran escala . Un dia después de estar un tanto aburrido de la programación con herramientas para entornos empresariales, me decidi a dar un salto en mi carrera a la programación un tanto más divetida y motivante (almenos para mi) que es la programación de moviles.

También deciros que llevo 1 o 2 meses con el desarrollo de una aplicación con Android para el metro de valencia que se llama VLC Metro y que podeis encontrar pinchando en el enlace que se ve en la parte superior izquierda. Y que será de lo que inicialmente se van a ir centrando las entradas que vaya poniendo durante estas semanas, os explicare mis experiencias y problemas con el desarrollo de esta aplicación y como resolverlos.


Un saludo a todos los bloggers de GingerHair