SlideShare una empresa de Scribd logo
1 de 49
Google Technology User Group
Android Bootcamp 101:
 Mi primera aplicación
        Android
Archivos necesarios

Por favor, copie a partir del pen drive o CD la carpeta
Android Bootcamp a su escritorio (o para donde
prefiera)
¿Que es Android?
Componentes de una aplicación

● Activities
       ■Representa una Pantalla con UI
       ■Son independientes entre ellas
       ■Se pueden referenciar Activities de otras aplicaciones (vía Intent)
       ■Extienden de la clase Activity

●   Services
       ■Corren en el background
       ■Para porcesos complejos o para servir a llamadas remotas
       ■No proveen UI
       ■Extienden de la clase Service

●   Content Providers
      ■Comparten un conjunto de información de la aplicación
      ■Pueden leer/escribir informacion privada de la aplicación
      ■Extienden de la clase ContentProvider

●   Broadcast Recievers
       ■Responden a “mensajes generales”
       ■Pueden crear notificaciones en la barra de estado
       ■Extienden de la clase BroadcastReciever
Intents
● Los activities, Service y Broadcast Recivers se activan
mediante mensajes llamados Intents que pueden ser de la
propia aplicación o de otras.

●Para Activities y Services los intents se configuran con una
Accion (VIEW , SEND; etac.) y una URI que especifica la
ubicacion de la informacion sobre la que se va a actuar.

●Para los Broadcast Recievers los intents incluyen unicamente
el “mensaje” que se envió.
Manifest
●   AndroidManifest.xml , en el carpeta raiz de la aplicación

●Registra todos los componentes que conforman la aplicación
y sus capacidades de recibir intents.

Identifica los permisos que requiere la aplicación.
●


Define el nivel mínimo de API a utilizar.
●


●Define requerimientos de hardware o software requeridos por
la aplicación.

●Define los APIs ( ademas del Android Framework API) con
los que la aplicación va a interactuar.
Activity Lifecycle
Objetivos
1. Instalar IDE (Eclipse).
2. Instalar el Plugin ADT.
3. Configurar al menos un “Virtual Device” (AVD) o
   “Hardware Device”.
4. Crear un Proyecto Android.
5. Construir una aplicación Android.
6. Desplegar la aplicación en un dispositivo
Instalación del Plugin ADT

En Eclipse:

Help -> Install New Software.... -> Add

Name: Android Plugin
Archive: ADT-18.0.0.zip
(en la carpeta que compiaron)

[x] Developer Tools
[ ] DESMARQUE "Check all update sites..."

Next, next, next....., restart.
Crear un Virtual Device

Window -> AVD Manager -> Virtual Devices->New

Name: MyAVD
Target: Android 2.1
Skin: HVGA

Create AVD

Close
Proyecto Hello World

File -> New -> Android Project
Project Name: HelloWorld
Build Target: Android 2.1
Properties:
 Application Name: HelloWorld
 Package Name: org.gtugs.bsas
 Create Activity: HelloActivity
src/com/example/HelloActivity.java


- onCreate()

- Bundle savedInstanceState

- setContentView(R.layout.main);
res/layout/main.xml




Define el layout de la Activity
res/layout/main.xml

LinearLayout
res/layout/main.xml


       android:orientation="vertical"

android:layout_width / android:layout_height

                "fill_parent"
              "wrap_content“

            String Resources:
       en Java: R.string.string_name
       en XML:@string/string_name
res/values/strings.xml




Cadenas de caracteres de la aplicación
Prueba




  Project -> Run

(Ctrl + Shift + F11)
Esto es una Activity
Upgrade: Una lista
Crear res/layout/list_item.xml [1]

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp" >
</TextView>



Define el layout de cada iten en la lista
Modificar res/layout/main.xml [2]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:id="@+id/mylistview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
HelloActivity.java [3a]
public class HelloActivity extends Activity i {
  static final String[] COUNTRIES = { "Brazil",
     "Argentina","Mexico" };

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

    ListView lv = (ListView) findViewById(R.id.mylistview);
    lv.setAdapter(new ArrayAdapter<String>(this,
       R.layout.list_item,
       COUNTRIES));

}
Prueba




  Project -> Run

