6/5/14

Popup selección de fecha. (Android)

Vamos a ver rapiadmente como crear en un activiy un popup para seleccionar una fecha. El popup queda así en el emulador de mi móvil:




Lo que tenemos que usar es la siguiente clase, se puede poner como interna dentro de un Activity o usarla desde fuera, como cada uno prefierá.

public static class DatePickerFragment extends DialogFragment
                           
implements DatePickerDialog.OnDateSetListener {

   
@Override
   
public Dialog onCreateDialog(Bundle savedInstanceState) {
       
// Use the current date as the default date in the picker
       
final Calendar c = Calendar.getInstance();
       
int year = c.get(Calendar.YEAR);
       
int month = c.get(Calendar.MONTH);
       
int day = c.get(Calendar.DAY_OF_MONTH);

       
// Create a new instance of DatePickerDialog and return it
       
return new DatePickerDialog(getActivity(), this, year, month, day);
   
}

   
public void onDateSet(DatePicker view, int year, int month, int day) {
       
// Do something with the date chosen by the user
   
}
}

Tengo que decir que esta clase me la paso un compañero de trabajo que también estaba aprendiendo Android, pero esta muy pero que muy bien para crear de forma rápida y sencilla un popup que permita seleccionar una fecha.

El evento onDateSet es el que recuperará la fecha seleccionada por el usuario. Hay que tener en cuenta que enero es el mes 0.

Para llamar al popup de seleccionar la fecha sólo tienes que hacer esto


DialogFragment newFragment = new DatePickerFragment();

newFragment.show(getFragmentManager(), "datePicker");
En estos momentos ya solo tendriamos que crear un botón o lo que queramos, para cuando se pulse, muestre el popup.

Yo en la APP que estaba haciendo, he creado dos botones con dos editText, para seleccionar la fecha desde y fecha hasta, y lo he implementado de la siguiente forma.

En el metodo onManejadorEventoFecha capturo el botón que se pulsa y llamo a la clase que hemos creado.

public void onManejadorEventoFecha(View v) {                                    
  DialogFragment newFragment = new DatePickerFragment();
  Bundle args = new Bundle();
  int vista = v.getBottom(); //.getId();
  args.putLong("vista",vista);
  newFragment.setArguments(args);
  newFragment.show(getFragmentManager(), "datePicker");

 }


Y en el método de OnDataSet de la clase que hemos creado, recuperamos las fechas seleccionadas en el evento y en función del id del botón pulsado las cargamos en un elemento de texto u otro.

public void onDateSet(DatePicker view, int year, int month, int day) {
  long vista = getArguments().getLong("vista");
  
  // Do something with the date chosen by the user
  DateFormat df =  DateFormat.getDateInstance();
  Date fecha = new Date(year,month,day);
  if (vista == 158){
      et_fechIni.setText(String.valueOf(df.format(fecha)));
  }else if (vista == 309){
      et_fechast.setText(String.valueOf(df.format(fecha)));
  }

}

Un saludo, gracias.


Crear un fichero y escribir en el. (JAVA)

Con esta entrada vamos a ver rapidamente como crear un fichero y como podemos escribir en el, para usarlo de Log, o para lo que necesitemos:

Primer paso deberemos crear un fichero, en este caso creamos un txt:.

        String url_log = "C:\misLogs\milog.txt";
        File fich_log = new File(url_log);


Ahora vamos a crear un método para que cada vez que queramos escribir en el fichero sea más rápido, simplemente lo llamemos.

 public static void EcribirFichero(File fichero,String texto){
        try {
            //Si no Existe el fichero lo crea
            if(!fichero.exists()){
                fichero.createNewFile();
            }
            /*Flujo de escritura sobre el fichero con codificacion utf-8.*/
            BufferedWriter mibuffer =new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fichero,true), "utf-8"));
            /*Escribe la cadena en el fichero y añadimos un salto de linea*/
            mibuffer.write(texto) + "\r\n");
            //Cierra flujo
            mibuffer.close();
        } catch (Exception e1) {
            //Capturamos errores
            System.out.println(e1.getMessage());
        }
    }

En este momento ya podriamos llamar a este método para escribir en el fichero.

        String miTexto= "Inicio del fichero";
        EcribirFichero(fich_log,miTexto);

Un saludo, espero que esta entrada es sea de utilidad.

Tratamiento de carpetas o directorios en java (JAVA)

Con esta entrada vamos a aprender a manejarnos con carpetas en java, veremos como crear, borrar y copiar contenido de una carpeta.

Lo primero que vamos a ver es como se crea un directorio, vamos a utilizar la clase FILE:

/* Ruta del directorio a crear*/
String directActual = "c:\mi_directorio_nuevo"; 
/* Pasamos a tipo file*/
File folderActual = new File(directActual);
/* creamos el directorio*/
folder.mkdir();

