viernes, 27 de enero de 2012

Botones que ocupan toda la pantalla #Android

Otra cosa que he tenido que buscar hoy ha sido como extender dos botones de forma que te ocupen toda la pantalla. La solución me llegó por parte de zero_master a través de http://www.forosdelweb.com/. Lo principal es agradecer y echo esto a difundir...
Para que dos botones se distribuyan de forma que ocupen toda la pantalla sin tener que emplear un tamaño fijo, hay que emplear TableLayout y una propiedad de las mismas llamada android:stretchColumns="0,1". Dentro de un TableLayout se añaden TableRow y dentro de ellas metemos los componentes que queramos ya sean Button, TextField, etc. El tamaño que van a coger las columnas del TableLayout es el del componente que metamos dentro, pero usando la propiedad stretchColumns conseguimos que ocupen todo el espacio que necesitan en la pantalla.

Redondear los decimales de un double en Android. DecimalFormat

Otra cosa que he tenido que buscar es como redondear los decimales de un double para representarlos en pantalla con el formato que nos interese. Para ello está la clase DecimalFormat. Tenemos que crearnos un objeto de esta clase con el formato que nos interese. En mi caso necesitaba que solamente se mostrara la parte entera y dos decimales, por lo tanto necesito algo como sigue:
DecimalFormat formateador = new DecimalFormat("#.##");
Esto es lo que tengo que pasarle al double que quiero representar en pantalla y meterlo en un String. Además le añado el símbolo del € para dejarlo niquelao ;-)
String cron;
double precio;
cron= (formateador.format(euros))+ "€";
Otro apunte útil!

PD: una información mas completa y de utilidad la podéis encontrar en http://chuwiki.chuidiang.org/index.php?title=DecimalFormat


LIBRO RECOMENDADO PARA APRENDER ANDROID

Uno de los libros fundamientales y que recomiendo para aprender Android y llegar a hacer aplicaciones profesionales es: Android 2 Application Developement de Reto Meier


Pasar int a String en Android

La primera vez que tuve que pasar de int a String en Android me fui a buscar un método toString, pero este no existe. Lo han hecho más sencillo todavía. Si tenemos un int horas,int minutos, int segundos para meterlo en un solo string formando la típica cadena de un cronómetro empleamos lo siguiente:

String tiempo = horas + ":" + minutos + ":" + segundos;

Si solamente queremos pasar horas a String, lo que tenemos que hacer es:
String horasString = "" + horas;
Sencillo!

PD: edito el post para añadir un par de modos mas para pasar a String mucho mas elegantes. Podéis encontrar los enlaces a la documentación un poco mas abajo en los comentarios. Agradecer a Chicoanimo su aportación.

Como decía, es más elegante lo siguiente:

String miString = String.valueOf(Myint);

y

String myString =MyInteger.toString()
En este último caso, la variable se tiene que definir como Integer, el tipo int peta


LIBRO RECOMENDADO PARA APRENDER ANDROID

Uno de los libros fundamientales y que recomiendo para aprender Android y llegar a hacer aplicaciones profesionales es: Android 2 Application Developement de Reto Meier


martes, 24 de enero de 2012

El abogado de Megaupload deja el caso

Según podemos leer en siliconnews.es y en RTVE el abogado de Kim Dotcom lo deja tirado por conflicto de intereses. Esto va a suponer un varapalo en su defensa ya que se trataba de uno de los más conocidos en EEUU por haber defendido a Bill Clinton en el caso de la felación llamado Robert Bennett. El bufete del tipo este es http://www.hoganlovells.com/ y obtuvo en 2011 unos beneficios de 1.211 mill. de Euros según expansion.com.
Más o menos es lo mismo que voy a ganar yo y mis generaciones venideras durante los siguientes 500 años. Eso si, si se mantiene la subida del IPC.

ScrollView solo permite un elemento dentro. java.lang.IllegalStateException: ScrollView can host only one direct child