(Ctrl + Shift + F11)
HelloActivity.java [3b]
public class HelloActivity extends Activity implements OnItemClickListener {
  static final String[] COUNTRIES = { "Brazil",
     "Argentina","Mexico" };
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  ListView lv = (ListView) findViewById(R.id.mylistview);
  lv.setAdapter(new ArrayAdapter<String>(this,
     R.layout.list_item,
     COUNTRIES));
  lv.setOnItemClickListener(this);
}
public void onItemClick(AdapterView<?> parent, View view,
  int pos, long id) {
   Toast.makeText(getApplicationContext(),
     ((TextView) view).getText(),
     Toast.LENGTH_SHORT).show();
}
Prueba




  Project -> Run

(Ctrl + Shift + F11)
EditText y Botón para Añadir
Modificar main.xml [4]

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
  <LinearLayout
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="horizontal">
     <EditText
       android:id="@+id/mytextview"
       android:layout_width="200sp"
       android:layout_height="wrap_content"
       android:text=""/>
     <Button
       android:id="@+id/mybutton"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Añadir"/>
  </LinearLayout>
  <ListView
     android:id="@+id/mylistview"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"/>
</LinearLayout>
Prueba




  Project -> Run

(Ctrl + Shift + F11)
Ahora vamos a implementar...
HelloActivity.java [5]

package com.example.helloworld;

import ...

public class HelloActivity extends Activity
    implements OnItemClickListener, OnClickListener {
    private List<String> countries =
       new ArrayList<String>();
    private ArrayAdapter<String> adapter;
    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       countries.add("Mexico");
       ListView lv = (ListView)
          findViewById(R.id.mylistview);
       adapter = new ArrayAdapter<String>(
          this, R.layout.list_item, countries);
       lv.setAdapter(adapter);
       lv.setOnItemClickListener(this);
       Button btn = (Button) findViewById(R.id.mybutton);
       btn.setOnClickListener(this);
}
...
... HelloActivity.java [5]




public void onItemClick(AdapterView<?> parent,
  View view, int pos, long id) {
  Toast.makeText(getApplicationContext(),
     ((TextView)view).getText(),
  Toast.LENGTH_SHORT).show();
}

public void onClick(View view) {
  EditText et = (EditText) findViewById(R.id.mytextview);
  countries.add(et.getText().toString());
  adapter.notifyDataSetChanged();
}
Prueba




  Project -> Run

(Ctrl + Shift + F11)
Experimento


Cerrar la aplicación (oprimiendo "Home")

 Arrancarla nuevamente desde el menú
            de aplicaciones.

        ¿Cual es el resultado?
Experimento




El contenido se queda en la lista!

      ¿Por qué pasa eso?
Experimento




       Porque Android hace
 "Activity Lifecycle Management"
y puede mantener activas o cerrar
 Activities conforme la necesidad
Experimento 2


Cerrar la aplicación (oprimindo "Home")
 Hacer Force Close a traves del menú
         Menu -> Manage Apps ->
         Hello World -> Force Close

Arrancarla nuevamente desde el menú
           de aplicaciones.
        ¿Cual es el resultado?
Experimento 2




    Resultado:

El contenido se fué.
¿Como grabar el contenido de una
   manera que sea persistente
 entre sesiones de mi aplicación?
Fácil -> SharedPreferences

Completo -> Base de datos SQLite
SharedPreferences
SharedPreferences sp =
getPreferences(MODE_PRIVATE);

Leer:
String x = sp.getString("key", "defaultvalue");


Grabar:
SharedPreferences.Editor spe = sp.edit();
spe.putString("key", "value");
spe.commit();
HelloActivity.java [6]

void saveData() {
  SharedPreferences.Editor spe =
     getPreferences(MODE_PRIVATE).edit();
  StringBuilder sb = new StringBuilder();
  for (int i = 0; i < countries.size(); i++)
     sb.append( ((i == 0) ? "" : ";")
        + countries.get(i));
  spe.putString("countries", sb.toString());
  spe.commit();
}
void loadData() {
  SharedPreferences sp =
     getPreferences(MODE_PRIVATE);
  String countryList =
  sp.getString("countries",
     "Argentina;Brazil;Chile;Mexico");
  for (String country : countryList.split(";"))
     countries.add(country);
}
HelloActivity.java [6]


