Planificación Cursos Android

31
Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected] Cursos de Verano Desarrollo de aplicaciones móvil Android

Transcript of Planificación Cursos Android

Page 1: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Cursos de Verano

Desarrollo de aplicaciones móvil Android

Page 2: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Objetivos del Curso

Dar a conocer las tecnologías de hoy en día a los alumnos.

Comprender el funcionamiento de Android

Aprender a manejar el entorno de desarrollo para diseñar aplicaciones Android.

Planificación Curso

Lunes 9 de enero de 2012: 10:50 – 13:30 hrs.

˃ Sesión 1:

+ Presentación,

+ Introducción al mundo de la Informática,

+ Introducción Android.

Martes 10 de enero de 2012: 14:30 – 18:30 hrs.

˃ Sesión 2:

+ Inicio de ejemplo de aplicación Android

+ Explicar modelo de desarrollo de la aplicación

+ Desarrollo de aplicación en Android.

Miércoles 11 de enero de 2012: 10:50 a 13:30 hrs.

˃ Sesión 3:

+ Finalización de la App ejemplo en el taller

+ Formar grupos de trabajo y pensar la idea a desarrollar

Page 3: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Jueves 12 de enero de 2012: 10:50 a 13 hrs y 14:30 a 18:30 hrs.

˃ Sesión 4 :

+ Desarrollo de aplicación por grupos.

˃ Sesión 5

+ Finalización y presentación de la aplicación por grupos.

Sesión I

1 .- Aprendiendo un poco de modelos …

2 .- ¿Qué es Android?

3 .- ¿Qué es un Sistema operativo?

4 .- ¿Qué es una aplicación?

5 .- La tienda de aplicaciones de Android

1 .Aprendiendo un poco de modelos

Existen hoy 4 modelos que nos describen como funciona hoy la comunicación hombre –

computadora:

o La computadora personal

o La realidad virtual

o La realidad aumentada

o La realidad ubicua

Page 4: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

La computadora personal, es la comunicación donde un usuario interactúa con su

computadora.

Computadora Personal

La realidad virtual es el sistema donde la interacción y sensación de presencia son igual

al del mundo real.

Para que exista la realidad virtual, tiene que existir algún medio tecnológico que nos

brinde la posibilidad de sensación de presencia física a través de sensores visuales,

auditivos y ópticos.

También debe existir una manera fácil de manipular los objetos virtuales, de la misma

forma que los reales.

Page 5: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Realidad Virtual

La realidad aumentada mezcla la realidad con el mundo virtual, para crear una realidad

mixta en tiempo real.

En la realidad aumentada nos permiten añadir información al mundo real, no es igual a la

realidad virtual, ya que esta sustituye la realidad física por la virtual, lo cual no sucede en

la realidad aumentada.

Realidad Aumentada

La realidad ubicua permite que la información este en todas partes, ya sea en dispositivos

grandes o pequeños.

La computación ubicua forma parte del mundo real y amplia las posibilidades en el.

Page 6: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Realidad ubicua

Uno de los medios de estar siempre comunicados, es la telefonía celular, la cual ha tenido

un gran avance este último tiempo:

Avances telefonía celular

En esta imagen podemos darnos cuenta como ha avanzado esta, hace poco tiempo

escuchábamos de los “celulares ladrillos”, los cuales fácilmente han quedado en el olvido

y han evolucionado a los modernos Smartphone, que son denominados comercialmente

como celulares inteligentes, y nos permiten más cosas que los teléfonos móviles común,

tienen teclado, pantallas táctiles diferentes.

Page 7: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

2. ¿Qué es Android?

Android es un sistema operativo creado por Google para smartphone, el cual es usado

por muchas marcas que existen en el mercado, Motorola, Samsung, LG, entre muchas

otras.

Android es de código abierto, lo cual significa que miles de miles de programadores

alrededor del mundo pueden crear aplicaciones sin restricciones para nuestros

smartphone.

3. ¿Qué es un sistema operativo?

Es un programa que gestiona varios procesos (editores de textos, antivirus, juegos, etc.)

los más conocidos para pc son Windows de Microsoft, también podemos mencionar a

Ubuntu de Linux, Snow Leopard de Mac.

Para celulares también tenemos sistemas operativos, no son los mismos, ya que su nivel

de trabajo es menor que un computador por ende se crean sistemas operativos especiales

pensando en los dispositivos móviles:

Los más conocidos son Android de Google que será en el que trabajaremos, a Windows

Mobile de Microsoft y a IOS de Apple.

4. ¿Qué es una aplicación?

Una aplicación es un programa de software, como un juego, un antivirus, una calculadora,

etc.

Page 8: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

5. Tienda de aplicaciones de Android: Android Market

