Anda di halaman 1dari 47

 ¿Qué es Android?

 Requisitos para programar


 Estructura de una aplicación
 Activities, intents y ciclo de vida
 Un sistema operativo basado en Linux para
dispositivos móviles
 Una máquina virtual Java (Dalvik)
 Un SDK y un framework de aplicación con
diversas librerías:
◦ 2D y 3D
◦ SQLite
◦ Media, Bluetooth, Cámara, GPS, brújula,
acelerómetro,…
 Una organización sin fines de lucro(ONG)
llamada «Open HandSet Alliance» formada
por más de 65 empresas del sector:
 Google
 Motorola
 HTC
 LG
 Samsung
 Hacer
 Alcatel
 Telefonica, T-Mobile, Sprint, China Mobile, NTT
 Intel, Nvidia, Huawei.
 Andy Rubin, norteamericano, es
Vicepresidente de Ingeniería en
Google y Director de Plataformas
Móviles, y es el flamante creador
de Android una plataforma de
código abierto para teléfonos
inteligentes y dispositivos
móviles, muchos lo consideran el
caballito de batalla de Google
para pisar fuerte en un mercado
dominado por Apple; actualmente
el 9% de los smartphones de
Estados Unidos poseen Android.
 Las novedades ligadas a Google nos
ocupan nuevamente en el andar
informativo de CódigoTecno. En esta
ocasión hay que mencionar la nueva
movida de personal realizada por los
chicos de Mountain View, quienes
acaban de sumar a sus filas al creador
del núcleo del lenguaje de
programación Java.
 El sujeto en cuestión se llama JAMES
GOSLING y se ha convertido en un
fichaje de oro para la gente del
buscador. Hay que tener en cuenta que
esta contratación no ha pasado
desapercibida para ORACLE, LA
EMPRESA DUEÑA DE JAVA Y SUN
MICROSYSTEMS, que hace tiempo se
encuentra en litigio con Google por una
supuesta violación de PATENTES
DURANTE LA CREACIÓN DE ANDROID
2.2.
 Eclipse
 Plugin ADT (Android Developer Tools)
 Android SDK
 Lenguaje de programación Java

http://developer.android.com/sdk/installing.html

o C y C++!!!
 Motodev Studio For Android: Herramienta
gratuita para Windows, Linux y Mac
 Descargando Eclipse:
 Descargando Android:
http://www.eclipse.org
http://developer.andro
id.com/sdk/index.html

 Descargando Motodev
Studio For Android 4.0:
http://developer.motor
ola.com/
 Aplicaciones
◦ Todas las aplicaciones tienen los mismos permisos
y las mismas restricciones
 Framework de aplicación
◦ Infraestructura que ofrece Android para no
reinventar la rueda:
 Componentes visuales
 Gestión del ciclo de vida de la aplicación
 Librerías
◦ Escritas en C y C++. Se acceden a través del
framework de aplicación
 Kernel
 Activities
 Recursos
◦ Layout
◦ Imágenes
◦ Strings
◦ Otros: animaciones, colores, menus, estilo, raw
 AndroidManifest.xml
 Cada una de las pantallas de una aplicación
 Para mostrar componentes visuales se
utilizan los layouts

public class HelloActivity extends Activity {


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
 Una jerarquía de vistas
◦ Componentes visuales (View)
◦ Contentedores (ViewGroup)
◦ Componentes visuales
 Label
 Button
 Image
 Date y Time Picker
 Map
 WebView
◦ Contenedores:
 LinearLayout
 TableLayout
 RelativeLayout
 TabLayout
 AbsoluteLayout (NO!!)
 El flujo de una aplicación se define como una
sucesión de Activities
 De la misma aplicación o entre diferentes
aplicaciones (colaborar!!!!!!)
 Las actividades comunican lo que quieren a
través de Intents
 Descripción de una acción a realizar
 Dos tipos de Intents:
◦ Explícitos: Se indica la actividad concreta
◦ Implícitos: Se indica lo que se quiere (mostrar un
navegador, enviar un correo,…)
 Se compone de:
◦ Acción: Qué se quiere hacer
◦ Uri: El dato principal (teléfono, id de un contacto)
◦ Categoría: Información adicional de la acción
◦ Extras (Bundle): un hash donde incluir más datos
 Ejemplos de acciones:
◦ ACTION_MAIN
◦ ACTION_VIEW String uri = "tel:964964964";
Intent intent = new Intent(Intent.ACTION_CALL);
◦ ACTION_PICK intent.setData(Uri.parse(uri));
startActivity(intent);
◦ ACTION_SEND
◦ ACTION_CALL

String asunto = "Asunto";


String texto = "Algo de texto";
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new
String[]{"contacto@decharlas.com"});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, asunto);
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, texto);
startActivity(Intent.createChooser(emailIntent, "Send your email in:"));
//startActivity(emailIntent);
 Una aplicación puede registrarse mediante
filtros a cualquier Intent.
 No hay aplicación más importante que otra
 La activity inicial también se inicia con un
Intent

<?xml version="1.0" encoding="utf-8"?>


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="es.uji.decharlas.android"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloActivity” android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MailActivity” android:label="@string/mail_title">
</activity>

<!– Otras actividades


. . . . . . . . .
-- >
</application>
</manifest>
 El paquete de la aplicación (nombre único)
 Componentes de la aplicación (actividades,
servicios, …)
 Qué Intents pueden pueden gestionar
 Permisos que necesita la aplicación para
funcionar: acceder a la posicion, utilizar la
cámara, recibir smss,…
 Librerías necesarias (p.e. Google Maps)
 Idea principal: minimizar consumo de
recursos
 Se divide el flujo de navegación mediante
Activities
 Las activities:
◦ se inician
◦ se paran
◦ se destruyen si ya no se necesitan
 Básicamente hay tres estados:
◦ Activo: Se está ejecutando y está visible en pantalla
◦ Pausada: Está todavía visible en pantalla pero no
tiene el foco
◦ Parada: No está visible en pantalla y ya no se está
ejecutando
Vida completa
Vida visible
Vida con foco
 onCreate: Crear vistas, popular listas. Recuperar
estado previo si lo hay
 onRestart:
 onStart:
 onResume: si hay algo parado volverlo a ejecutar.
Recuparar
 onPause: pausar todo aquello que requiera de
mucha CPU. Por ejemplo animaciones. Guardar
información necesaria pues pueden matar el
proceso sin previo aviso
 onStop:
 onDestroy:
 Android cuenta con dispositivos con
distint@s:
◦ Tamaños de pantalla
◦ Resoluciones de pantalla
◦ Relaciones de aspecto
◦ Densidad de píxels (píxels por pulgada)

Ejemplo: Una imagen de 200x200 pixels no se ve igual


de grande en todos los dispositivos

http://www.google.com/phone/
 Density Independent Pixel: Unidad de píxel
“virtual” para poder definir una interfaz de
usuario de forma independiente

1dip = 1 pixel en una pantalla de 160 dpi (punto por pulgada)

pixels = dips * (density / 160)

http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density
 No trabajar con Absolute Layout
 Tener recursos para distintas densidades
(low, medium, high)
 Usar dips y nunca pixels

Anda mungkin juga menyukai