public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  loadData();
  ListView lv = (ListView)
  findViewById(R.id.mylistview);
  adapter = new ArrayAdapter<String>(this,
  R.layout.list_item, countries);
  lv.setAdapter(adapter);
  lv.setOnItemClickListener(this);
  Button btn = (Button) findViewById(R.id.mybutton);
  btn.setOnClickListener(this);
}
HelloActivity.java [6]




public void onClick(View view) {
  EditText et = (EditText)
  findViewById(R.id.mytextview);
  countries.add(et.getText().toString());
  adapter.notifyDataSetChanged();

    saveData();
}
Prueba




  Project -> Run

(Ctrl + Shift + F11)
El "Toast" que aparece cuando se hace
      click en la lista es aburrido...
¿Como se puede implementar un Web
    Search en lugar del Toast?
... HelloActivity.java [7]




public void onItemClick(AdapterView<?> parent,
  View view, int pos, long id) {
  Uri uri =
     Uri.parse("http://en.wikipedia.org/" +
     "wiki/" +
  Uri.encode(countries.get(pos), null));
  Intent intent = new Intent(
  Intent.ACTION_VIEW, uri);
  startActivity(intent);
}
¿Como seguir?
http://developer.android.com/


     ¿Preguntas?
Muchas Gracias

                www.gtug.com.ar

                   @gtugbsas
                   gplus.to/gtugbsas

                   @juanmab
                   gplus.to/juanma

                   @jirungaray
                   gplus.to/jirungaray


   Google Technology User Group Argentina

Más contenido relacionado

La actualidad más candente

Carlos blanco resumen mm android controles 10pag v5
Carlos blanco resumen mm android controles 10pag v5Carlos blanco resumen mm android controles 10pag v5
Carlos blanco resumen mm android controles 10pag v5Carlos Blanco
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"Alberto Ruibal
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterAdolfo Sanz De Diego
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"www.encamina.com
 
android3Introduccion
android3Introduccionandroid3Introduccion
android3Introduccionoscar7525
 
Tutorial 1 android
Tutorial 1 androidTutorial 1 android
Tutorial 1 androidlibidinosa
 

La actualidad más candente (7)

Carlos blanco resumen mm android controles 10pag v5
Carlos blanco resumen mm android controles 10pag v5Carlos blanco resumen mm android controles 10pag v5
Carlos blanco resumen mm android controles 10pag v5
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipster
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"
 
android3Introduccion
android3Introduccionandroid3Introduccion
android3Introduccion
 
Tutorial 1 android
Tutorial 1 androidTutorial 1 android
Tutorial 1 android
 
APLICACIONES CREADAS PARA ANDROID
APLICACIONES CREADAS PARA ANDROIDAPLICACIONES CREADAS PARA ANDROID
APLICACIONES CREADAS PARA ANDROID
 

Destacado

Destacado (7)

Aplicacion android
Aplicacion androidAplicacion android
Aplicacion android
 
Basic Intro to android(Will be updating later)
Basic Intro to android(Will be updating later)Basic Intro to android(Will be updating later)
Basic Intro to android(Will be updating later)
 
Dev Fest 2015 Keynote
Dev Fest 2015 KeynoteDev Fest 2015 Keynote
Dev Fest 2015 Keynote
 
Android Wear
Android WearAndroid Wear
Android Wear
 
Android App development III
Android App development IIIAndroid App development III
Android App development III
 
Mini curso Android
Mini curso AndroidMini curso Android
Mini curso Android
 
Kotlin で android アプリを作ってみた
Kotlin で android アプリを作ってみたKotlin で android アプリを作ってみた
Kotlin で android アプリを作ってみた
 

Similar a Android Bootcamp 101: Mi primera aplicación

Android Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG UruguayAndroid Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG Uruguaygtuguruguay
 
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con AndroidTutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con AndroidLuis Ernesto Castillo Alfaro
 
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con AndroidTutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con AndroidLuis Ernesto Castillo Alfaro
 