Android nos ofrece su tienda de aplicaciones, donde podremos encontrar muchas App, de

diferentes tipos, deportes, ocio, productividad, y más.

En la Market encontraremos aplicaciones gratuitas y de pago, pero las de pago son de

costos bajos

Sesión II

1 .- Inicio de ejemplo de aplicación Android

2 .- Explicar modelo de desarrollo de la aplicación

3 .- Desarrollo de aplicación en Android.

1. Inicio ejemplo de aplicación en Android

Para poder conocer más acerca de Android, y ver que la realización de aplicaciones

para este, son entretenidas, y realizables, crearemos una aplicación que maneje las

notas de sus asignaturas y nos entregue el promedio que llevan general con todas las

asignaturas.

Para poder expandir el conocimiento aprendido en esta semana, crearemos esta

aplicación bajo el “Modelo 3 capas” el cual consta:

Capa 1 -> Datos

Page 9: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Capa 2 -> Lógica de Datos

Capa 3 -> Interfaz de usuario

No se pretende que logren un manejo inmediato de estos conceptos, pero que si se

entienda la idea, cuando hablamos que en la capa 1, tenemos los datos, nos referimos

que es lugar donde almacenaremos información, por ejemplo el registro civil tiene

gran cantidad de información de todas las personas que existen y que no en nuestro

país, imaginemos que el lugar donde se encuentra es toda esa información es un gran

contenedor llamado base de datos o banco de datos.

Contenedor de datos

En la capa 2 mencionamos a la lógica de negocio, este nombre no nos dice mucho de que

se trata, pero debemos quedarnos con que es aquel que maneja los datos de nuestro

contenedor, saca datos, agrega datos, elimina datos, etc.

Se encuentra en una posición intermedia porque es el que recibe ordenes, recibe una

petición de algo y el la ejecuta y responde al que le pregunto.

En la capa 3, mencionamos a la interfaz de usuario, la que fácilmente definiremos como

aquella que el usuario visualiza, es el producto final.

Esta capa recibe peticiones de usuario, la cual la enviar a la capa de negocio y recibe la

respuesta y realiza lo pedido por el usuario.

Page 10: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Modelo de 3 capas

Creación del modelo de datos

Para poder crear el modelo de datos, nos apoyamos en un software llamado Visual

Paradigm, es uno de muchos que nos ayudan a crear estos modelos.

Visual Paradigm

Capa de

Negocio

Page 11: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Para poder crear el modelo debemos darle el nombre a nuestro contenedor, le

llamaremos notas_app, y crearemos un espacio donde dejaremos la información o

datos, llamada “TABLA” de nombre Asignatura, dentro de esta tabla dejaremos en

cada columna un dato específico, como nombre de la asignatura y sus notas

correspondientes.

Tabla: Asignatura

Creación modelo de negocio

Una vez creado nuestro modelo de datos, pasamos al siguiente paso, que es crear

el modelo de negocio, crearemos las posibles solicitudes de datos que le hará la

interfaz de usuario.

Para realizar esto, trabajaremos en el IDE Eclipse 3.6 bajo el lenguaje de

programación Java.

Si bien programamos en Java, no deberás realizar esto, ya que se requiere un nivel

de programación maduro.

El modelo de negocio será una caja negra en como se hizo, pero si conocerás como

podrás comunicarte con el y como se comunicará contigo.

Page 12: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Lógica o modelo de negocio

La manera en que podrás comunicarte con el modelo de negocio será a través de

agregarAsignatura y el modelo te responderá por medio de mostrarPromedio.

Creación cliente

Una vez listas ambas capas, comenzaremos con la creación de nuestra interfaz de

usuario, que será la capa 3, y que será creada en Android.

Sesión III:

Creación cliente en Android

Retomando la última parte, debemos construir la interfaz de usuario en Android.

Primero creamos un proyecto de aplicación de nombre NotasAsigDAEM, de la

siguiente forma:

1. - Click derecho -> New -> Android Project

Page 13: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

2.- Nos aparecerá una ventana como la siguiente y digitamos el nombre que

dijimos anteriormente, NotasAsigDAEM:

Nuevo Proyecto Android

3.- Presionamos Next ->, y nos aparecerá una ventana donde tendremos que seleccionar

la versión de Android en que trabajaremos, nosotros ocuparemos la versión 2.1.

Page 14: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Seleccionar versión de Android a trabajar

Page 15: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

4.- Presionamos Next -> nuevamente y nos aparece una ventana donde deberemos dar la

última información de configuración, en Package Name digita notas.daem y Finish.

5.- Una vez finalizado, nos aparecerá nuestro proyecto de esta forma:

Nuevo proyecto

Page 16: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Ahora comencemos armas nuestra App, nos vamos a res -> Layout-> main.xml

*Árbol de la App