Según vemos en la API de Android aquí el componente ScrollView solamente permite un hijo detro de él. De ese modo, si intentamos meter un texto y un botón dentro de un componente ScrollView, este nos da un pete del tipo java.lang.IllegalStateException: ScrollView can host only one direct child
 Por lo tanto, no tenéis que usar lo siguiente:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:padding="10dip">
       <TextView
           android:id="@+id/about_content"
           android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:text="@string/about_text" />
       <TextView
           android:id="@+id/more_about_content"
           android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:text="@string/about_text" />
 </ScrollView>

Con este me pasé algo más de una tarde, pero es lo que tiene empezar con algo.
LIBRO RECOMENDADO PARA APRENDER ANDROID

Uno de los libros fundamientales y que recomiendo para aprender Android y llegar a hacer aplicaciones profesionales es: Android 2 Application Developement de Reto Meier



Aunque nos pese, Megaupload no está siendo levantada

Noticia que podemos leer en  varios medios de comunicación como este enlace de El Pais o uno de los twitter de Anonimous, no se está intentando levantar el servicio de Megaupload. Ellos mismos afirman que no están detras de la web http://anonyupload.com/.


Debo confesaros que yo caí en el engaño y hice retwit del mismo e incluso lo publiqué en mi Facebook. Eso me da que pensar sobre lo fácil que es difundir información falsa y como tenemos que contrastar la información antes de hablar o comentar sobre ella.

sábado, 21 de enero de 2012

Cronometro en Android con Thread.

Continuo intentando hacer mi primera aplicación en Android. Necesitaba usar Thread para tener un cronómetro e ir contando el tiempo que va pasando en la aplicación y tener un coste en función del tiempo.
Para ello necesito tres botones, uno de arrancar, uno de pause y otro de reiniciar. Además dos TextView que son donde representaré el cronómetro y el coste.
El main.xml que se necesita para definir los botones es:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
        <TextView
        android:id="@+id/txtReloj"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />               
        <TextView
        android:id="@+id/txtImporte"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />       
         <Button
          android:id="@+id/BtnArrancar"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
           />
         <Button
          android:id="@+id/BtnPausar"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
           />
         <Button
          android:id="@+id/BtnParar"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
           />     
</LinearLayout>

miércoles, 18 de enero de 2012

Instalar aplicaciones Android .apk

Las aplicaciones para Android se distribuyen mediante paquetes comprimidos teniendo la extensión .apk
Para instalarlos los puedes pasar al teléfono y ejecutarlos directamente desde al Astro. Si no puedes acceder a la SD de tu móvil como me pasa a mi con el Ubuntu, me los envié por correo y el propio gmail te los reconoce como instalador y chim-pun!


LIBRO RECOMENDADO PARA APRENDER ANDROID

Uno de los libros fundamientales y que recomiendo para aprender Android y llegar a hacer aplicaciones profesionales es: Android 2 Application Developement de Reto Meier




martes, 17 de enero de 2012

Como crear la primera aplicación en Android

Primero tenemos que crear el archivo .java que lanzará la aplicación. Lo añadiremos en la ruta /src/org/development/xxx :

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
}

El método onCreate inicializa el activiy mientras que setContentView muestra la pantalla principal de la aplicación. Mediante R.layout.main identifica el archivo main.xml que situaremos en res/layout. En este archivo introduciremos la información que queremos mostrar en la pantalla.
En mi caso mostraré un texto y un par de botones:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_height="fill_parent"
   android:layout_width="fill_parent">
      <LinearLayout
      android:orientation="vertical"
      android:layout_height="wrap_content"
      android:layout_width="fill_parent"
      android:layout_gravity="center">
       <TextView
         android:text="@string/main_title"
         android:layout_height="wrap_content"
         android:layout_width="wrap_content"
         android:layout_gravity="center" />
       <Button
          android:id="@+id/new_meeting_button"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="@string/inicio" />
       <Button
          android:id="@+id/add_person_button"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="@string/salir" />
    </LinearLayout>