Intro. a Android Instituto Bosc de la Coma en Olot
Intro. a Android Instituto Bosc de la Coma en OlotIntro. a Android Instituto Bosc de la Coma en Olot
Intro. a Android Instituto Bosc de la Coma en Olothojalataverde
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidAlberto Ruibal
 
Instrucciones y estructuras
Instrucciones y estructurasInstrucciones y estructuras
Instrucciones y estructurasFernand Bernowly
 
TEMAS DE JAVA DEL 11 AL 23
TEMAS DE JAVA DEL 11 AL 23TEMAS DE JAVA DEL 11 AL 23
TEMAS DE JAVA DEL 11 AL 23equipotresamp
 
Taller Práctico de Android
Taller Práctico de AndroidTaller Práctico de Android
Taller Práctico de AndroidJavier Muñoz
 
Deletreando Android
Deletreando AndroidDeletreando Android
Deletreando Androidjezabelink
 
Controles Básicos de Interfaz en Android
Controles Básicos de Interfaz en AndroidControles Básicos de Interfaz en Android
Controles Básicos de Interfaz en AndroidEmerson Garay
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Gabriela Bosetti
 
Java ME (Micro Edition)
Java ME (Micro Edition) Java ME (Micro Edition)
Java ME (Micro Edition) Anderson Rubio
 
Xamarin - Aplicaciones Móviles con .Net
Xamarin - Aplicaciones Móviles con .Net Xamarin - Aplicaciones Móviles con .Net
Xamarin - Aplicaciones Móviles con .Net Andrés Londoño
 

Similar a Android Bootcamp 101: Mi primera aplicación (20)

Introduccion a Android
Introduccion a AndroidIntroduccion a Android
Introduccion a Android
 
Android Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG UruguayAndroid Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG Uruguay
 
Clase 1 Programacion Android
Clase 1 Programacion AndroidClase 1 Programacion Android
Clase 1 Programacion Android
 
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con AndroidTutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
 
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con AndroidTutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
 
Clases de Programación Android
Clases de Programación AndroidClases de Programación Android
Clases de Programación Android
 
Preguntasviri
PreguntasviriPreguntasviri
Preguntasviri
 
Android Pres3
Android Pres3Android Pres3
Android Pres3
 
Intro. a Android Instituto Bosc de la Coma en Olot
Intro. a Android Instituto Bosc de la Coma en OlotIntro. a Android Instituto Bosc de la Coma en Olot
Intro. a Android Instituto Bosc de la Coma en Olot
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
 
Instrucciones y estructuras
Instrucciones y estructurasInstrucciones y estructuras
Instrucciones y estructuras
 
TEMAS DE JAVA DEL 11 AL 23
TEMAS DE JAVA DEL 11 AL 23TEMAS DE JAVA DEL 11 AL 23
TEMAS DE JAVA DEL 11 AL 23
 
Taller Práctico de Android
Taller Práctico de AndroidTaller Práctico de Android
Taller Práctico de Android
 
Deletreando Android
Deletreando AndroidDeletreando Android
Deletreando Android
 
Controles Básicos de Interfaz en Android
Controles Básicos de Interfaz en AndroidControles Básicos de Interfaz en Android
Controles Básicos de Interfaz en Android
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
 
Android master class
Android master classAndroid master class
Android master class
 
Curso Desarrollo Android
Curso Desarrollo AndroidCurso Desarrollo Android
Curso Desarrollo Android
 
Java ME (Micro Edition)
Java ME (Micro Edition) Java ME (Micro Edition)
Java ME (Micro Edition)
 
Xamarin - Aplicaciones Móviles con .Net
Xamarin - Aplicaciones Móviles con .Net Xamarin - Aplicaciones Móviles con .Net
Xamarin - Aplicaciones Móviles con .Net
 

Último

Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 

Último (20)

Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 