Con ayuda del editor grafico que nos facilita Android, para crear las pantallas editaremos

el main.xml

Editor gráfico de Android

Page 17: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Arrastraremos un TextView, un EditText y un Button, y vamos personalizando cada

componente.

El TextView, le hacemos click derecho Edit Text:

Y agregamos un nuevo String, en el botón de abajo New String.

Page 18: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

En String colocamos el texto que queremos que se vea (1) y en New R.String (2) como se

llamará interno, le damos a OK y luego la seleccionamos y a Ok de nuevo.

Repitamos los mismos pasos para el texto del Botón, y nos diga Agregar Notas.

El EditText, será el encargado de recibir lo que el usuario escriba en la pantalla, lo

personalizaremos, pero en el caso de su ID, que será el que nos servirá para identificarlo,

click derecho Edit ID -> y le ponemos como id editasignatura.

Ya terminamos con una pantalla, ahora crearemos otra nueva que aparecerá cuando

presionemos el botón Agregar Notas.

Vamos a Layout -> (click derecho) -> New -> Android XML File

1

2

Page 19: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Creación de un XML nuevo

En File debemos colocar el nombre que le pondremos a nuestros xml, los nombres son en

minúscula, sin espacios, le pondremos notas.xml

Nombre de Android XML File

Page 20: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Una vez creado nuestro xml notas.xml, le agregaremos los componentes de la misma

manera que lo hicimos en el main.xml.

Agregaremos:

1 TextView para el nombre de la Asignatura,

1 TableLayout para agregar dentro las notas,

3 TableRow

Dentro de cada TableRow agregaremos un TextView y un EditText

1 Button para enviar las notas.

Debería quedar como se muestra en la siguiente imagen.

notas.xml con sus componentes.

Partamos dándole nombres más representativos a nuestros componentes, el TextView no

tendrá texto, se cargará desde la pantalla anterior, mas adelante veremos eso, así que hay

que quitarle el texto que trae por defecto.

Los TextView dentro de la TableLayout, deben ir con los nombre Nota 1, Nota 2 y Nota 3, y

los EditText, debes editar los Identificadores, Edit ID, por editnota1, editnota2 y editnota3.

Page 21: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Al botón también hay que cambiar el texto, por el texto “Enviar Notas”, y estaríamos listos

con nuestro notas.xml

Nota: La interfaz se puede mejorar, pero no esencial en este instante.

La programación quedará a disposición de lo que quieren profundizar en el código, pero

no se explicará como se realizó. Al final de este informe se adjuntará como anexo el

código fuente.

Al finalizar la aplicación podremos ver en el emulador de Android la aplicación como

sigue:

App de Notas

Page 22: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Sesión 4

1 .- Desarrollo de aplicación por grupos.

2 .- Finalización de la App y presentación.

Para la última sesión, se desafiará a los participantes a la creación de alguna aplicación

sencilla, y fácil que se pueda desarrollar en grupo.

Se deben tener en cuenta algunos puntos para poder desarrollar la idea:

Se debe buscar satisfacer una necesidad.

Debe ser sencilla

Beneficios o mejoras al realizar la App.

Page 23: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

Anexos

import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class NotasAsigDAEMActivity extends Activity { EditText nombreasignatura; Button btnguardaasig; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); nombreasignatura = (EditText)findViewById(R.id.editasignatura); btnguardaasig = (Button)findViewById(R.id.btnguardaasig); btnguardaasig.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String nameAsignatura = nombreasignatura.getText().toString(); if(!("").equals(nameAsignatura) && nameAsignatura != null){ Intent i = new Intent(); i.setClass(getApplicationContext(), NotaApp.class); i.putExtra("asignatura", nameAsignatura); startActivity(i); } else{ Toast.makeText(getApplicationContext(), "No ha digitado una asignatura", Toast.LENGTH_LONG).show();

Page 24: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

} } }); } }

Clase Nota.java

import ws.Conexionws; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class NotaApp extends Activity { TextView textoAsignatura; EditText nota1; EditText nota2; EditText nota3; Button btnagregarnotas; Conexionws cws = new Conexionws(); String asignatura = ""; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.notas); textoAsignatura = (TextView) findViewById(R.id.textAsignatura);

Page 25: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

