Mostrando entradas con la etiqueta Tutorial. Mostrar todas las entradas
Mostrando entradas con la etiqueta Tutorial. Mostrar todas las entradas

Android Tutorial - LifeCycle of Activities

Hi everyone again to my blog!
Today I'm gonna show you a quick tutorial about managing the lifecycle of activities on android.

First of all, here is a short explanation of android activities states and a simple diagram about them:

  • Initially, the activity will be created, in order to do that onCreate() method is called.
  • Then the activity is considered "Created" and proceed to be started (with the method onStart()) and subsequently is resumed (by onResume()). At this point the activity is running and processing whatever is programmed to process. Those previous method can be overrided, generally to recover a state or information that were saved in the past.
  • Afterwards activity can be paused (with metod onPause()). So It's not running and is not visible until the system call onResume(). It's also necesary to know that at that point "Android" can destroy the process (calling onStop  and later onDestroy()). For that reason, onPause() and onStop() are usually used to save information so that the process can be restored at the same point.



Now, Create a new Android-Project by clicking File>New>Other  and there Android Application Project. Name it what you want, it's not an important issue.

Then open the file "MainActivity.java" on your "src folder". Click right on the editor and select Source>Override/Implement Methods. In the new dialog we are able to select which function we want to change. For this tutorial, select: "onDestroy, onPause, onRestart, onResume, onStart y onStop"

The only action that our new application is gonna do is to show a "Toast" message when the activity's state changes. To do that we only need to add this sentences in every method only changing the showing text:

Toast.makeText(getApplicationContext(), "Starting activity",Toast.LENGTH_SHORT).show();

Here is the complete code:


public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

 @Override
 protected void onDestroy() {
  Toast.makeText(getApplicationContext(), "Destroying activity",
    Toast.LENGTH_SHORT).show();
  super.onDestroy();
 }

 @Override
 protected void onPause() {
  Toast.makeText(getApplicationContext(), "Pausing activity",
    Toast.LENGTH_SHORT).show();
  super.onPause();
 }

 @Override
 protected void onRestart() {
  Toast.makeText(getApplicationContext(), "Restarting activity",
    Toast.LENGTH_SHORT).show();
  super.onRestart();
 }

 @Override
 protected void onResume() {
  Toast.makeText(getApplicationContext(), "Resuming activity",
    Toast.LENGTH_SHORT).show();
  super.onResume();
 }

 @Override
 protected void onStart() {
  Toast.makeText(getApplicationContext(), "Starting activity",
    Toast.LENGTH_SHORT).show();
  super.onStart();
 }

 @Override
 protected void onStop() {
  Toast.makeText(getApplicationContext(), "Stoping activity",
    Toast.LENGTH_SHORT).show();
  super.onStop();
 }

}


At last but not at least, install the app on your mobile phone and try on. Pay attention to the messages, it's not  the same leave the app clicking home button that return button (The first one only pause the application, but the second one can close it completely)


So, that's all again!
Thanks for reading and see you soon---!




Android Tutorials

(¡Under Blogging!)

This is the index of all Android tutorial of this blog.
I hope it helps you, and for any doubt or proposal of tutorial don't be shy of asking.




Android Tutorial - Getting Started with android & Eclipse

Hi everyone, here is my first Android tutorial, and maybe also your's first.

I'm gonna show you how to install "Android plugin" in Eclipse IDE and how to set up your first Android project.
First of all, if you haven't downloaded Eclipse yet you can do it with this link. Standart download should be enough.

Then open eclipse (and set your workspace, a popup windows will appear every time that you start the program) click help>Install New Software, afterward click on add button and fill the boxes:

  • On name box write "ADT plugin", or android, or whatever you want.
  • An on URL box write: https://dl-ssl.google.com/android/eclipse/

Click ok, and in the dialog at the center will appear two packages (Developer tools and NDK plugins), select both and click next. Then read and accept the licenses. All the packages will be installed now. When installation completes, restart Eclipse.

Finally It's necesary to specify where the "Android SDK" is installed, if nothing appears click Window>Preferences. In my case: "C:\Users\Bardo91\AppData\Local\Android\android-sdk":
And that's everything! Android SDK plugin and developer tools is installed and ready to be used.

If you can't see the icons that are circled in red, click windows>Customize Perspective and click "Command Groups Availability" label. There check the checkboxes called: "Android Lint, Android Refactoring, Android SDK and AVD Manager and Android Wizards.

