RSS |

Blog de Omar

Just another WordPress weblog

Advertisement

Por: BILLY GRADOS,

Android Developer en Devos Inc. (https://www.facebook.com/DEVOS.Inc) ,

desarrollador de Metro de Lima (by BGL) (https://play.google.com/store/apps/details?id=me.metro.bgl)

  1. INTRO
  2. DESARROLLO APPS
    1. SPEC
    2. SCREENS
    3. DESIGN
    4. CODE
    5. CODE WEB / SERVER
    6. DEPLOY
    7. TEST
  3. CONSEJOS
  1. INTRO

  2. Primero, dar el Agradecimiento a Omar PH, Ing. Sist., futuro Mg. Gestión TI, C|EH, Security +, ITIL v3., CSM (¿certified security master?) y otofílico, por este espacio de compartir el mundo móvil desde una aplicación rápida y compacta con líneas de código para dar un vistazo al desarrollo en android.

    Segundo, si quieres enterarte del Mundo Móvil y tecnología móviles,

    DALE ME GUSTA a la página de Devos Inc (https://www.facebook.com/DEVOS.Inc).

    ¿Qué es el mundo móvil?

    Si tienes un smartphone, si usas whatsapp, si escuchaste de instagram, foursquare, angrybirds, o las infinidades de aplicaciones para celulares con android, iOs, BlackBerry, Windows Phone, y más, entonces, sabes que esa revolución que empezó con un Walkman de Sony, continúa hacia sorprendentes tendencias como DNI y dinero electrónico, e incluso Google Glass. Toda tecnología que es portátil, que se mueve o puede ser llevada fácilmente contigo, está cambiando la forma como vemos el mundo. El mundo digital ya no está a la espera de nosotros desde una cabina de internet o una laptop, sino que está segundo a segundo con nosotros desde cualquier espacio donde llevemos como mínimo un Smartphone.

  3. DESARROLLO APPS

    Para gusto de muchos, no existe una lámpara mágica que fabrique aplicaciones móviles. Para solucionar problemas, existimos nosotros. Y con ingenio, y mucha perseverancia se ha llegado inclusive a curiosear por Marte, y desentrañar el genoma humano.

    Los que somos escritores para no humanos (me incluyo), lo hacemos teniendo en mente que cada línea de código en conjunto FACILITEN la vida de los usuarios para quienes construimos las aplicaciones. Muchas veces tan solo bastará un botón para obtener el reporte que antes tardaba días, o dar clic bastará para comprar la última oferta insuperable de un sitio de promociones y descuentos, debitándolo de nuestra cuenta bancaria.

    . Usaremos: Eclipse IDE Indigo corriendo en un Windows 7, Android SDK (http://developer.android.com/index.html). Advertimos: se expondrán los siguientes conceptos considerando que al menos se ha revisado y ejecutado satisfactoriamente el tutorial de construir tu primera aplicación android (http://developer.android.com/training/basics/firstapp/index.html)

    Descargar el código fuente.

    SOURCE: source.zip

    1. SPEC

      Hoy construiremos una aplicación compacta para:

      • Enviar los datos desde un formulario del teléfono inteligente usando Android hacia el sitio web de reservaciones.
      • Se simulará una aplicación para la empresa ficticia El Palomo ubicada en Estados Unidos, la cual se dedica al envío de movilidad (taxis) para el recojo de pasajeros (pickup) y traslado hacia otro punto (dropoff).
    2. SCREENS

      La idea de la aplicación es permitir a los usuarios reservar el envío de un taxi. Son cuatro opciones: express ride (cuando se reserva para los siguiente minutos), point to point (cuando se reserva para una determinada hora), y los relacionados al aeropuerto donde se indica de dónde se recogerá al pasajero o hacia qué aeropuerto quiere ir.

      • Pantalla principal
      • screen1

      • Pantalla principal (orientación horizontal)
      • screen2

      • Formulario
      • screen3

    3. DESIGN

      Para iniciar a programar podemos seguir los siguientes pasos:

      • main.xml: pantalla principal con las opciones principales de la aplicación
      • header.xml y footer.xml: será el encabezado y pie de página que se repetirán en las dos pantallas
      • form_layout.xml: la pantalla con el formulario.
    4. Encender

      Crear un nuevo proyecto en Eclipse, recordar que se sigue la siguiente estructura:

      estructura1estructura2estructura3 .
      .
      src: Carpeta con las clases java que darán vida a la aplicación..
      .
      .
      .
      .
      .
      .
      .
      .
      libs: Librerías para usar Fragments, y la inyección de dependencia para ahorrarnos unas líneas de código.

      .
      .
      res: RECURSOS:

      • Drawable con los xml de las formas y fondos a usar para los botones y scrollbar
        .
        .
        .
      • Layout: Aquí están las pantallas
        .
        .
        .
        .
      • Layout-land: Aquí la pantalla pero para posición horizontal
        .
        .
      • Values: Un conjunto de valores como arreglos, listado con colores, dimensiones, cadenas de texto y estilos.
        .
        .AndroidManifest.xml: Archivo donde inicia toda la configuración del proyecto android.

      Arrancar

      Con una estructura clara, arrancamos con las pantallas:

      Se usa include para incluir header.xml y footer.xml

      spinner es el componente que permite seleccionar una de las opciones de pasajeros.

      View se usa como separador.

      Como la aplicación está pensada para adaptarse a varios idiomas se aconseja separar en un archivo de cadenas de texto (strings.xml) todas las palabras y frases. Conforme se necesite las incluimos y las usamos en las pantallas.

      Lo mismo aplica para colores que reusaremos y podemos centralizar en un archivo (colors.xml) para cambiar rápidamente en todas las pantallas donde se use. Lo mismo aplica con las dimensiones (dimen.xml). También el listado de opciones de pasajeros (arrays.xml).

      Los estilos personalizados se manejan en styles.xml y que se enlaza con la aplicación gracias al AndroidManifest.xml

      <application
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name"
         android:theme="@style/ElPalomoTheme" >

      ahí se incluye qué ícono servirá para lanzar la aplicación (android:icon) y que se mostrará al lado de las demás aplicaciones.

      El Activity (que viene a ser como el controlador principal a usarse) a iniciar se declara usando el <intent-filter>. Todos los Activity tienen que ser declarados.

      Manejar y Apagar

      Manejar y apagar lo veremos a continuación.

    5. CODE

      ElPalomoReservationsActivity.java

      Activity principal donde inicia la aplicación.  Usamos el Annotation @InjectView para inyectar y tener una referencia a los elementos de la vista / pantalla R.layout.main

      Inmediatamente después de establecido el contenido de la pantalla ocurrirá la inyección de dependencia y podremos fácilmente sin usar findViewById

      Indicamos que los botones tendrán como listener al activity que hereda de RoboActivity he implementa a OnClickListener.

      Y finalmente cuando se reciba el evento clic gracias al listener declarado que es este Activity, nos permitirá ir al siguiente Activity.

      Usamos la la clase ControladorReservations como una clase singleton para disponer de información a través de toda la aplicación en memoria.

      FormActivity.java

      A diferencia del anterior este implementa validaciones de campos requeridos en el botón send.

         progress = new ProgressDialog(this);
         progress.setMessage(getString(R.string.sending));
         progress.show();
         new InternetRequestTask().execute();

      Esas líneas hacen que se ejecute la Tarea InternetRequestTask que será un hilo en background que enviará a la internet el formulario.

      InternetRequestTask extends AsyncTask dentro de FormActivity.java

      • doInBackground

      Usa la clase Util que empaqueta la implementación para el envío a Internet.

      return Util.openUrl(

      getString(R.string.url),

      httpMethod,

      param);

      getString(R.string.url) permite obtener la dirección url que se encuentra en el archivo de strings.

      httpMethod será POST.

      La variable param es un empaquetado de pares de Strings (Bundle).

      • onProgressUpdate

      Se usa en caso tengamos un progress dialog que se actualiza según el valor recibido.

      • onPostExecute

      Ejecuta un método de la clase padre FormActivity que mostrará al usuario que el formulario se envió correctamente.  Se cierra el diálogo, y se finaliza el Activity para pasar al Activity que lo llamó, o sea, ElPalomoReservationsActivity

      ControladorReservations.java

      Una clase que puede usarse para servir de control y de una capa lógica que actualmente solo se usar para saber qué botón se presionó.

      TimePickerFragment.java y CustomTimePickerDialog.java

      Las dos clases anteriores permiten que aparezca el timepicker. Primero como un fragment diálogo y luego como un diálogo personalizado. Estas clases fueron tomadas de http://developer.android.com/guide/topics/ui/controls/pickers.html

      Se adaptó para usar un intervalo de 15 minutos (TIME_PICKER_INTERVAL)

      Util.java

      Contiene parte de la clase del SDK de Facebook para android usada para la conectividad a internet.

    6. CODE WEB / SERVER

    7. android_reservations_service.php

      El archivo responsable de guardar los datos y responder a la aplicación móvil (cliente) enviará como respuesta Reservation sent lo cual se verá al finalizar progress dialog.

    8. DEPLOY

    9. Usar un servidor donde se ejecute PHP, incluir el archivo php y configurar la dirección correctamente en el strings.xml.

      (Recordar dar permisos a los archivos o directorio donde se creará el archivo reservations.txt)

    10. TEST

    11. Véase demo (http://www.youtube.com/watch?v=J3KVc_haLCA)

  4. CONSEJOS

  • Perseverancia como todo en la vida.
  • Tener una perspectiva clara de los requerimientos y ordenar el trabajo: Requerimientos, Diseño (arquitectura de la aplicación y diseño de pantallas), Programar desde las pantallas hasta la funcionalidad
  • Probar y anticiparse a los cambios. Jugar con implementar nuevas funcionalidades y proponerse retos de cómo quedaría mejor y completarlos.

Popularity: 38% [?]

Si te gusto este post, asegurate de suscribirte a mi RSS feed!

Billy Grados

Android Developer. Desarrollador en Devos Inc. Ingeniero de Sistemas de la UNT. Futuro Mg. Gestión de Tecnologías de la Información.

More Posts - Website

Post Relacionados

  • No Related Posts

SI TE GUSTO ESTE ARTICULO, COMPARTELO!


Comments

There is one comment for this post.

  1. libre.ar on Reply to this comment Marzo 7, 2013 1:01 am

    No he podido resistirme comentar. ¡Extraordinariamente bien dicho!

Write a Comment

*

Spam Protection by WP-SpamFree