Android es un sistema operativo basado en Linux, diseñado principalmente para móviles con pantalla táctil como teléfonos inteligentes o tabletas inicialmente desarrollados por Android, Inc., que Google respaldó económicamente y más tarde compró en 2005, Android fue presentado en 2007 junto la fundación del Open Handset Alliance: un consorcio de compañías de hardware, software y telecomunicaciones para avanzar en los estándares abiertos de los dispositivos móviles.
Kernel de Linux
En la base tenemos el kernel 2.6 de Linux, Android lo utiliza por su robustez demostrada y por la implementación de funciones básicas para cualquier sistema operativo, por ejemplo: seguridad, administración de memoria y procesos, implementación de conectividad de red (network stack) y varios interpretes (drivers) para comunicación con los dispositivos físicos(hardware).
Android utiliza como base el kernel de Linux pero los dos sistemas no son lo mismo, Android no cuenta con un sistema nativo de ventanas de Linux ni tiene soporte para glibc (libería estándar de C) ni tampoco es posible utilizar la mayoría de aplicaciones de GNU de Linux.
Además de todo lo ya implementado en el kernel de Linux, Android agrega algunas cosas específicas para plataformas móviles como la comunicación entre procesos (lograda a través del binder), la forma de manejar la memoria compartida (ashmem) y la administración de energía (con wakelocks). De las características únicas del kernel utilizado por Android encuentran más información en Android Kernel Features.
Bloques básicos de una aplicación
Una vez vista la arquitectura, empezaremos con lo fundamental para desarrollar una aplicación. Los componentes básicos de una aplicación son: activities, intents, views, services, content providers y broadcast receivers. Si dominan bien estos términos pueden saltar directo al código.
- Activities: son componentes de la interfaz que corresponde a una pantalla. Podemos visualizarlo como un mazo de cartas en el que tenemos varias cartas pero solamente una está hasta arriba. Una aplicación para una lista de cosas por hacer (remember the milk) puede tener una actividad para ingresar las cosas por hacer y otra actividad para mostrar el listado, en conjunto estas actividades conforman la aplicación.
- Intents: son mensajes que provocan notificaciones o cambios de estatus, que al ser recibidos por actividades o servicios pueden levantar procesos. De esta forma se unen componentes dentro de la misma aplicación o de diferentes aplicaciones.
- Views: son los componentes de la interfaz de usuario, diferentes vistas pueden agruparse a través de grupos logrando una jerarquía, esto se logra a través de la disposición de los componentes a través de un archivo XML.
- Services: son componentes que ejecutan operaciones en segundo plano y no tienen una interfaz de usuario. Por ejemplo, al escuchar música, hay un servicio encargado de la reproducción que se ejecuta de fondo y la aplicación que manipulamos le manda mensajes a este servicio diciéndole que se detenga, pause o reproduzca la siguiente canción.
- Content Providers: representan la abstracción para almacenar y obtener datos permanentes e incluso entre aplicaciones diferentes. El sistema incluye algunos proveedores de contenido útiles (audio, video, etc) y además pueden desarrollarse nuevos.
- Manifest: El archivo AndroidManifest.xml es donde se configura la aplicación, se agregan actividades, se asignan permisos, etc.
- Broadcast Receivers: son componentes que responden a avisos y anuncios de difusión (broadcast). Estos avisos provienen del sistema (batería baja, una llamada entrante, etc) y de aplicaciones (pasando avisos de una aplicación a otra). Aun que no muestran una interfaz de usuario algunas veces utilizan barras de progreso para mostrar avances. Estos se activan a través de mensajes asincrónicos llamados intents (mencionados arriba).
1) Antes de comenzar, asegúrese de que tiene el entorno de desarrollo establecido. Es necesario:
– Descargue el SDK de Android.
– Instalar el plugin ADT para Eclipse.
– Descargar las últimas herramientas de SDK y plataformas usando el Administrador de SDK.
Una alternativa a todo eso es descargar el ADT Bundle.
2) Crear un teléfono virtual y luego un nuevo proyecto llamado Test (Más info: Aqui y Aqui)
3)
– Modificar el archivo activity_main.xml que se encuentra en res/layout/:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <EditText android:id="@+id/edit_message" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:hint="@string/edit_message" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" /> </LinearLayout>
– Modificar el archivo string.xml que se encuentra en res/values/:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Mi primera APP</string> <string name="edit_message">Ingrese un mensaje</string> <string name="button_send">Enviar</string> <string name="action_settings">Configuraciones</string> <string name="title_activity_main">Mi primera APP</string> </resources>
4) Ejecutar nuestra primera APP para probar si todo salió bien. (El tutorial es sacado de Aqui)
Agregando funcionalidad al botón Enviar:
1) Modificar el archivo activity_main.xml que se encuentra en res/layout/ y agregar el evento onClick:
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage" />
2) Abrir MainActivity.java (ubicado en src/ ) y dejarlo así:
package com.example.test; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.content.Intent; import android.widget.EditText; public class MainActivity extends Activity { public final static String EXTRA_MESSAGE = "com.example.test.MESSAGE"; @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; } /** Called when the user clicks the Send button */ public void sendMessage(View view) { Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.edit_message); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent); } }
2) Crear la actividad DisplayMessageActivity y abrir dicho archivo para dejarlo así:
package com.example.test; import android.os.Bundle; import android.app.Activity; import android.support.v4.app.NavUtils; import android.view.MenuItem; import android.content.Intent; import android.widget.TextView; public class DisplayMessageActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Traer el mensaje del intento Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); // Crear el text view TextView textView = new TextView(this); textView.setTextSize(40); textView.setText(message); // Poner el text view como actividad del layout setContentView(textView); } @Override public boolean onOptionsItemSelected(MenuItem item) { //Para navegación switch (item.getItemId()) { case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; } return super.onOptionsItemSelected(item); } }
3) Modificar el archivo string.xml que se encuentra en res/values/ y agregar lo siguiente:
<?xml version="1.0" encoding="utf-8"?> <resources> ... <string name="title_activity_display_message">Pantalla 2</string> </resources>
4) Ejecutar nuevamente la APP y ver si todo está bien, si tienen alguna duda o necesitan más funcionalidad ir a este link.