So... Let's start with our first project! To make a new application click File>New>Other, in the dialog search for the Android folder and select "Android Application Project". Press Next, and in the new dialog we'll set the basics information about the project:

  • Application Name: That will be the name that is going to appear when it's installed.
  • Project Name: This is the name of our project inside Eclipse.
  • Package Name: "Folders" where our project is organized.
  • Minimum Required SDK, Target SDK: I think that are obvious (Related to the android version)
  • Compile with: is the version that will use Eclipse to compile the project
  • Theme: Themes, are only available since Android version 4.0, with earlier versions will be set to "None
In the new windows it's possible to choose if Eclipse will create some basic objects like the icon of our application (It can be changed later son don't worry about it), and the main activity. Followings dialog are the configuration of those objects. Click Next until Finish.

At this point, this will be you screen:

  1. The sources: The files which contains the java code.
  2. The resources: Multimedia files and XML files that codifies values, objects and the graphical part of our application.


You might be thinking how to put your application on your smartphone. Well, there are two ways:

  • There's a file with the extension ".apk" located in the "bin" folder of your application (for example C:\Users\Bardo91\workspace\HelloWorld\bin\HelloWorld.apk). Execute that file on your smartphone and it will be installed (Be sure that you set your mobile to accept "foreign application", if not android will redirect you to that option).
  • The other way is to connect the mobile directly to the computer by USB, then if you click "run button" (Seems a green play button) or "debug button" Eclipse install the application and execute it. To take this option two things are needed.
      1. Activate the "developer option" on your mobile phone.
      2. Install the "USB addon" for eclipse. To do that, start the SDK manager and install the addon:



I hope you learned and enjoyed with this tutorial.
Don't be shy for asking for any doubt, comment!

See you soon! And thanks for reading!



Project JANE - Prototipo funcional de "LittleBoss"

Buenas a todos!

Por fin después de unas tardes de trabajo (y de bastante tiempo por medio haha) ya hay algunos resultados vistosos! Cambiando un poco de tema respecto a la entrada anterior, por desgracia no implementé nada de inteligencia artificial... Terminé el primer programa que lleva cargado el Arduino Mega (Si... arduino en vez de MSP430, ya que para usar dos comunicaciones "Serial" a la vez necesitaba un microcontrolador que manejara más de una, pero a efectos prácticos todo es igual) y cree una pequeña placa que llevará los relés para activar y desactivar la luz y el ventilador.

Vamos por partes!

