• 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.
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
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.
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);
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 }
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:
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>
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(…)
{ @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));
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()
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)
• 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” />
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