SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
Android Bootcamp 101:
Mi primera Aplicación Android
          Leo Fishman
         leo@gtugs.org
       Buenos Aires GTUG
Descarga de Archivos


Por favor, copie la carpeta 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; etc.) 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-10.0.0.zip
        (en la carpeta BOOTCAMP)

          [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:  com.example.helloworld
        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 [2]

      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 [2]
   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);
                        }
¿Preguntas?
Referencias:


     Elaborado (con adaptaciones) a partir de los tutoriales:

http://developer.android.com/resources/tutorials/hello-world.html
http://developer.android.com/resources/tutorials/views/index.html


                     Para mas información

             http://developer.android.com/index.html
             Android Bootcamp 102 ( próximamente )
http://bsas.gtugs.org/

Más contenido relacionado

Destacado

Tranformational Model of Translational Research that Leverages Educational Te...
Tranformational Model of Translational Research that Leverages Educational Te...Tranformational Model of Translational Research that Leverages Educational Te...
Tranformational Model of Translational Research that Leverages Educational Te...EduSkills OECD
 
Announcements, 5/6/12
Announcements, 5/6/12Announcements, 5/6/12
Announcements, 5/6/12CLADSM
 
The Power of Purpose, 10/2/16
The Power of Purpose, 10/2/16The Power of Purpose, 10/2/16
The Power of Purpose, 10/2/16CLADSM
 
Economics of plutonium recycle 6 nov2015fvh j
Economics of plutonium recycle 6 nov2015fvh jEconomics of plutonium recycle 6 nov2015fvh j
Economics of plutonium recycle 6 nov2015fvh jhkano
 
Pu e asian secu_henry6nov2015_j
Pu e asian secu_henry6nov2015_jPu e asian secu_henry6nov2015_j
Pu e asian secu_henry6nov2015_jhkano
 
Announcements, 11/27/16
Announcements, 11/27/16Announcements, 11/27/16
Announcements, 11/27/16CLADSM
 
A Skills Beyond School Review of Korea
A Skills Beyond School Review of KoreaA Skills Beyond School Review of Korea
A Skills Beyond School Review of KoreaEduSkills OECD
 
Increased productivity with visual c sharp ide
Increased productivity with visual c sharp ideIncreased productivity with visual c sharp ide
Increased productivity with visual c sharp idenkaluva
 
In Visible Fellowship Slides, 11/6/11
In Visible Fellowship Slides, 11/6/11In Visible Fellowship Slides, 11/6/11
In Visible Fellowship Slides, 11/6/11CLADSM
 
Facebook Marketing for Small Business Development Conference
Facebook Marketing for Small Business Development ConferenceFacebook Marketing for Small Business Development Conference
Facebook Marketing for Small Business Development ConferenceMaverick Mav
 
Announcements, 11/6/11
Announcements, 11/6/11Announcements, 11/6/11
Announcements, 11/6/11CLADSM
 
国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)
国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)
国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)Unreasonable Lab Japan
 
Plutonium recycle gilinsky 6 nov2015_j
Plutonium recycle gilinsky 6 nov2015_jPlutonium recycle gilinsky 6 nov2015_j
Plutonium recycle gilinsky 6 nov2015_jhkano
 
Acts Intro Slides, 5/26/13
Acts Intro Slides, 5/26/13Acts Intro Slides, 5/26/13
Acts Intro Slides, 5/26/13CLADSM
 
Il magico potere dei Network
Il magico potere dei NetworkIl magico potere dei Network
Il magico potere dei NetworkLuca Isabella
 
экспертная компания ооо нпо «руспромэксперт»3
экспертная компания ооо нпо «руспромэксперт»3экспертная компания ооо нпо «руспромэксперт»3
экспертная компания ооо нпо «руспромэксперт»3Dmitryi
 
Announcements, 8/21/11
Announcements, 8/21/11Announcements, 8/21/11
Announcements, 8/21/11CLADSM
 
Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012
Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012
Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012EduSkills OECD
 
Open Source Governance v2.5
Open Source Governance v2.5Open Source Governance v2.5
Open Source Governance v2.5Inria
 
Announcements, 1/19/14
Announcements, 1/19/14Announcements, 1/19/14
Announcements, 1/19/14CLADSM
 

Destacado (20)

Tranformational Model of Translational Research that Leverages Educational Te...
Tranformational Model of Translational Research that Leverages Educational Te...Tranformational Model of Translational Research that Leverages Educational Te...
Tranformational Model of Translational Research that Leverages Educational Te...
 