Lo primero de todo fue hacer el circuito (LittleBoss). El proceso pues el que lleva cualquier PCB. Aquí os dejo algunas fotos. Y el diagrama (https://www.dropbox.com/s/72lk6havcf1ziln/littleboss.pdf).




Este consiste en 4 relés, dos pequeños que harán de intermediario entre el Arduino y los relés "grandes" y así aislarlo de la alta-tensión. Para esto necesitamos también una fuente de 24V que active la bobina de los relés que harán de interruptor para la luz y el ventilador.

Por otro lado necesitamos un programa para el Arduino, el problema que se planteaba inicialmente era que ante todo, los interruptores deberían de funcionar y cambiar el estado independientemente de la posición. Me explico... Si encendía la luz por el interruptor, pero luego la apagaba con la orden de Bluetooth, el interruptor no había cambiado de estado, por lo tanto si se pulsa de nuevo a lo que inicialmente sería apagar, debería encenderse de nuevo. Aquí esta el código completo del Arduino, que soluciona este problema. A parte de realizar todas las operaciones necesarias tanto para el bluetooth como para el switcheo de los interruptores y sus correspondientes acciones.

No se me puede olvidar la aplicación de android cuyo proyecto está aquí. Ahora es excesivamente simple, el siguiente paso que quiero dar es actualizarla. Una interfaz más bonita y con más información estaría bien.

Después de todo esto queda la ardua tarea de la instalación. Los interruptores van ahora al arduino, los cables de los interruptores a LittleBoss para los relés, y el arduino también a LittleBoss para controlar los Relés. Y todo esto partiendo del PC hasta su correspondiente posición (Dentro del armario ya que al lado de este estaban los interruptores y me aseguraba un lugar seguro y accesible para el dispositivo). Aquí os dejo algunas fotos:



 Y bueno ya solo me queda subir un vídeo de demostración, pero como no tengo cámara, más que la del móvil y la aplicación corre en el mismo, a ver si espero a que alguien me deje su smartphone para hacer ambas cosas a la vez (Pero desde luego ya será mañana! a las 5:41 no creo que haya muchos voluntarios hahah)

Buenas noches a todos! Para cualquier duda o curiosidad no os lo penséis dos veces y preguntad! Siempre dispuesto a compartir lo que aprendí.









Project JANE - Comunicación Serie RXTX & Comunicación interna

Buenas noches!

Hoy por fin terminé una parte más del proyecto, la inicial y de las más importantes ya que sin esta no tendría sentido todo lo demás. A ver si consigo explicarlo de una forma ordenada.

Comunicación Interna:
Primero de todo, a comunicación interna me refiero a como las clases/Threads del programa que se ejecuta en el ordenador se mandan información entre ellas. Para esto lo primero que cree fue una clase que hiciera de queue (o cola) con prioridades para almacenar las señales. Estas colas estarán instanciadas en la clase principal (BigBoss) y este se encargara una vez recibidas de reenviarlas a los módulos correspondientes del programa. Estas colas almacenan objetos llamados SignalBox que contienen información sobre la señal (Fecha, prioridad, modulo correspondiente y datos en formato cadena).

Comunicación Serie RXTX:
Esta parte se refiere a la comunicación entre el microcontrolador MSP430 y el programa a través de un thread especifico que controla el puerto serie. Para ello usamos unas librerías que facilitan las clases y funciones necesarias para la apertura/cierre del puerto y el recibo/envío de información.
En este punto se implementan dos clases

  1. SerialCommunication: Esta clase es la que se encarga de la implementación de la conexión con el puerto (COM6 en mi caso) e implementa la función de escritura al puerto y el "listener" para la recepción de datos (Para recibir datos se realiza una espera sincrona desde el ModuleSerialComm para reducir el consumo de cpu, ya que antes tenia implementado un bucle while(1) que buscaba de manera continua en la queue).
  2. ModuleSerialComm: Esta clase implementa el thread que administra la clase anterior y se encarga de actualizar la queue correspondiente que se encuentra alojada en BigBoss, para ello hace la espera sincroná de que se recibió la señal del puerto serie).

Bueno, espero que se me haya entendido más o menos. Puse unos enlaces a las clases por si alguien tenía algo de curiosidad. Para cualquier pregunta, duda, cuestión, o mejora... Soy todo oidos!

Un saludo!

Project JANE

Buenas!
En esta entrada voy a agrupar un poco todo lo que vaya escribiendo sobre el projecto. Para cualquier duda o curiosidad no dudéis en preguntar!


Project JANE - El inicio

Buenas tardes!
Después de más de cuatro años esta semana empecé con uno de mis proyectos más esperados: "PROYECT JANE". Supongo que os preguntareis a que viene todo esto, la verdad es una historia un poco larga, pero se resume en crear un sistema de domótica (inicialmente para mi habitación).

El proyecto es bastante ambicioso y complejo, ya que abarca desde hardware hasta software. El objetivo es crear un subSO (Si existe un nombre para esto lo desconozco) en java que controle diferentes puertos serie para comunicarse con diversos microcontroladores que servirán para el control de los sensores y actuadores que harán la "magia".

Por ahora (Mientras acaban los exámenes) me estoy encargando de los sistemas de señales, están programadas las colas de mensajes, los paquetes de señales, adaptables según el modulo que la vaya a tratar (¡Dios bendiga el polimorfismo!) y el módulo de comunicación serie RXTX (Con este nos comunicaremos con los microcontroladores: MSP430 en mi caso).

Por otro lado también está implementado a nivel de hardware un sistema para que el encendido y apagado del ordenador se realice a través del MSP430. Ala derecha se encuentra el MSP430 que está conectado al PC con un USB se encuentra alimentado en todo momento y permite la comunicación serie y por otro lado a la izquierda tenemos un adaptador de tensión ya que el PC trabaja a 5V y el MSP430 a 3.3V, por lo tanto la señal de activación del PC podría quemar el MSP430. Simplemente es un relé con un transistor que abre o cierra como le mande el microcontrolador:



Por ahora eso es todo,  espero dentro de poco terminar la parte de comunicación del software para pasar ya a la IA y al proceso de las señales.
A bueno se me olvidaba! estoy a la espera de un pedido que incluye la cámara, el sensor de movimiento, sensor de luz y una pantalla LCD táctil para sustituir los interruptores del cuarto por algo un poco más futurista.

Hasta pronto!