Planificación Cursos Android

852 views

Published on

  • Be the first to comment

  • Be the first to like this

Planificación Cursos Android

  1. 1. Cursos de VeranoDesarrollo de aplicaciones móvil Android Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  2. 2. 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 CursoLunes 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 Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  3. 3. 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 Android1 .Aprendiendo un poco de modelosExisten 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 Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  4. 4. La computadora personal, es la comunicación donde un usuario interactúa con sucomputadora. Computadora PersonalLa realidad virtual es el sistema donde la interacción y sensación de presencia son igualal del mundo real.Para que exista la realidad virtual, tiene que existir algún medio tecnológico que nosbrinde 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 mismaforma que los reales. Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  5. 5. Realidad VirtualLa realidad aumentada mezcla la realidad con el mundo virtual, para crear una realidadmixta en tiempo real.En la realidad aumentada nos permiten añadir información al mundo real, no es igual a larealidad virtual, ya que esta sustituye la realidad física por la virtual, lo cual no sucede enla realidad aumentada. Realidad AumentadaLa realidad ubicua permite que la información este en todas partes, ya sea en dispositivosgrandes o pequeños.La computación ubicua forma parte del mundo real y amplia las posibilidades en el. Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  6. 6. Realidad ubicuaUno de los medios de estar siempre comunicados, es la telefonía celular, la cual ha tenidoun gran avance este último tiempo: Avances telefonía celularEn esta imagen podemos darnos cuenta como ha avanzado esta, hace poco tiempoescuchábamos de los “celulares ladrillos”, los cuales fácilmente han quedado en el olvidoy han evolucionado a los modernos Smartphone, que son denominados comercialmentecomo celulares inteligentes, y nos permiten más cosas que los teléfonos móviles común,tienen teclado, pantallas táctiles diferentes. Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  7. 7. 2. ¿Qué es Android?Android es un sistema operativo creado por Google para smartphone, el cual es usadopor muchas marcas que existen en el mercado, Motorola, Samsung, LG, entre muchasotras.Android es de código abierto, lo cual significa que miles de miles de programadoresalrededor del mundo pueden crear aplicaciones sin restricciones para nuestrossmartphone.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 aUbuntu de Linux, Snow Leopard de Mac.Para celulares también tenemos sistemas operativos, no son los mismos, ya que su nivelde trabajo es menor que un computador por ende se crean sistemas operativos especialespensando en los dispositivos móviles:Los más conocidos son Android de Google que será en el que trabajaremos, a WindowsMobile 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. Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  8. 8. 5. Tienda de aplicaciones de Android: Android MarketAndroid nos ofrece su tienda de aplicaciones, donde podremos encontrar muchas App, dediferentes tipos, deportes, ocio, productividad, y más.En la Market encontraremos aplicaciones gratuitas y de pago, pero las de pago son decostos bajosSesió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 Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  9. 9. 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 datosEn la capa 2 mencionamos a la lógica de negocio, este nombre no nos dice mucho de quese trata, pero debemos quedarnos con que es aquel que maneja los datos de nuestrocontenedor, saca datos, agrega datos, elimina datos, etc.Se encuentra en una posición intermedia porque es el que recibe ordenes, recibe unapetició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 comoaquella 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 larespuesta y realiza lo pedido por el usuario. Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  10. 10. Capa de Negocio Modelo de 3 capasCreación del modelo de datosPara poder crear el modelo de datos, nos apoyamos en un software llamado VisualParadigm, es uno de muchos que nos ayudan a crear estos modelos. Visual Paradigm Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  11. 11. Para poder crear el modelo debemos darle el nombre a nuestro contenedor, lellamaremos notas_app, y crearemos un espacio donde dejaremos la información odatos, llamada “TABLA” de nombre Asignatura, dentro de esta tabla dejaremos encada columna un dato específico, como nombre de la asignatura y sus notascorrespondientes. Tabla: AsignaturaCreación modelo de negocioUna vez creado nuestro modelo de datos, pasamos al siguiente paso, que es crearel modelo de negocio, crearemos las posibles solicitudes de datos que le hará lainterfaz de usuario.Para realizar esto, trabajaremos en el IDE Eclipse 3.6 bajo el lenguaje deprogramación Java.Si bien programamos en Java, no deberás realizar esto, ya que se requiere un nivelde programación maduro.El modelo de negocio será una caja negra en como se hizo, pero si conocerás comopodrás comunicarte con el y como se comunicará contigo. Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  12. 12. Lógica o modelo de negocioLa manera en que podrás comunicarte con el modelo de negocio será a través deagregarAsignatura y el modelo te responderá por medio de mostrarPromedio.Creación clienteUna vez listas ambas capas, comenzaremos con la creación de nuestra interfaz deusuario, que será la capa 3, y que será creada en Android.Sesión III:Creación cliente en AndroidRetomando la última parte, debemos construir la interfaz de usuario en Android.Primero creamos un proyecto de aplicación de nombre NotasAsigDAEM, de lasiguiente forma:1. - Click derecho -> New -> Android Project Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  13. 13. 2.- Nos aparecerá una ventana como la siguiente y digitamos el nombre que dijimos anteriormente, NotasAsigDAEM: Nuevo Proyecto Android3.- Presionamos Next ->, y nos aparecerá una ventana donde tendremos que seleccionarla versión de Android en que trabajaremos, nosotros ocuparemos la versión 2.1. Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  14. 14. Seleccionar versión de Android a trabajar Centro de Estudios de Ingeniería de SoftwareMaría José Rioseco, maria.rioseco@opensystem.cl
  15. 15. 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 Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  16. 16. Ahora comencemos armas nuestra App, nos vamos a res -> Layout-> main.xml *Árbol de la AppCon ayuda del editor grafico que nos facilita Android, para crear las pantallas editaremosel main.xml Editor gráfico de Android Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  17. 17. Arrastraremos un TextView, un EditText y un Button, y vamos personalizando cadacomponente.El TextView, le hacemos click derecho Edit Text:Y agregamos un nuevo String, en el botón de abajo New String. Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  18. 18. 1 2En String colocamos el texto que queremos que se vea (1) y en New R.String (2) como sellamará 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, lopersonalizaremos, 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á cuandopresionemos el botón Agregar Notas.Vamos a Layout -> (click derecho) -> New -> Android XML File Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  19. 19. Creación de un XML nuevoEn File debemos colocar el nombre que le pondremos a nuestros xml, los nombres son enminúscula, sin espacios, le pondremos notas.xml Nombre de Android XML File Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  20. 20. Una vez creado nuestro xml notas.xml, le agregaremos los componentes de la mismamanera 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 EditText1 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 notendrá texto, se cargará desde la pantalla anterior, mas adelante veremos eso, así que hayque 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, ylos EditText, debes editar los Identificadores, Edit ID, por editnota1, editnota2 y editnota3. Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  21. 21. Al botón también hay que cambiar el texto, por el texto “Enviar Notas”, y estaríamos listoscon nuestro notas.xmlNota: 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, perono se explicará como se realizó. Al final de este informe se adjuntará como anexo elcódigo fuente.Al finalizar la aplicación podremos ver en el emulador de Android la aplicación comosigue: App de Notas Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  22. 22. 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ónsencilla, 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. Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  23. 23. Anexosimport 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 hadigitado una asignatura", Toast.LENGTH_LONG).show(); Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  24. 24. } } }); }}Clase Nota.javaimport 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); Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  25. 25. 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(), "Fueingresada satisfactoriamente", Toast.LENGTH_LONG).show(); } else{ Toast.makeText(getApplicationContext(), "NO pudoser guardada", Toast.LENGTH_LONG).show(); } } }); } /** * Menu opcional Volver */ @Override public boolean onCreateOptionsMenu(Menu menu) { Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  26. 26. 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.javaimport 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 ; Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  27. 27. 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); Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  28. 28. 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 = newSoapSerializationEnvelope(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; } Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  29. 29. 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 = newSoapSerializationEnvelope(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(); Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  30. 30. datosJsonString =resultString.toString(); return datosJsonString; } catch (Exception e) { e.printStackTrace(); datosJsonString = "Error Conexion";} return datosJsonString; }} Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl
  31. 31. 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> Centro de Estudios de Ingeniería de Software María José Rioseco, maria.rioseco@opensystem.cl

×