Announcements, 5/6/12
Announcements, 5/6/12Announcements, 5/6/12
Announcements, 5/6/12
 
The Power of Purpose, 10/2/16
The Power of Purpose, 10/2/16The Power of Purpose, 10/2/16
The Power of Purpose, 10/2/16
 
Economics of plutonium recycle 6 nov2015fvh j
Economics of plutonium recycle 6 nov2015fvh jEconomics of plutonium recycle 6 nov2015fvh j
Economics of plutonium recycle 6 nov2015fvh j
 
Pu e asian secu_henry6nov2015_j
Pu e asian secu_henry6nov2015_jPu e asian secu_henry6nov2015_j
Pu e asian secu_henry6nov2015_j
 
Announcements, 11/27/16
Announcements, 11/27/16Announcements, 11/27/16
Announcements, 11/27/16
 
A Skills Beyond School Review of Korea
A Skills Beyond School Review of KoreaA Skills Beyond School Review of Korea
A Skills Beyond School Review of Korea
 
Increased productivity with visual c sharp ide
Increased productivity with visual c sharp ideIncreased productivity with visual c sharp ide
Increased productivity with visual c sharp ide
 
In Visible Fellowship Slides, 11/6/11
In Visible Fellowship Slides, 11/6/11In Visible Fellowship Slides, 11/6/11
In Visible Fellowship Slides, 11/6/11
 
Facebook Marketing for Small Business Development Conference
Facebook Marketing for Small Business Development ConferenceFacebook Marketing for Small Business Development Conference
Facebook Marketing for Small Business Development Conference
 
Announcements, 11/6/11
Announcements, 11/6/11Announcements, 11/6/11
Announcements, 11/6/11
 
国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)
国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)
国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)
 
Plutonium recycle gilinsky 6 nov2015_j
Plutonium recycle gilinsky 6 nov2015_jPlutonium recycle gilinsky 6 nov2015_j
Plutonium recycle gilinsky 6 nov2015_j
 
Acts Intro Slides, 5/26/13
Acts Intro Slides, 5/26/13Acts Intro Slides, 5/26/13
Acts Intro Slides, 5/26/13
 
Il magico potere dei Network
Il magico potere dei NetworkIl magico potere dei Network
Il magico potere dei Network
 
экспертная компания ооо нпо «руспромэксперт»3
экспертная компания ооо нпо «руспромэксперт»3экспертная компания ооо нпо «руспромэксперт»3
экспертная компания ооо нпо «руспромэксперт»3
 
Announcements, 8/21/11
Announcements, 8/21/11Announcements, 8/21/11
Announcements, 8/21/11
 
Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012
Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012
Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012
 
Open Source Governance v2.5
Open Source Governance v2.5Open Source Governance v2.5
Open Source Governance v2.5
 
Announcements, 1/19/14
Announcements, 1/19/14Announcements, 1/19/14
Announcements, 1/19/14
 

Similar a ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPRENDIMIENTO DE APLICACIONES MÓVILES

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
 
Android Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG UruguayAndroid Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG Uruguaygtuguruguay
 
Aplicaciones moviles clase9 listas
Aplicaciones moviles clase9 listasAplicaciones moviles clase9 listas
Aplicaciones moviles clase9 listasJohan Silva Cueva
 
Instrucciones y estructuras
Instrucciones y estructurasInstrucciones y estructuras
Instrucciones y estructurasFernand Bernowly
 
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
 
Reportes de aplicaciones
Reportes de aplicacionesReportes de aplicaciones
Reportes de aplicacionesADZM
 
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
 
Reconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows PlatformReconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows PlatformJavier Suárez Ruiz
 
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
 
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
 
Aplicaciones android
Aplicaciones androidAplicaciones android
Aplicaciones androidedwin
 

Similar a ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPRENDIMIENTO DE APLICACIONES MÓVILES (20)

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
 
Preguntasviri
PreguntasviriPreguntasviri
Preguntasviri
 
Actividad 11
Actividad 11Actividad 11
Actividad 11
 
Android Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG UruguayAndroid Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG Uruguay
 
Actividad 11
Actividad 11Actividad 11
Actividad 11
 
Aplicaciones moviles clase9 listas
Aplicaciones moviles clase9 listasAplicaciones moviles clase9 listas
Aplicaciones moviles clase9 listas
 
Instrucciones y estructuras
Instrucciones y estructurasInstrucciones y estructuras
Instrucciones y estructuras
 
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
 