</LinearLayout>
Solo nos faltaría añadir un archivo en donde introducir los textos que queremos usar tanto para los botones como para el texto plano. Este archivo lo tenemos que añadir en /res/values/string.xml poniéndole como hemos visto el mismo nombre que empleamos en la línea android:text="@string/salir" El contenido del fichero es le siguiente:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">New Android</string>
   <string name="main_title">Android Main Title</string>
   <string name="inicio">Inicio</string>
   <string name="salir">Salir</string>
</resources>

Lo que observaremos en el emulador será algo como esto:



LIBRO RECOMENDADO PARA APRENDER ANDROID

Uno de los libros fundamientales y que recomiendo para aprender Android y llegar a hacer aplicaciones profesionales es: Android 2 Application Developement de Reto Meier




Editor de imágenes Ubutu: GIMP

El editor de imágenes por excelencia en Ubuntu es Gimp. Es el que siempre he utilizado junto con Fireworks en Windows y va muy fino. Para instalarlo:

sudo apt-get install gimp

Hay mucha mas información sobre que y como instalar en http://www.ubuntu-guia.com/2010/12/gimp-editor-imagenes-ubuntu.html

Anotado queda, que he tenido que estar 10 min pensando el nombre!

jueves, 12 de enero de 2012

Configurar Eclipse en Ubuntu para instalar aplicaciones Android en teléfono

La primera vez que instalé una aplicación en un HTC Desiree tuve que hacer lo que indican desde la página de developers oficial de Android http://developer.android.com/guide/developing/device.html#setting-up
Siguiendo los pasos:
  1. Declaramos la aplicación como android:debuggable="true" desde el fichero AndroidManifest.xml. Se tiene que añadir dentro del elemento <application>
  2. Creamos el fichero: /etc/udev/rules.d/51-android.rules Recordad que para crear el fichero hay que tener privilegios de root.
  3. Escribir lo siguiente dentro del fichero:SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev" donde el idVendor tenemos que cambiarlo por el que nos interese en función del fabricante. La lista de id aquí. El GROUP tenemos que cambiarlo por alguno al que pertenezca el usuario.
  4. Cambiamos los permisos del que acabamos de crear con chmod a+r /etc/udev/rules.d/51-android.rules. Por si acaso, hacer también un chmod 777 :-)
  5. Yo en este paso tuve que reiniciar. Me imagino que se podrá reiniciar un proceso y a funcionar, pero como no lo conozco, reinicio en plan Windows tras instalación.
  6. Podemos comprobar que el dispositivo está correctamente conectado con ./adb devices. Mas información aquí.
  7. Ahora desde Eclipse, podemos encontrar el dispositivo correctamente conectado e instalar nuestra aplicación en él!!!!
A mi me encantó ver mi primera aplicación instalada en mi teléfono, aunque sea el típico hola mundo.

Conocer dispositivos Android correctamente conectados a Ubuntu

Si tenemos el SDK de Android y el plug-in de Eclipse instalado en Ubuntu, si queremos saber que dispositivos están correctamente conectados al PC, desde la ruta donde tengamos instalado el SDK hacemos lo siguiente:

xxx@xxx:~/xxx/android-sdk-linux/platform-tools $ ./adb devices

Nos mostrará la lista de dispositivos conectados tanto correctamente como no. Si no estuvieran correctamente conectados veremos algo así:

????????????    no permissions

Por el contrario si todo está correctamente configurado, veremos algo como lo que mostramos a continuación:

SH0CWPL09022    device

Espero que os sirva de ayuda.


LIBRO RECOMENDADO PARA APRENDER ANDROID

Uno de los libros fundamientales y que recomiendo para aprender Android y llegar a hacer aplicaciones profesionales es: Android 2 Application Developement de Reto Meier