Una vez que tenemos creado el directorio vamos a ver como podríamos copiar el contenido de otro directorio en este creado:
/* copiamos el directorio origen en el directorio actual*/
copyDirectory(new File(directorioOrigen), new File(directActual));

Para copiar un directorio basta con esta sentencia:
copyDirectory(new File(directorioOrigen), new File(directActual));

Para borrar un directorio bastaría con la sentencia siguiente:
 directOld.delete();

Donde directold es de tipo file.

Si el directorio que queremos borrar, contiene carpetas (o subdirectorios), hay que tener en cuenta que antes hay que borrar estos:

Para ello creamos el metodo siguiente

  private boolean deleteChildren(File dir) {
        File[] children = dir.listFiles();
        boolean childrenDeleted = true;
        for (int i = 0; children != null && i < children.length; i++) {
            File child = children[i];
            if (child.isDirectory()) {
                childrenDeleted = this.deleteChildren(child) && childrenDeleted;
            }
            if (child.exists()) {
                childrenDeleted = child.delete() && childrenDeleted;
            }
        }
        return childrenDeleted;
    }

Ahora si podriamos borrar primero las subcarpetas llamando a este método y a continuacion borrar el directorio.

 File directOld = new File(directorioOrigen);
 deleteChildren(directOld);
 directOld.delete();

Un saludo, espero os sea útil esta entrada.

3/5/14

Utilizar móvil como emulador. (Android)

Buenas a todos, como estoy aqui liado aprendiendo Anadroid, antes de nada queria comentar que el emulador virtuar de eclipse es muy pero que muy lento para realizar las pruebas de nuestra APP, por lo que os recomiendo que utiliceis el móvil para ello.

Antes de nada tendremos que tener activa el móvil en modo de desarrollador, y para ello, tendremos que al ménu de ajustes / ... / acerca del dispositivo, pulsaremos siete veces sobre el número de compilación que aparece en este menú. Cuando hagamos esto aparecera un mensaje de android informandonos de que se ha activado el modo desarrollador, y en ajustes a partir de ahora tendremos disponible esta opción.

Una vez tenemos hecho esto en el móvil, y los drivers del móvil instalados en el ordenador, podemos abir eclipse, ahora cuando conectemos el móvil por USB, en eclipse se nos habilitará una nueva perspectiva "DDMS".

Si accedemos sobre esta perspectiva y el móvil ha sido reconocido correctamente, veremos algo así:

En este caso tengo conectado mi samsumg Galaxy SIII.

Cuando vayamos a ejecutar una apliación, nos debe aparecer una pantalla donde nos de la opción de hacerlo con el emulador virtual o con el móvil:


Por defeco tengo seleccionado el móvil porque es mucho más rápido.

Si la versión de andorid del móvil es posterior a JellyBean, debereís desactivar la opción MTB.

También se podría conectar el mçovil para usar como emulador a través de wifi, proximamente cuando lo probemos subiremos como se hace al blog.

Un saludo, gracias por vuestra atención.

21/4/14

Configurando entorno de trabajo (Android)


En mi caso como no tenia mucha idea de java ni de andrid, me decidi por descargarme este SDK con todo lo necesario para trabajar con Android:


Vamos a ver como en pocos pasos tenemos todo motnado para empezar, en mi caso me he creado en "c:\" una carpeta "Android" deonde he descomprimido el fichero descargado.



Ahora solo tenéis que hacer doble click sobre el ejecutable "SDK Manager" y seleccionar los paquetes necesarios.




Una vez realizado esto, ya podeis acceder a la carpeta eclipse y ejecutar el ejecutable de eclipse, si vamos a trabajar con eclipse, lo más rápido es crear un acceso directo en el escritorio y listo.

Llegados a este punto ya tendremos configurado el entorno de trabajo.




Android (Web interes)

En este apartado os iré dejando algunas páginas de interesa para aprender a programar con Android.

Aquí os dejo unas cuantas con las que estoy aprendiendo muchísimo, en ellas encontrareis tutoriálaes de bastantes cosas, es muy útil para principiantes y no tan principiantes:

http://www.aprendeandroid.com/

http://www.sgoliver.net/blog/?page_id=3011

http://www.elandroidelibre.com/2012/04/aprende-a-programar-android-gracias-a-youtube.html

Primeros pasos con Android (Android)

Iniciándonos en Android

Actualmente esta poniendose de moda hacer aplicaciones para móviles, en mi caso he comenzado con este tema porque quiero hacer una apliación Android como proyecto final de carrera, por lo que espero que os sea útlil lo que pueda ir publicando en el Blog a medida que vaya aprendiendo.