Android Bootcamp 101: Mi primera aplicación

  • 2. Android Bootcamp 101: Mi primera aplicación Android
  • 3. Archivos necesarios Por favor, copie a partir del pen drive o CD la carpeta Android Bootcamp a su escritorio (o para donde prefiera)
  • 5. Componentes de una aplicación ● Activities ■Representa una Pantalla con UI ■Son independientes entre ellas ■Se pueden referenciar Activities de otras aplicaciones (vía Intent) ■Extienden de la clase Activity ● Services ■Corren en el background ■Para porcesos complejos o para servir a llamadas remotas ■No proveen UI ■Extienden de la clase Service ● Content Providers ■Comparten un conjunto de información de la aplicación ■Pueden leer/escribir informacion privada de la aplicación ■Extienden de la clase ContentProvider ● Broadcast Recievers ■Responden a “mensajes generales” ■Pueden crear notificaciones en la barra de estado ■Extienden de la clase BroadcastReciever
  • 6. Intents ● Los activities, Service y Broadcast Recivers se activan mediante mensajes llamados Intents que pueden ser de la propia aplicación o de otras. ●Para Activities y Services los intents se configuran con una Accion (VIEW , SEND; etac.) y una URI que especifica la ubicacion de la informacion sobre la que se va a actuar. ●Para los Broadcast Recievers los intents incluyen unicamente el “mensaje” que se envió.
  • 7. Manifest ● AndroidManifest.xml , en el carpeta raiz de la aplicación ●Registra todos los componentes que conforman la aplicación y sus capacidades de recibir intents. Identifica los permisos que requiere la aplicación. ● Define el nivel mínimo de API a utilizar. ● ●Define requerimientos de hardware o software requeridos por la aplicación. ●Define los APIs ( ademas del Android Framework API) con los que la aplicación va a interactuar.
  • 9. Objetivos 1. Instalar IDE (Eclipse). 2. Instalar el Plugin ADT. 3. Configurar al menos un “Virtual Device” (AVD) o “Hardware Device”. 4. Crear un Proyecto Android. 5. Construir una aplicación Android. 6. Desplegar la aplicación en un dispositivo
  • 10. Instalación del Plugin ADT En Eclipse: Help -> Install New Software.... -> Add Name: Android Plugin Archive: ADT-18.0.0.zip (en la carpeta que compiaron) [x] Developer Tools [ ] DESMARQUE "Check all update sites..." Next, next, next....., restart.
  • 11. Crear un Virtual Device Window -> AVD Manager -> Virtual Devices->New Name: MyAVD Target: Android 2.1 Skin: HVGA Create AVD Close
  • 12. Proyecto Hello World File -> New -> Android Project Project Name: HelloWorld Build Target: Android 2.1 Properties: Application Name: HelloWorld Package Name: org.gtugs.bsas Create Activity: HelloActivity
  • 13. src/com/example/HelloActivity.java - onCreate() - Bundle savedInstanceState - setContentView(R.layout.main);
  • 16. res/layout/main.xml android:orientation="vertical" android:layout_width / android:layout_height "fill_parent" "wrap_content“ String Resources: en Java: R.string.string_name en XML:@string/string_name
  • 18. Prueba Project -> Run (Ctrl + Shift + F11)
  • 19. Esto es una Activity
  • 21. Crear res/layout/list_item.xml [1] <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:textSize="16sp" > </TextView> Define el layout de cada iten en la lista
  • 22. Modificar res/layout/main.xml [2] <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@+id/mylistview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
  • 23. HelloActivity.java [3a] public class HelloActivity extends Activity i { static final String[] COUNTRIES = { "Brazil", "Argentina","Mexico" }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ListView lv = (ListView) findViewById(R.id.mylistview); lv.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES)); }
  • 24. Prueba Project -> Run (Ctrl + Shift + F11)
  • 25. HelloActivity.java [3b] public class HelloActivity extends Activity implements OnItemClickListener { static final String[] COUNTRIES = { "Brazil", "Argentina","Mexico" }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ListView lv = (ListView) findViewById(R.id.mylistview); lv.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES)); lv.setOnItemClickListener(this); } public void onItemClick(AdapterView<?> parent, View view, int pos, long id) { Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); }
  • 26. Prueba Project -> Run (Ctrl + Shift + F11)
  • 27. EditText y Botón para Añadir
  • 28. Modificar main.xml [4] <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <EditText android:id="@+id/mytextview" android:layout_width="200sp" android:layout_height="wrap_content" android:text=""/> <Button android:id="@+id/mybutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Añadir"/> </LinearLayout> <ListView android:id="@+id/mylistview" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout>
  • 29. Prueba Project -> Run (Ctrl + Shift + F11)
  • 30. Ahora vamos a implementar...
  • 31. HelloActivity.java [5] package com.example.helloworld; import ... public class HelloActivity extends Activity implements OnItemClickListener, OnClickListener { private List<String> countries = new ArrayList<String>(); private ArrayAdapter<String> adapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); countries.add("Mexico"); ListView lv = (ListView) findViewById(R.id.mylistview); adapter = new ArrayAdapter<String>( this, R.layout.list_item, countries); lv.setAdapter(adapter); lv.setOnItemClickListener(this); Button btn = (Button) findViewById(R.id.mybutton); btn.setOnClickListener(this); } ...
  • 32. ... HelloActivity.java [5] public void onItemClick(AdapterView<?> parent, View view, int pos, long id) { Toast.makeText(getApplicationContext(), ((TextView)view).getText(), Toast.LENGTH_SHORT).show(); } public void onClick(View view) { EditText et = (EditText) findViewById(R.id.mytextview); countries.add(et.getText().toString()); adapter.notifyDataSetChanged(); }
  • 33. Prueba Project -> Run (Ctrl + Shift + F11)
  • 34. Experimento Cerrar la aplicación (oprimiendo "Home") Arrancarla nuevamente desde el menú de aplicaciones. ¿Cual es el resultado?
  • 35. Experimento El contenido se queda en la lista! ¿Por qué pasa eso?
  • 36. Experimento Porque Android hace "Activity Lifecycle Management" y puede mantener activas o cerrar Activities conforme la necesidad
  • 37. Experimento 2 Cerrar la aplicación (oprimindo "Home") Hacer Force Close a traves del menú Menu -> Manage Apps -> Hello World -> Force Close Arrancarla nuevamente desde el menú de aplicaciones. ¿Cual es el resultado?
  • 38. Experimento 2 Resultado: El contenido se fué.
  • 39. ¿Como grabar el contenido de una manera que sea persistente entre sesiones de mi aplicación?
  • 40. Fácil -> SharedPreferences Completo -> Base de datos SQLite
  • 41. SharedPreferences SharedPreferences sp = getPreferences(MODE_PRIVATE); Leer: String x = sp.getString("key", "defaultvalue"); Grabar: SharedPreferences.Editor spe = sp.edit(); spe.putString("key", "value"); spe.commit();
  • 42. HelloActivity.java [6] void saveData() { SharedPreferences.Editor spe = getPreferences(MODE_PRIVATE).edit(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < countries.size(); i++) sb.append( ((i == 0) ? "" : ";") + countries.get(i)); spe.putString("countries", sb.toString()); spe.commit(); } void loadData() { SharedPreferences sp = getPreferences(MODE_PRIVATE); String countryList = sp.getString("countries", "Argentina;Brazil;Chile;Mexico"); for (String country : countryList.split(";")) countries.add(country); }
  • 43. HelloActivity.java [6] public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); loadData(); ListView lv = (ListView) findViewById(R.id.mylistview); adapter = new ArrayAdapter<String>(this, R.layout.list_item, countries); lv.setAdapter(adapter); lv.setOnItemClickListener(this); Button btn = (Button) findViewById(R.id.mybutton); btn.setOnClickListener(this); }
  • 44. HelloActivity.java [6] public void onClick(View view) { EditText et = (EditText) findViewById(R.id.mytextview); countries.add(et.getText().toString()); adapter.notifyDataSetChanged(); saveData(); }
  • 45. Prueba Project -> Run (Ctrl + Shift + F11)
  • 46. El "Toast" que aparece cuando se hace click en la lista es aburrido... ¿Como se puede implementar un Web Search en lugar del Toast?
  • 47. ... HelloActivity.java [7] public void onItemClick(AdapterView<?> parent, View view, int pos, long id) { Uri uri = Uri.parse("http://en.wikipedia.org/" + "wiki/" + Uri.encode(countries.get(pos), null)); Intent intent = new Intent( Intent.ACTION_VIEW, uri); startActivity(intent); }
  • 49. Muchas Gracias www.gtug.com.ar @gtugbsas gplus.to/gtugbsas @juanmab gplus.to/juanma @jirungaray gplus.to/jirungaray Google Technology User Group Argentina