Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduccion a Android

15,580 views

Published on

Materiales del Seminario "Introducción a Android" impartido por Paradigma Tecnológico y Javahispano el 25 de noviembre de 2010 en San Pablo CEU

Published in: Technology
  • Muy buwno para los que quieren empezar a meterse en el mundo android :)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Introduccion a Android

  1. 1. Introducción a
  2. 2. ¿Qué es y de dónde viene?
  3. 3. ¿De dónde viene? Operadores Móviles Fabricantes de teléfonos Semiconductores Comercialización Software
  4. 4. Línea cronológica 5 Nov, 2007 34 Líderes tecnológicos forman la Open Handset Alliance 12 Nov, 2007 Primeras pruebas de desarrolladores con el SDK 28 Ago, 2008 Se anuncia el Android Market 23 Sep, 2008 Primer teléfono Android 23 Sep, 2008 Android 1.0 SDK release 1 disponible 21 Oct, 2008 Código fuente liberado
  5. 5. ¿Qué es Android? <ul><li>No es sólo un Sistema Operativo. </li></ul><ul><li>Es un conjunto de software para dispositivos móviles que incluye: </li></ul><ul><ul><li>Sistema Operativo </li></ul></ul><ul><ul><li>Middleware </li></ul></ul><ul><ul><li>Aplicaciones </li></ul></ul><ul><li>Construido sobre un núcleo Linux 2.6. </li></ul><ul><li>Open Source. </li></ul><ul><li>Diseñado para poder acceder a todas las capacidades del dispositivo. </li></ul>
  6. 6. Arquitectura
  7. 7. Entorno de desarrollo <ul><li>Ingredientes: </li></ul><ul><ul><li>Android SDK http://developer.android.com/sdk/index.html </li></ul></ul><ul><ul><li>Java Development Kit (JDK 5 o 6) http://www.oracle.com/technetwork/java/javase/downloads/index.html </li></ul></ul><ul><ul><li>Java IDE (Eclipse 3.5 o 3.6) + Plug-in ADT http://www.eclipse.org/downloads/ http://developer.android.com/sdk/eclipse-adt.html </li></ul></ul><ul><li>Pasos: </li></ul><ul><ul><li>Instalar JDK y eclipse </li></ul></ul><ul><ul><li>Instalar plug-in ADT </li></ul></ul><ul><ul><li>Descargar SDK, descomprimir y configurar Eclipse </li></ul></ul><ul><ul><li>Descargar plataformas Android mediante el SDK Manager </li></ul></ul>
  8. 8. Emulador y AVD <ul><li>Emulador de Android muy completo </li></ul><ul><ul><li>Conectividad de red. </li></ul></ul><ul><ul><li>Simular SMS. </li></ul></ul><ul><ul><li>Simular GPS. </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>ADT plug-in lo integra en Eclipse </li></ul><ul><li>Android Virtual Device (AVD): simula el software y hardware específicos. </li></ul><ul><ul><li>Versión específica de Android. </li></ul></ul><ul><ul><li>Resolución de pantalla. </li></ul></ul><ul><ul><li>Densidad de píxeles. </li></ul></ul><ul><ul><li>Tarjeta SD. </li></ul></ul><ul><ul><li>Pantalla táctil </li></ul></ul><ul><ul><li>GPS </li></ul></ul><ul><ul><li>… </li></ul></ul>
  9. 9. Debug <ul><li>Dalvik Debug Monitor Service (DDMS) y ADB </li></ul><ul><ul><li>Ver procesos, pausarlo y activarlos. </li></ul></ul><ul><ul><li>Ver estado de la memoria y la pila. </li></ul></ul><ul><ul><li>Explorar el sistema de ficheros. </li></ul></ul><ul><ul><li>Push/Pull de ficheros. </li></ul></ul><ul><ul><li>Ver logs. </li></ul></ul><ul><li>ADT plug-in incluye una perspectiva DDMS </li></ul>
  10. 10. Ejemplo Entorno de Desarrollo
  11. 11. Artefactos principales <ul><li>Activity : equivale a una ventana de la aplicación. </li></ul><ul><li>Service : componente de una aplicación sin interfaz ejecutándose en background. </li></ul><ul><li>ContentProvider : mecanismo genérico para compartir datos entre aplicaciones. </li></ul><ul><li>BroadcastReceiver : permite escuchar eventos broadcast enviado por otras aplicaciones. </li></ul>
  12. 12. Activity <ul><li>Una Activity muestra una interfaz de usuario. </li></ul><ul><li>Un aplicación puede estar formada por uno o varios Activity. </li></ul><ul><li>Todas se declaran en AndroidManifest.xml </li></ul><ul><li>setContenView() --> asigna interfaz de usuario a dicha actividad </li></ul>import android.app.Activity; import android.os.Bundle; public class MyFirstActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView text = new TextView(this); setContentView(text); } } setContentView (R.layout.main);
  13. 13. Interfaz Gráfica <ul><li>Dos formas de construirlas: </li></ul><ul><ul><li>Código Java </li></ul></ul><ul><ul><li>Código XML </li></ul></ul><ul><li>Cada pantalla en un fichero. </li></ul><ul><li>Elementos gráficos: </li></ul><ul><ul><li>Widgets: TextView, EditText, ListView, Button, Checkbox, RadioButton …. </li></ul></ul><ul><ul><li>Layouts: FrameLayout, LinearLayout, RelativeLayout … </li></ul></ul><ul><li>Eclipse integra un editor XML. </li></ul>
  14. 14. Estructura ficheros <ul><li>/gen/R.java - Contiene ID de recursos contenidos en /res/ </li></ul><ul><li>/res/drawable / - imágenes de la aplicacion </li></ul><ul><li>/res/layout / - ficheros con la definición de la interfaz gráfica </li></ul><ul><li>/res/values / - otro recursos de la aplicación (strings.xml, styles.xml …) </li></ul><ul><li>AndroidManifest.xml - Contiene información sobre la aplicación: actividades, permisos, bibliotecas … </li></ul>
  15. 15. Ejemplo Hello, World!
  16. 16. Interacción con el usuario <ul><li>Android proporciona interfaces Listener en las que implementar acciones frente a eventos. </li></ul><ul><li>Asignar al elemento gráfico el Listener deseado e implementar el método. </li></ul><ul><li>Ejemplo: OnClickListener </li></ul>public class MyFirstActivity extends Activity implements OnClickListener { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button myButton = (Button)findViewById(R.id.MyButton); myButton.setOnClickListener(this); } } public void onClick (View v){ // Hacer lo que se quiera }
  17. 17. Ejemplo Evento OnClick
  18. 18. Arrancar una Activity. Intents <ul><li>Intents : Mecanismo para intercambiar mensajes entre Activities o aplicaciones. </li></ul><ul><li>Utilizado comúnmente para arrancar Activities. </li></ul>Intent myIntent = new Intent(MyFirstActivity.this, MySecondActivity.class); startActivity(myIntent); // Si queremos feedback de la nueva Activity startActivityForResult(myIntent, REQUEST_CODE ); <ul><li>Lanzar Activity de manera explícita: </li></ul>Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(“http://www.google.com”); startActivity(myIntent); <ul><li>Lanzar Activity de manera implícita: </li></ul>
  19. 19. Intent-Filter <ul><li>Definen que tipo de Intent lanzará la actividad en la que se definen </li></ul><ul><li>Etiquetas: </li></ul><ul><ul><li>action </li></ul></ul><ul><ul><li>category ALTERNATIVE, SELECTED_ALTERNATIVE, BROWSABLE, DEFAULT, GADGET, HOME, LAUNCHER </li></ul></ul><ul><ul><li>data </li></ul></ul><ul><ul><ul><li>android:host </li></ul></ul></ul><ul><ul><ul><li>android:mimetype </li></ul></ul></ul><ul><ul><ul><li>android:path </li></ul></ul></ul><ul><ul><ul><li>android:port </li></ul></ul></ul><ul><ul><ul><li>android:scheme </li></ul></ul></ul><ul><li>Se resuelven en tiempo de ejecución. Si varios encajan en la definición se muestra una lista de las posibilidades </li></ul><activity android:name=“.MyActivity” android:label=&quot;@string/app_name&quot;> <intent-filter> <action android:name=&quot;android.intent.action.MAIN&quot; /> <category android:name=&quot;android.intent.category.LAUNCHER&quot; /> </intent-filter> </activity>
  20. 20. Paso de parámetros. Intent. <ul><li>Un Intent puede llevar objetos de una actividad a otra. </li></ul><ul><li>Actividad Origen. Insertar objeto: </li></ul><ul><li>Actividad Destino. Recoger objeto: </li></ul>myIntent.putExtra(“CIUDAD”, “Madrid”); Intent intent = getIntent(); String s = intent.getStringExtra(“CIUDAD”);
  21. 21. Ejemplo Crear Nuevas Actividades
  22. 22. Broadcast Events <ul><li>Las aplicaciones pueden difundir eventos broadcast con forma de Intents </li></ul><ul><li>Registra un Broadcast Receiver para escuchar los eventos deseados </li></ul>Intent intent = new Intent (“com.paradigma.MENSAJE_RECIBIDO”); i.putExtra(“from”, “Ana”); sendBroacast(intent ); <receiver android:name=&quot;.MensajeRecibido&quot;> <intent-filter> <action android:name=&quot;com.paradigma.MENSAJE_RECIBIDO&quot;/> </intent-filter> </receiver> public class MensajeRecibido extends BroadcastReceiver { @Override public void onReceive (Context content, Intent intent){ // Hacer lo que se quiera } 2. Define <receiver> en tu AndroidManifest.xml (o bien por código java) 1. Crea tu clase heredando de BroadcastReceiver y sobreescribe el método onReceive(…)
  23. 23. Service <ul><li>Crear un servicio </li></ul>public class MyService extends Service { @Override public void onCreate () { // Inicializar variable y posible hebra } @Override public int onStartCommand (Intent intent, int flags, int startId) { // Lanzar hebra que haga el procesado return Service.START_STICKY; } <ul><li>Declararlo en AndroidManifest.xml </li></ul><service android:enabled=&quot;true&quot; android:name=&quot;.MyService&quot;/> <ul><li>Arrancar/Detener un servicio </li></ul>startService(new Intent(this, MyService.class)); stopService(new Intent(this, MyService.class));
  24. 24. Ciclo de Vida (I) <ul><li>Estados de una Activity: </li></ul><ul><ul><li>Active : en el primer plano y con foco </li></ul></ul><ul><ul><li>Paused : visible pero sin foco </li></ul></ul><ul><ul><li>Stopped : no visible </li></ul></ul><ul><ul><li>Inactive : no arrancada </li></ul></ul><ul><li>Transición entre estado marcadas por llamadas a los métodos: </li></ul><ul><ul><li>void onCreate(Bundle savedInstanceState) </li></ul></ul><ul><ul><li>void onStart() </li></ul></ul><ul><ul><li>void onRestart() </li></ul></ul><ul><ul><li>void onResume() </li></ul></ul><ul><ul><li>void onPause() </li></ul></ul><ul><ul><li>void on Stop() </li></ul></ul><ul><ul><li>void onDestroy() </li></ul></ul>
  25. 25. Ciclo de Vida (II)
  26. 26. Ejemplo Ciclo de Vida
  27. 27. Geolocalización
  28. 28. Servicio de Localización <ul><li>Servicios de localización: </li></ul><ul><ul><li>LocationManager </li></ul></ul><ul><ul><li>LocationProvider </li></ul></ul><ul><li>Obtener una instancia de LocationManager: </li></ul><ul><li>Seleccionar un LocationProvider: </li></ul><ul><li>Usar un criterio con los requisitos requeridos. </li></ul><ul><li>El emulador permite simular GPS </li></ul>LocationProvider locProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_COARSE); criteria.setPowerRequirement(Criteria.POWER_LOW); LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE)
  29. 29. Google Maps <ul><li>Mostrar ubicación sobre los mapas de Google </li></ul><ul><li>Obtener API Key http://code.google.com/intl/es-ES/android/add-ons/google-apis/mapkey.html </li></ul><ul><li>Crear clase heredando de MapActivity </li></ul><ul><li>Incluir un MapView en el layout </li></ul><ul><li>Incluir permisos en el AndroidManifest.xml </li></ul><ul><ul><li>INTERNET </li></ul></ul><ul><ul><li>ACCESS_FINE_LOCATION </li></ul></ul><ul><ul><li>ACCESS_COARSE_LOCATION </li></ul></ul><com.google.android.maps.MapView android:id= &quot;@+id/mapview&quot; android:layout_width= &quot;fill_parent&quot; android:layout_height= &quot;fill_parent“ android:clickable= &quot;true&quot; android:apiKey= “adsfoij40sg09ewATAasg90” />
  30. 30. Conclusiones
  31. 31. Conclusiones <ul><li>Android te proporciona todas la herramientas necesarias para programar una aplicación </li></ul><ul><li>SDK Multiplataforma </li></ul><ul><li>Licencia desarrollador (25USD) </li></ul><ul><li>Distribución a través del Android Market, Markets alternativos o de manera directa </li></ul><ul><li>Control de aplicaciones menos estricto que en otras plataformas </li></ul><ul><li>La valoración de los usuario influye en el posicionamiento de tu aplicación </li></ul>
  32. 32. ¿Preguntas?

×