You are on page 1of 27

Introduccin al Desarrollo de Aplicaciones para Android

IET820 Programacin 2

Paul Vicioso, M.S. Universidad Tecnolgica de Santiago ctu!re de 20"2 #ctuali$ado% &oviem!re 20"'

Qu es Android?
#ndroid es un sistema o(erativo !asado en )inu* dise+ado (rinci(almente (ara dis(ositivos mviles con (antalla t,ctil, como tel-.onos inteligentes o ta!letas, inicialmente desarrollado (or #ndroid, Inc. /oogle res(ald econmicamente 0 m,s tarde com(r esta em(resa en 2001. 23i4i(edia5

Crecimiento de Android en el mercado

Versiones de Android en el mercado

6ata collected during a 78da0 (eriod ending on &ovem!er ", 20"'.

Componentes de Android

Proceso de compilacin en Android


9ava Source :ode 9ava Source :ode 9ava :om(iler 9ava :om(iler

9ava ;0te :ode

9ava ;0te :ode

9ava ;0te :ode on 9ava VM

6e* :om(iler

6alvi4 ;0te :ode

6alvi4 e*ecuta!le on 6alvi4 VM

Producciendo un archivo APK


9ava code .<ava javac ;0te code .class dx 6alvi4 e*e .de* ;0te code t?er .class .iles aapt

=*ml> #ndroidMani.est.*ml
=str>

.a(4

@esources
7

Componentes de una aplicacin Android


#ctivities Services :ontent Providers Intents ;roadcast @eceivers

Activities
)as actividades 2#ctivities5 re(resentan el com(onente (rinci(al de la inter.a$ gr,.ica de una a(licacin #ndroid. Se (uede (ensar en una actividad como el elemento an,logo a una ventana en cualAuier otro lengua<e visual.

Activity (continuacin
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... } @Override protected void onPause() { super.onPause(); ... } ... }

!ervices
)os servicios son com(onentes sin inter.a$ gr,.ica Aue se e<ecutan en segundo (lano. En conce(to, son e*actamente iguales a los servicios (resentes en cualAuier otro sistema o(erativo. )os servicios (ueden reali$ar cualAuier ti(o de accin, (or e<em(lo actuali$ar datos, lan$ar noti.icaciones, o incluso mostrar elementos visuales 2(.e<. #ctivities5 si se necesita en algBn momento la interaccin con del usuario. )a a(licacin Aue est, e<ecutando la mBsica en el .ondo es un e<em(lo de un servicio, aBn cuando no tiene inter.a$, sigue .uncionando.

Content Providers
Un :ontent Provider es el mecanismo Aue se ?a de.inido en #ndroid (ara com(artir datos entre a(licaciones. Mediante estos com(onentes es (osi!le com(artir determinados datos de nuestra a(licacin sin mostrar detalles so!re su almacenamiento interno, su estructura, o su im(lementacin. 6e la misma .orma, nuestra a(licacin (odr, acceder a los datos de otra a(licacin a trav-s de los :ontent Provider Aue se ?a0an de.inido. Por e<em(lo, el sistema #ndroid (ro(orciona un :ontent Provider Aue gestiona la in.ormacin de contactos del usuario. :omo tal, cualAuier a(licacin con los (ermisos adecuados (uede consultar (arte del :ontent Provider 2como ContactsContract.Data5 (ara leer 0 escri!ir in.ormacin so!re una (ersona en (articular.

Intents
Un intent es el elemento !,sico de comunicacin entre los distintos com(onentes #ndroid. Se (ueden entender como los mensa<es o (eticiones Aue son enviados entre los distintos com(onentes de una a(licacin o entre distintas a(licaciones. Mediante un intent se (uede mostrar una actividad desde cualAuier otra, iniciar un servicio, enviar un mensa<e !roadcast, iniciar otra a(licacin, etc.

Intent intent = new Intent(this, AnotherClass.class); EditText editText = (EditText) findViewById(R.id.edit_message); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent);

Intents a otras aplicaciones


// Uri data to specify the telephone number Uri number = Uri.parse("tel:8091234567"); Intent callIntent = new Intent(Intent.ACTION_DIAL, number); // Map point based on latitude/longitude // z param is zoom level Uri location = Uri.parse("geo:37.422219,-122.08364?z=14"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, location); // View a web page: Uri webpage = Uri.parse("http://www.android.com"); Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);

Intents a otras aplicaciones (cont"


// Verify that there is an activity available that // can respond to the intent PackageManager packageManager = getPackageManager(); List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0); boolean isIntentSafe = activities.size() > 0; // To show the chooser Intent intent = new Intent(Intent.ACTION_SEND); // Always use string resources for UI text. // This says something like "Share this photo with" String title = getResources().getString(R.string.chooser_title); // Create and start the chooser Intent chooser = Intent.createChooser(intent, title); startActivity(chooser);

#roadcast $eceivers
Un !roadcast receiver es un com(onente destinado a detectar 0 reaccionar ante determinados mensa<es o eventos glo!ales generados (or el sistema 2(or e<em(lo% C;aterDa !a<aE, CSMS reci!idoE, CTar<eta S6 insertadaE, F5 o (or otras a(licaciones 2cualAuier a(licacin (uede generar mensa<es 2intents, en terminologDa #ndroid5 !roadcast, es decir, no dirigidos a una a(licacin concreta sino a cualAuiera Aue Auiera escuc?arlo5.

%id&ets
)os Gidgets son elementos visuales, normalmente interactivos, Aue (ueden mostrarse en la (antalla (rinci(al 2?ome screen5 del dis(ositivo #ndroid 0 reci!ir actuali$aciones (eridicas. Permiten mostrar in.ormacin de la a(licacin al usuario directamente so!re la (antalla (rinci(al.

%id&ets (cont"

Vie'
)os o!<etos vieG son los com(onentes !,sicos con los Aue se constru0e la inter.a$ gr,.ica de la a(licacin, an,logo (or e<em(lo a los controles de 9ava o .&ET. 6e inicio, #ndroid (one a nuestra dis(osicin una gran cantidad de controles !,sicos, como cuadros de te*to, !otones, listas des(lega!les o im,genes, aunAue tam!i-n e*iste la (osi!ilidad de e*tender la .uncionalidad de estos controles !,sicos o crear nuestros (ro(ios controles (ersonali$ados.

Archivo Android(ani)est"*ml
:ontiene la de.inicin en HM) de los as(ectos (rinci(ales de la a(licacin, como (or e<em(lo su identi.icacin 2nom!re, versin, icono, F5, sus com(onentes 2(antallas, mensa<es, F5, o los (ermisos necesarios (ara su e<ecucin.

(enus
)os menBs son una (arte esencial de casi cualAuier sistema o(erativo. En los sistemas mviles donde est, limitado el es(acio de la (antalla, <uegan un (a(el aBn m,s im(ortante. #ndroid (ro(orciona mecanismos similares (ara los menBs como lo ?ace (ara otros elementos visuales, (or lo Aue es (osi!le se(arar el cdigo de la a(licacin de la de.inicin del menB usando HM).

+ipos di)erentes de men,sMens Principales. )os m,s ?a!ituales, a(arecen en la $ona in.erior de la (antalla al (ulsar el !otn ImenBJ del tel-.ono. Submens. Son menBs secundarios Aue se (ueden mostrar al (ulsar so!re una o(cin de un menB (rinci(al. Mens Contextuales. Ktiles en muc?as ocasiones, a(arecen al reali$ar una (ulsacin larga so!re algBn elemento de la (antalla.

Valores de los sensores


SENSOR-TYPE VALUE COUNT VALUE COMPOSITION value/01 - 2ateral value/31 - 2on&itudinal value/41 - Vertical value/01 - A:imuth value/31 - Pitch value/41 - $oll COMMENTARY Acceleration alon& three a*es in m5s4" +he !ensor (ana&er includes a set o) &ravity constants o) the )orm !ensor(ana&er"6$AVI+789 Device orientation in de&rees alon& three a*es" TYPE_ACCELEROMETER .

TYPE_GYROSCOPE

TYPE_ LIGHT

value/01 - Illumination

(easured in lu*" +he !ensor (ana&er includes a set o) constants representin& di))erent standard illuminations o) the )orm !ensor(ana&er"2I6;+89 Am<ient ma&netic )ield measured in microteslas (=+ "

TYPE_MAGNETIC_FIELD

value/01 - 2ateral value/31 - 2on&itudinal value/41 - Vertical value/01 - A:imuth value/31 - $oll value/41 - Pitch value/01 - Pressure value/01 - Distance value/01 - +emperature

Device orientation in de&rees alon& three a*es"

TYPE_ORIENTATION

TYPE_PRESSURE TYPE_PROXIMITY TYPE_TEMPERATURE

3 3 3

(easured in >ilopascals (KP " (easured in meters" (easured in de&rees Celsius"

!inta*is para llamar Intents usando ?$I@s


9ava 2original #ctivit05
Uri uri = Uri.parse("foo://bar.example.com/baz"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);

HM) 2#ndroidMani.est.*ml5
=intent8.ilter> =action android%nameLMandroid.intent.action.VIE3M N> =categor0 android%nameLMandroid.intent.categor0.6EO#U)TMN> =data android%sc?emeLM.ooM android%?ostLM!ar.e*am(le.comM N> =Nintent8.ilter>

Al&unos ?$I@s muy usados


Action
Intent.#:TI &P:#)) Intent.#:TI &P6I#) Intent.#:TI &P6I#) Intent.#:TI &PVIE3 Intent.#:TI &PVIE3 Intent.#:TI &PVIE3 Intent.#:TI &PVIE3 Intent.#:TI &P3E;PSE#@:R

URI
tel%(?onePnum!er tel%(?onePnum!er voicemail% geo%lat,long geo%0,0QALaddress ?tt(%NNurl ?tt(s%NNurl (lainPte*t

Meaning
(ens (?one a((lication and calls (?onePnum!er. (ens (?one a((lication and dials 2!ut doesnJt call5 (?onePnum!er. (ens (?one a((lication and dials 2!ut doesnJt call5 t?e voice mail num!er. (ens t?e ma(s a((lication centered on 2lat, long5. (ens t?e ma(s a((lication centered on t?e s(eci.ied address. (ens t?e !roGser a((lication to t?e s(eci.ied address. (ens t?e !roGser a((lication to t?e s(eci.ied address. (ens t?e !roGser a((lication and uses /oogle searc? .or given string.

You might also like