Clases de Programación Android
Clases de Programación AndroidClases de Programación Android
Clases de Programación Android
 
Reportes de aplicaciones
Reportes de aplicacionesReportes de aplicaciones
Reportes de aplicaciones
 
Android
AndroidAndroid
Android
 
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
 
Reconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows PlatformReconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows Platform
 
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
 
Iniciación a Android
Iniciación a AndroidIniciación a Android
Iniciación a 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
 
Aplicaciones android
Aplicaciones androidAplicaciones android
Aplicaciones android
 
Preguntas de android
Preguntas  de androidPreguntas  de android
Preguntas de android
 
Preguntas de android
Preguntas  de androidPreguntas  de android
Preguntas de android
 

Último

#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxkimontey
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
La tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadLa tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadEduardoSantiagoSegov
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 

Último (20)

#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
La tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadLa tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedad
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 

ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPRENDIMIENTO DE APLICACIONES MÓVILES

  • 1. Android Bootcamp 101: Mi primera Aplicación Android Leo Fishman leo@gtugs.org Buenos Aires GTUG
  • 2. Descarga de Archivos Por favor, copie la carpeta BOOTCAMP a su escritorio (o para donde prefiera)
  • 4. 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
  • 5. 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; etc.) 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ó.
  • 6. 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.
  • 8. 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
  • 9. Instalación del Plugin ADT En Eclipse: Help -> Install New Software.... -> Add Name: Android Plugin Archive: ADT-10.0.0.zip (en la carpeta BOOTCAMP) [x] Developer Tools [ ] DESMARQUE "Check all update sites..." Next, next, next....., restart.
  • 10. Crear un Virtual Device Window -> AVD Manager -> Virtual Devices->New Name: MyAVD Target: Android 2.1 Skin: HVGA Create AVD Close
  • 11. Proyecto Hello World File -> New -> Android Project Project Name:   HelloWorld Build Target: Android 2.1 Properties:   Application Name:  HelloWorld   Package Name:  com.example.helloworld   Create Activity:  HelloActivity
  • 12. src/com/example/HelloActivity.java - onCreate() - Bundle savedInstanceState - setContentView(R.layout.main);
  • 14. res/layout/main.xml LinearLayout
  • 15. 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
  • 17. Prueba Project -> Run (Ctrl + Shift + F11)
  • 18. Esto es una Activity
  • 20. 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
  • 21. 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>
  • 22. HelloActivity.java [2] 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));      }
  • 23. Prueba Project -> Run (Ctrl + Shift + F11)
  • 24. HelloActivity.java [2] 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(); }
  • 25. Prueba Project -> Run (Ctrl + Shift + F11)
  • 26. EditText y Botón para Añadir
  • 27. 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>
  • 28. Prueba Project -> Run (Ctrl + Shift + F11)
  • 29. Ahora vamos a implementar...
  • 30. 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); } ...
  • 31. ... 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(); }
  • 32. Prueba Project -> Run (Ctrl + Shift + F11)
  • 33. Experimento Cerrar la aplicación (oprimiendo "Home") Arrancarla nuevamente desde el menú de aplicaciones. ¿Cual es el resultado?
  • 34. Experimento El contenido se queda en la lista! ¿Por qué pasa eso?
  • 35. Experimento Porque Android hace "Activity Lifecycle Management" y puede mantener activas o cerrar Activities conforme la necesidad
  • 36. 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?
  • 37. Experimento 2 Resultado: El contenido se fué.
  • 38. ¿Como grabar el contenido de una manera que sea persistente entre sesiones de mi aplicación?
  • 39. Fácil -> SharedPreferences Completo -> Base de datos SQLite
  • 40. 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();
  • 41. 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); }
  • 42. 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); }
  • 43. HelloActivity.java [6] public void onClick(View view) {     EditText et = (EditText)     findViewById(R.id.mytextview);     countries.add(et.getText().toString());     adapter.notifyDataSetChanged();     saveData(); }
  • 44. Prueba Project -> Run (Ctrl + Shift + F11)
  • 45. El "Toast" que aparece cuando se hace click en la lista es aburrido... ¿Como se puede implementar un Web Search en lugar del Toast?
  • 46. ... 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); }
  • 48. Referencias: Elaborado (con adaptaciones) a partir de los tutoriales: http://developer.android.com/resources/tutorials/hello-world.html http://developer.android.com/resources/tutorials/views/index.html Para mas información http://developer.android.com/index.html Android Bootcamp 102 ( próximamente )