$30 off During Our Annual Pro Sale. View Details »

Introducción a Android

Paradigma
November 25, 2010

Introducción a Android

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

Paradigma

November 25, 2010
Tweet

More Decks by Paradigma

Other Decks in Technology

Transcript

  1. Introducción a

  2. ¿Qué es y de dónde viene?

  3. ¿De dónde viene? Operadores Móviles Fabricantes de teléfonos Semiconductores Comercialización

    Software
  4. None
  5. ¿Qué es Android? • No es sólo un Sistema Operativo.

    • Es un conjunto de software para dispositivos móviles que incluye: – Sistema Operativo – Middleware – Aplicaciones • Construido sobre un núcleo Linux 2.6. • Open Source. • Diseñado para poder acceder a todas las capacidades del dispositivo.
  6. Arquitectura

  7. Entorno de desarrollo • Ingredientes: – Android SDK http://developer.android.com/sdk/index.html –

    Java Development Kit (JDK 5 o 6) http://www.oracle.com/technetwork/java/javase/downloads/index.html – Java IDE (Eclipse 3.5 o 3.6) + Plug-in ADT http://www.eclipse.org/downloads/ http://developer.android.com/sdk/eclipse-adt.html • Pasos: 1.Instalar JDK y eclipse 2.Instalar plug-in ADT 3.Descargar SDK, descomprimir y configurar Eclipse 4.Descargar plataformas Android mediante el SDK Manager
  8. Emulador y AVD • Emulador de Android muy completo –

    Conectividad de red. – Simular SMS. – Simular GPS. – … • ADT plug-in lo integra en Eclipse • Android Virtual Device (AVD): simula el software y hardware específicos. – Versión específica de Android. – Resolución de pantalla. – Densidad de píxeles. – Tarjeta SD. – Pantalla táctil – GPS – …
  9. Debug • Dalvik Debug Monitor Service (DDMS) y ADB –

    Ver procesos, pausarlo y activarlos. – Ver estado de la memoria y la pila. – Explorar el sistema de ficheros. – Push/Pull de ficheros. – Ver logs. • ADT plug-in incluye una perspectiva DDMS
  10. Ejemplo Entorno de Desarrollo

  11. Artefactos principales • Activity: equivale a una ventana de la

    aplicación. • Service: componente de una aplicación sin interfaz ejecutándose en background. • ContentProvider: mecanismo genérico para compartir datos entre aplicaciones. • BroadcastReceiver: permite escuchar eventos broadcast enviado por otras aplicaciones.
  12. Activity • Una Activity muestra una interfaz de usuario. •

    Un aplicación puede estar formada por uno o varios Activity. • Todas se declaran en AndroidManifest.xml • setContenView() --> asigna interfaz de usuario a dicha actividad 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. Interfaz Gráfica • Dos formas de construirlas: – Código Java

    – Código XML • Cada pantalla en un fichero. • Elementos gráficos: – Widgets: TextView, EditText, ListView, Button, Checkbox, RadioButton …. – Layouts: FrameLayout, LinearLayout, RelativeLayout … • Eclipse integra un editor XML.
  14. None
  15. Ejemplo Hello, World!

  16. Interacción con el usuario • Android proporciona interfaces Listener en

    las que implementar acciones frente a eventos. • Asignar al elemento gráfico el Listener deseado e implementar el método. • Ejemplo: OnClickListener 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. Ejemplo Evento OnClick

  18. Arrancar una Activity. Intents • Intents: Mecanismo para intercambiar mensajes

    entre Activities o aplicaciones. • Utilizado comúnmente para arrancar Activities. Intent myIntent = new Intent(MyFirstActivity.this, MySecondActivity.class); startActivity(myIntent); // Si queremos feedback de la nueva Activity startActivityForResult(myIntent,REQUEST_CODE);  Lanzar Activity de manera explícita: Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(“http://www.google.com”); startActivity(myIntent);  Lanzar Activity de manera implícita:
  19. Intent-Filter • Definen que tipo de Intent lanzará la actividad

    en la que se definen • Etiquetas: – action – category ALTERNATIVE, SELECTED_ALTERNATIVE, BROWSABLE, DEFAULT, GADGET, HOME, LAUNCHER – data • android:host • android:mimetype • android:path • android:port • android:scheme • Se resuelven en tiempo de ejecución. Si varios encajan en la definición se muestra una lista de las posibilidades <activity android:name=“.MyActivity” android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
  20. Paso de parámetros. Intent. • Un Intent puede llevar objetos

    de una actividad a otra. • Actividad Origen. Insertar objeto: • Actividad Destino. Recoger objeto: myIntent.putExtra(“CIUDAD”, “Madrid”); Intent intent = getIntent(); String s = intent.getStringExtra(“CIUDAD”);
  21. Ejemplo Crear Nuevas Actividades

  22. Broadcast Events • Las aplicaciones pueden difundir eventos broadcast con

    forma de Intents • Registra un Broadcast Receiver para escuchar los eventos deseados Intent intent = new Intent (“com.paradigma.MENSAJE_RECIBIDO”); i.putExtra(“from”, “Ana”); sendBroacast(intent); <receiver android:name=".MensajeRecibido"> <intent-filter> <action android:name="com.paradigma.MENSAJE_RECIBIDO"/> </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. Service • Crear un servicio 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; } • Declararlo en AndroidManifest.xml <service android:enabled="true" android:name=".MyService"/> • Arrancar/Detener un servicio startService(new Intent(this, MyService.class)); stopService(new Intent(this, MyService.class));
  24. Ciclo de Vida (I) • Estados de una Activity: –

    Active: en el primer plano y con foco – Paused: visible pero sin foco – Stopped: no visible – Inactive: no arrancada • Transición entre estado marcadas por llamadas a los métodos: – void onCreate(Bundle savedInstanceState) – void onStart() – void onRestart() – void onResume() – void onPause() – void on Stop() – void onDestroy()
  25. None
  26. Ejemplo Ciclo de Vida

  27. Geolocalización

  28. Servicio de Localización • Servicios de localización: – LocationManager –

    LocationProvider • Obtener una instancia de LocationManager: • Seleccionar un LocationProvider: • Usar un criterio con los requisitos requeridos. • El emulador permite simular GPS 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. Google Maps • Mostrar ubicación sobre los mapas de Google

    • Obtener API Key http://code.google.com/intl/es-ES/android/add-ons/google-apis/mapkey.html • Crear clase heredando de MapActivity • Incluir un MapView en el layout • Incluir permisos en el AndroidManifest.xml – INTERNET – ACCESS_FINE_LOCATION – ACCESS_COARSE_LOCATION <com.google.android.maps.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent“ android:clickable="true" android:apiKey=“adsfoij40sg09ewATAasg90” />
  30. Conclusiones

  31. Conclusiones • Android te proporciona todas la herramientas necesarias para

    programar una aplicación • SDK Multiplataforma • Licencia desarrollador (25USD) • Distribución a través del Android Market, Markets alternativos o de manera directa • Control de aplicaciones menos estricto que en otras plataformas • La valoración de los usuario influye en el posicionamiento de tu aplicación
  32. ¿Preguntas?