nota1 = (EditText) findViewById(R.id.editnota1); nota2 = (EditText) findViewById(R.id.editnota2); nota3 = (EditText) findViewById(R.id.editnota2); btnagregarnotas =(Button)findViewById(R.id.btnguardabd); Bundle extras = getIntent().getExtras(); if (extras != null) { asignatura = extras.get("asignatura").toString(); if (asignatura != null) { textoAsignatura.setText(asignatura); } } btnagregarnotas.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { int n1 = Integer.valueOf(nota1.getText().toString()); int n2 = Integer.valueOf(nota2.getText().toString()); int n3 = Integer.valueOf(nota3.getText().toString()); String resultado = cws.guardanotas(asignatura,n1,n2,n3 , 1); if(("2").equals(resultado)){ Toast.makeText(getApplicationContext(), "Fue ingresada satisfactoriamente", Toast.LENGTH_LONG).show(); } else{ Toast.makeText(getApplicationContext(), "NO pudo ser guardada", Toast.LENGTH_LONG).show(); } } }); } /** * Menu opcional Volver */ @Override public boolean onCreateOptionsMenu(Menu menu) {

Page 26: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menupromedio, menu); return true; } /** * Evento que se genera al seleccionar alguna opcion en el menu opcional */ @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection switch (item.getItemId()) { case R.id.idconocerprom: String resultado = cws.pedirPromedio(1); Toast.makeText(getApplicationContext(), "Tú promedio es : "+resultado, Toast.LENGTH_LONG).show(); return true; default: return super.onOptionsItemSelected(item); } } }

Clase Webservice Conexión.java

import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.PropertyInfo; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapPrimitive; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.AndroidHttpTransport; public class Conexionws { private static String METHOD_NAME ;

Page 27: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

private static String NAMESPACE ; private static String URL; String datosJsonString= ""; public void coneccionwsPropio(){ NAMESPACE = "http://webservices"; URL = "http://186.10.199.201:8080/NotasDaem/services/NotasDaemApp?wsdl"; } public void coneccionwsExterno(){ NAMESPACE = "http://webservices"; URL = "http://200.13.4.205:8080/NotasDaem/services/NotasDaemApp?wsdl"; } /** * * @param asignaturatex * @param n1 * @param n2 * @param n3 * @param idpersona * @return */ public String guardanotas(String asignaturatex, int n1,int n2, int n3, int idpersona){ coneccionwsExterno(); METHOD_NAME = "agregaAsignatura"; String SOAP_ACTION = NAMESPACE + METHOD_NAME; SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); PropertyInfo asignatura = new PropertyInfo(); asignatura.setName("asignatura"); asignatura.setValue(asignaturatex); asignatura.setType(String.class);

Page 28: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

PropertyInfo nota1 = new PropertyInfo(); nota1.setName("nota1"); nota1.setValue(n1); nota1.setType(int.class); PropertyInfo nota2 = new PropertyInfo(); nota2.setName("nota2"); nota2.setValue(n2); nota2.setType(int.class); PropertyInfo nota3 = new PropertyInfo(); nota3.setName("nota3"); nota3.setValue(n3); nota3.setType(int.class); PropertyInfo ida = new PropertyInfo(); ida.setName("idalumno"); ida.setValue(idpersona); ida.setType(int.class); request.addProperty(asignatura); request.addProperty(nota1); request.addProperty(nota2); request.addProperty(nota3); request.addProperty(ida); SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); soapEnvelope.dotNet = true; soapEnvelope.implicitTypes =true; soapEnvelope.setOutputSoapObject(request); AndroidHttpTransport aht = new AndroidHttpTransport(URL); try { aht.call(SOAP_ACTION, soapEnvelope); SoapPrimitive resultString = (SoapPrimitive)soapEnvelope.getResponse(); datosJsonString =resultString.toString(); return datosJsonString; }

Page 29: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

catch (Exception e) { e.printStackTrace(); datosJsonString = "Error Conexion";} return datosJsonString; } /** * Metodo que calcula el promedio general de las notas * @param idperso * @return */ public String pedirPromedio(int idperso){ coneccionwsExterno(); METHOD_NAME = "mostrarPromedio"; String SOAP_ACTION = NAMESPACE + METHOD_NAME; SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); PropertyInfo ida = new PropertyInfo(); ida.setName("idPersona"); ida.setValue(idperso); ida.setType(int.class); request.addProperty(ida); SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); soapEnvelope.dotNet = true; soapEnvelope.implicitTypes =true; soapEnvelope.setOutputSoapObject(request); AndroidHttpTransport aht = new AndroidHttpTransport(URL); try { aht.call(SOAP_ACTION, soapEnvelope); SoapPrimitive resultString = (SoapPrimitive)soapEnvelope.getResponse();

Page 30: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

datosJsonString =resultString.toString(); return datosJsonString; } catch (Exception e) { e.printStackTrace(); datosJsonString = "Error Conexion";} return datosJsonString; } }

Page 31: Planificación Cursos Android

Centro de Estudios de Ingeniería de Software María José Rioseco, [email protected]

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="notas.daem" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".NotasAsigDAEMActivity" 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="NotaApp"></activity> </application> <uses-permission android:name="android.permission.INTERNET"></uses-permission> </manifest>