Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Mapa curricular:
Submdulo 1 - Desarrolla aplicaciones web
Submdulo 2 - Desarrolla aplicaciones mviles
ndice
Introduccin al submdulo
Objetivo General
Mapa Curricular
Mapa de Contenidos
Cronograma
Ponderaciones
Desarrollo de las Esferas de Competencia
Cierre del Submdulo
Bibliografa
Glosario
Anexos
Plan de Evaluacin
Gua del Portafolio
Instrumentos de Evaluacin
Proyecto Integrador
Elaboraron:
Lic. Esteban Angeles Molina
Ing. Susana Hernndez Ramrez
Lic. Renn Abreu Guerrero
Ing. Lorena Ramrez Campoy
Introduccin al submdulo
Es indudable el vertiginoso avance de las posibilidades que tiene los dispositivos
mviles actuales en la comunicacin por diversas vas, el acceso a servicios de
forma remota y mvil y el manejo de aplicaciones hasta hace poco tiempo slo
reservadas a plataformas fijas.
El curso tiene, como primer objetivo, dar una panormica general de la tecnologa
que soporta estos avances y la que hay para el desarrollo de aplicaciones y el
soporte de servicios mediante dispositivos mviles, profundizndose en las
plataformas de programacin, lenguajes y entornos de ejecucin y de desarrollo
ms usados en la actualidad.
Objetivo general.
Mapa curricular
Mapa de competencias profesionales de la carrera de Tcnico en
programacin
Mapa de Contenidos
Modulo 3 Desarrolla aplicaciones web y mviles
Submdulo 2 Desarrolla aplicaciones mviles
Competencia 1
Desarrolla aplicaciones para dispositivos mviles sobre plataformas abiertas
Atributos de la competencia
1.
2.
3.
4.
5.
Conceptos bsicos
Conocer una plataforma abierta
Conocer los dispositivos mviles de plataforma abierta
Conocer la programacin del mvil
Desarrollo de aplicaciones
Saberes:
1)
2)
3)
4)
5)
6)
Actitudes:
1. Limpieza
2. Responsabilidad
3. Orden
Competencia 2
Desarrolla aplicaciones para dispositivos mviles sobre plataformas cerradas
Atributos de la competencia:
1. Conocer una plataforma cerrada
Saberes:
1.
Actitudes:
1. Limpieza
2. Responsabilidad
3. Orden
Cronograma (ANEXO ARCHIVO M3S1 Excel)
Ponderaciones
En el Submdulo 2
Evidencia de Producto
Evidencia de Desempeo
Evidencia de Actitud
Evidencia de Conocimiento
Saberes
1. Conceptos bsicos
2. Conocer tipos de plataformas
3. Conocer los dispositivos mviles de plataforma abierta
4. Conocer la programacin del mvil
5. Desarrollo de aplicaciones
Ejemplos:
1. Antecedentes
2. Te presento a Android
3. Instalando Android
4. Mi primer programa
5. Conociendo ms de Java en Eclipse
Ejercicios:
Prctica Integradora:
1. Programando mi pone
Introduccin a la Competencia 1
Las plataformas abiertas son aquellas que permiten adaptarlas a las necesidades
creando ventajas competitivas para la empresa.
Las Tecnologas de la Informacin juegan hoy en da un factor determinante en la
competitividad de las empresas. El seleccionar y mantener una cartera tecnolgica
competitiva es uno de los grandes retos, en especial para las PyMEs.
La evolucin acelerada de la tecnologa presenta un enorme reto, desde el punto
de vista de gestin del conocimiento, lograr soluciones competitivas con fuertes
diferenciales y alternativas correctas. Adoptar un producto abierto, como una
plataforma para desarrollar diferenciales de negocio positivos, es una alternativa
altamente competitiva que permite reducir sustancialmente los costos asociados a
la innovacin.
Las plataformas abiertas son aquellas que permiten adaptarse a las necesidades
creando ventajas para la empresa, negocio, o simplemente mejorar la manera en
que se realizan diferentes actividades importantes para las organizaciones. Este
tipo de plataformas no tienen un costo de licenciamiento, pero la mayora tienen
un costo implcito asociado a la adaptacin, segn los requerimientos de cada
empresa. La mayora de las veces la adaptacin se tiene que hacer por un
profesional que conozca la tecnologa y plataforma.
Hoy en da se puede decir que hay muy pocas soluciones que se puedan
considerar netamente comerciales o totalmente abiertas. En la mayora de los
casos, se pueden realizar acuerdos o convenios con los diferentes proveedores
para que den acceso al cdigo fuente para poder modificarlo.
El principal modelo de negocio con el que se ofrecen las plataformas libres se
denomina gift economy o economa del regalo. El regalo en las plataformas
abiertas es una licencia, generalmente sin costo que permite usar y modificar las
soluciones segn las necesidades. Pero, qu ganan las empresas al regalar el
software?
Los principales ingresos estn en los servicios de soporte para adaptarse a necesidades
especficas, en lugar de cuotas para el uso (licencias), los servicios que se ofrecen deben ser de
gran valor para la competitividad,
El mejor ejemplo de tecnologas abiertas hoy en da es Android que tiene la mayor
penetracin en el mercado de mviles. Android es un producto abierto (Linux) adaptado a
una necesidad especfica como lo es el mercado de los smartphones. Es capaz de ser
instalado en mltiples dispositivos mviles creados por diferentes marcas y al mismo
tiempo cuenta con una amplia variedad de aplicaciones que en su mayora son gratuitas.
Iniciamos.
Atributos de la Competencia
1. Conceptos bsicos
2. Conocer una plataforma abierta
3. Conocer los dispositivos mviles de plataforma abierta
4. Conocer la programacin del mvil
5. Desarrollo de aplicaciones
Resultado de Aprendizaje
Una vez que se logren adquirir las habilidades necesarias a travs del dominio de
la competencia y sus atributos, podr realizar aplicaciones mviles que podrs
traer en el bolsillo..
(No. 1)
Saberes
TITULO
1.
2.
Recordando la POO
Sentencias bsicas de Java
Saberes a adquirir
Competencias Genricas:
. Se expresa y comunica.
Saberes a adquirir
Recordar los conceptos bsicos que se manipularan de forma cotidiana durante el
desarrollo del submdulo, as como nuevos conceptos que se deban adquirir.
Mtodo didctico
Por medio de un mapa conceptual se definirn los conceptos bsicos utilizados en
la programacin orientada a objetos, escribiendo la fuente bibliogrfica utilizada.
Ejemplo
(No. 1)
Sentencia
Uso
int i=1;
Declaracin
entero
de
variable
tipo
System.out.println("Mi primer
programa");
...
Actitudes:
1.
2.
3.
4.
5.
Limpieza.
Orden.
Respeto.
Puntualidad.
Responsabilidad.
Ejemplo
(No. 2)
TABLA
COMPARATIVA
DE
SISTEMAS OPERATIVOS MOVILES EN
PLATAFORMAS ABIERTAS.
Titulo:
Actitudes:
1.
2.
3.
4.
5.
Limpieza.
Orden.
Respeto.
Puntualidad.
Responsabilidad.
(No. 2)
Saberes
TITULO
1.
Orden.
Puntualidad.
Responsabilidad.
Saberes a adquirir
Competencias Genricas:
. Se expresa y comunica.
Escucha, interpreta y emite mensajes pertinentes en distintos contextos
mediante la utilizacin de medios, cdigos y herramientas apropiados.
Manera didctica de lograrla:
A travs de una actitud de orden, tomando en cuenta la investigacin sustenta
con acervo bibliogrfico.
ANTECEDENTES:
Aunque el sistema operativo Android tiene algunos aos de vida, la librera Java
de android consiste ya en ms de 150 paquetes (APIs), que contienen miles de
clases, mtodos, interfaces y constantes. Para mayor informacin se puede
verificar en la pgina web de Android Developers.
Android es un Linux basado en sistema operativo diseado principalmente para
la pantalla tctil de los dispositivos mviles como telfonos inteligentes y Tablet
PC . Desarrollado inicialmente por Android Inc., que Google respaldada
financieramente y ms tarde adquiri en 2005, Android se dio a conocer en 2007
con
la
fundacin
de
la Open
Handset
Alliance :
un
consorcio
de hardware , software y telecomunicaciones
empresas
dedicadas
a
la
promocin abierta normas para los dispositivos mviles. El primer telfono con
Android fue vendido en octubre de 2008.
Android es de cdigo abierto y Google libera el cdigo bajo la licencia
Apache . Este cdigo fuente abierto y licencia permisiva permite que el software
para ser modificado y distribuido libremente por los fabricantes de dispositivos,
operadores mviles y desarrolladores entusiastas. Adems, Android tiene una
gran comunidad de desarrolladores que escriben aplicaciones (" apps ") que
amplan la funcionalidad de los dispositivos, escrito principalmente en una versin
personalizada de la Java lenguaje de programacin. En octubre de 2012, haba
aproximadamente 700.000 aplicaciones disponibles para Android , y la estimacin
del nmero de aplicaciones descargadas de Google Play , tienda de aplicaciones
de Android primaria, fue de 25 millones de dlares.
Estos factores han permitido a Android para convertirse en la plataforma ms
utilizada telfono inteligente y el software de eleccin para las empresas de
tecnologa que requieren un bajo costo, sistema personalizable, operativo ligero
de alta tecnologa, dispositivos sin desarrollar uno desde cero. Como resultado, a
pesar de estar diseado principalmente para telfonos y tabletas, se ha visto
aplicaciones adicionales en televisores , consolas de videojuegos y otros aparatos
electrnicos. Naturaleza abierta de Android ha alentado una gran comunidad de
desarrolladores y entusiastas de utilizar el cdigo de fuente abierta como una base
para impulsadas por proyectos comunitarios, que aaden nuevas caractersticas
para usuarios avanzados o llevar Android a los dispositivos que fueron lanzados
oficialmente funcionando como sistema operativo.
Clasificacin de los dispositivos mviles
dispositivos
mviles,
la
BlackBerry
el
smartphone,
que
ampla
teclado ms cercanos a un
probar
desarrollando.
y depurar eficientemente
Este
emulador
incluye
las
aplicaciones
diferentes
skins
que
para
se van
representar
Saberes
N3
Instalacin de Android
Instalaremos en primera instancia la versin del SDK 2.3.3 (la lnea 2 est
orientada al desarrollo de aplicaciones para celulares y la lnea 3 est orientada a
tablet). Seleccionamos Available packages y luego del lado derecho solo dejamos
tildado la versin del SDK 2.3.3 (ms adelante podemos instalar otras versiones
de Android) Por ltimo procedemos a presionar el botn "Install Selected":
Aparece
un
dilogo
donde
nos
informa
el
progreso
de
instalacin:
de
SDK
respectivo,
fijamos
un
tamao
al
SD
Saberes
N3
Mi primer programa
Card:
SABERES A ADQUIRIR
El plugin de Android nos genera todos los directorios y archivos bsicos para
iniciar nuestro proyecto:
Como hemos visto el plugin de Eclipse nos genera en forma automtica todas
las carpetas y archivos bsicos que necesitamos en un principio. En el
siguiente concepto podremos empezar a programar verdaderamente. El nico
objetivo de este ejercicio es recordar los pasos para crear un proyecto.
Saberes
N4
Controles:
Edith Text
Radio Group
Radio Button
Check box
Spinner
Image Button
Un segundo Activity
Paso de parmetros.
Almacenamiento de datos en un archivo de texto en memoria
interna , y en tarjetas SD
Layouts
el texto "resultado", recordemos que la interfaz final debe ser semejante a esta:
package androidya.proyecto002;
import android.app.Activity;
import android.os.Bundle;
public class Proyecto002Activity extends Activity
{
/** Called when the activity is first
created. */
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
package androidya.proyecto002;
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.widget.EditText;
android.widget.TextView;
package androidya.proyecto002;
import
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.View;
android.widget.EditText;
android.widget.TextView;
package androidya.proyecto002;
import
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.View;
android.widget.EditText;
android.widget.TextView;
}
Si ejecutamos nuestro programa podemos ver ahora que luego de cargar dos
valores al presionar el botn aparece en el tercer TextView el resultado de la
suma de los dos EditText:
package androidya.proyecto003;
import
import
import
import
android.view.View;
android.widget.EditText;
android.widget.RadioButton;
android.widget.TextView;
Primero debemos enlazar el objeto button1 con el mtodo operar. Para esto
similar al problema anterior seleccionamos el control button1 y cambiamos la
propiedad OnClick por el valor operar (si no hacemos esto nunca se ejecutar
el mtodo operar de la clase Proyecto003Activity)
Como podemos ver el cdigo fuente es igual al problema anterior. Tenemos
dos objetos ms que debemos inicializar en el mtodo onCreate:
r1=(RadioButton)findViewById(R.id.r1);
r2=(RadioButton)findViewById(R.id.r2);
Control CheckBox
El objetivo de este concepto es practicar lo visto hasta ahora e incorporar el
control visual CheckBox
Problema:
Luego la interfaz grfica final para este problema y los nombres de los
controles los podemos ver en la ventana "Outline":
package androidya.proyecto004;
import
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.View;
android.widget.CheckBox;
android.widget.EditText;
import android.widget.TextView;
public class Proyecto004Activity extends Activity
{
private EditText et1,et2;
private TextView tv3;
private CheckBox checkBox1,checkBox2;
/** Called when the activity is first
created. */
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et1=(EditText)findViewById(R.id.et1);
et2=(EditText)findViewById(R.id.et2);
tv3=(TextView)findViewById(R.id.tv3);
checkBox1=(CheckBox)findViewById(R.id.checkBox1);
checkBox2=(CheckBox)findViewById(R.id.checkBox2);
}
//Este mtodo se ejecutar cuando se presione
el botn
public void operar(View view) {
String valor1=et1.getText().toString();
String valor2=et2.getText().toString();
int nro1=Integer.parseInt(valor1);
int nro2=Integer.parseInt(valor2);
String resu="";
if (checkBox1.isChecked()==true) {
int suma=nro1+nro2;
resu="La suma es: "+ suma;
}
if (checkBox2.isChecked()==true) {
int resta=nro1-nro2;
resu=resu + " La resta es: "+ resta;
}
tv3.setText(resu);
}
}
Definimos dos objetos de la clase CheckBox como atributos de la clase:
private CheckBox checkBox1,checkBox2;
En el mtodo operar debemos definir dos if a la misma altura ya que los dos
controles de tipo CheckBox pueden estar seleccionados simultaneamente.
Definimos una variable de tipo String y la inicializamos con cadena vaca para
el caso en que los dos CheckBox no estn seleccionados:
String resu="";
if (checkBox1.isChecked()==true) {
int suma=nro1+nro2;
resu="La suma es: "+ suma;
}
if (checkBox2.isChecked()==true) {
int resta=nro1-nro2;
resu=resu + " La resta es: "+ resta;
}
tv3.setText(resu);
Control Spinner
El objetivo de este concepto es practicar lo visto hasta ahora e incorporar el
control visual Spinner
El control Spinner muestra una lista de String y nos permite seleccionar uno de
ellos. Cuando se lo selecciona se abre y muestra todos sus elementos para
permitir seleccionar uno de ellos.
Problema:
package androidya.proyecto005;
import
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.View;
android.widget.ArrayAdapter;
android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
public class Proyecto005Activity extends Activity
{
private Spinner spinner1;
private EditText et1,et2;
private TextView tv3;
/** Called when the activity is first
created. */
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et1=(EditText)findViewById(R.id.et1);
et2=(EditText)findViewById(R.id.et2);
tv3=(TextView)findViewById(R.id.tv3);
spinner1 = (Spinner)
findViewById(R.id.spinner1);
String
[]opciones={"sumar","restar","multiplicar","divid
ir"};
ArrayAdapter<String> adapter = new
ArrayAdapter<String>(this,android.R.layout.simple
_spinner_item, opciones);
spinner1.setAdapter(adapter);
}
//Este mtodo se ejecutar cuando se presione
el botn
public void operar(View view) {
String valor1=et1.getText().toString();
String valor2=et2.getText().toString();
int nro1=Integer.parseInt(valor1);
int nro2=Integer.parseInt(valor2);
String
selec=spinner1.getSelectedItem().toString();
if (selec.equals("sumar")) {
int suma=nro1+nro2;
String resu=String.valueOf(suma);
tv3.setText(resu);
} else
if (selec.equals("restar")) {
int resta=nro1-nro2;
String
resu=String.valueOf(resta);
tv3.setText(resu);
}
else
if (selec.equals("multiplicar"))
{
int multi=nro1*nro2;
String
resu=String.valueOf(multi);
tv3.setText(resu);
}
else
if (selec.equals("dividir"))
{
int divi=nro1/nro2;
String
resu=String.valueOf(divi);
tv3.setText(resu);
}
}
}
Definimos un objeto de la clase Spinner:
private Spinner spinner1;
new
Control ImageButton
Hemos visto la creacin de objetos de la clase Button, ahora veremos otra
clase muy similar a la anterior llamada ImageButton que tiene la misma filosofa
de manejo con la diferencia que puede mostrar una imagen en su superficie.
Problema:
Cdigo fuente:
package androidya.proyecto007;
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.View;
android.widget.TextView;
No olvidemos inicializar la propiedad OnClick del objeto ib1 con el nombre del
mtodo "llamar" (recordemos que esto lo hacemos presionando el botn
derecho del mouse sobre la imagen del objeto de la clase ImageButton y desde
la opcin properties accedemos a la propiedad OnClick)
Pero vimos que hay otras dos carpetas con nombres similares:
drawable-ldpi
drawable-hdpi
El objetivo de estas otras dos carpetas es guardar las mismas imgenes pero
con una resolucin mayor si la guardamos en drawable-hdpi y con una
resolucin menor al guardarla en drawable-ldpi.
Esto se hace si queremos que nuestra aplicacin sea ms flexible si se ejecuta
en un celular, en un tablet, en un televisor etc.
Debemos tener en cuenta estos tamaos:
En la carpeta res/drawable-mdpi/
(guardamos la imagen con el tamao original)
En la carpeta res/drawable-ldpi/
(guardamos la imagen con el tamao del 75% con respecto al de la carpeta
drawable-mdpi)
En la carpeta res/drawable-hdpi/
(guardamos la imagen con el tamao del 150% con respecto al de la carpeta
drawable-mdpi)
Es decir que nosotros queremos que cuando se presione el botn "Acerca De"
nos abra otra ventana (Activity) y nos muestre el nombre del programador.
2 - Ahora tenemos que crear el segundo Activity. Crearemos primero el archivo
XML. Presionamos el botn derecho sobre la carpeta layout y seleccionaremos
la
opcin
New
->
Android
XML
File
Aqu tenemos que definir el nombre del archivo XML (debe estar en
minsculas), lo llamaremos acercade:
package androidya.proyecto008;
import android.app.Activity;
import android.os.Bundle;
public class AcercaDe extends Activity {
/** Called when the activity is first
created. */
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.acercade);
}
}
Como podemos ver la clase AcercaDe hereda de la clase Activity e implementa
el mtodo onCreate para enlazar el archivo XML que creamos anteriormente.
4 - Otro paso fundamental es registrar el Activity en el archivo
"AndroidManifest.xml" que se encuentra en la raiz principal del proyecto.
Seleccionamos el archivo y activamos la pestaa : "Application", presionamos
el botn "add" y seleccionamos "Activity":
package androidya.proyecto008;
import
import
import
import
android.app.Activity;
android.content.Intent;
android.os.Bundle;
android.view.View;
package androidya.proyecto008;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
public class AcercaDe extends Activity {
/** Called when the activity is first
created. */
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.acercade);
}
public void cerrar(View view) {
finish();
}
}
Cuando se presiona el botn finalizar llamando al mtodo finish() que tiene por
objetivo liberar el espacio de memoria de esta actividad y pedir que se active la
actividad anterior.
Ahora nuestro programa est funcionando completamente:
Primer Activity:
Segundo Activity:
Problema propuesto
1. Realizar un programa que contenga dos Activity. En el primero que
solicite el ingreso de una clave (control Password) Si ingresa la clave
"abc123" activar el segundo Activity mostrando en un TextView un
mensaje de bienvenida (mostrar en un TextView si se ingrese la clave
incorrecta).
Llamar
al
proyecto:
proyecto009.
En tiempo de ejecucin los dos Activity deben mostrarse algo similar a
esto:
package androidya.proyecto010;
import
import
import
import
import
android.app.Activity;
android.content.Intent;
android.os.Bundle;
android.view.View;
android.widget.EditText;
package androidya.proyecto010;
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.View;
android.webkit.WebView;
de
texto
llamado
"notas.txt".
Cada vez que se ingrese al programa verificar si existe el archivo de textos
"notas.txt" proceder a su lectura y almacenamiento de datos en el EditText.
Crear un proyecto en Eclipse de tipo "Android Project" y definir como nombre:
proyecto013 y localizarlo en el paquete androidya.proyecto013.
La interfaz visual, los controles y sus ID son los siguientes:
package androidya.proyecto013;
import
import
import
import
java.io.BufferedReader;
java.io.IOException;
java.io.InputStreamReader;
java.io.OutputStreamWriter;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class Proyecto013Activity extends Activity
{
private EditText et1;
/** Called when the activity is first
created. */
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et1=(EditText)findViewById(R.id.et1);
String []archivos=fileList();
if (existe(archivos,"notas.txt"))
try {
InputStreamReader archivo=new
InputStreamReader(openFileInput("notas.txt"));
BufferedReader br=new
BufferedReader(archivo);
String linea=br.readLine();
String todo="";
while (linea!=null)
{
todo=todo+linea+"\n";
linea=br.readLine();
}
br.close();
archivo.close();
et1.setText(todo);
} catch (IOException e)
{
}
}
private boolean existe(String[]
archivos,String archbusca)
{
for(int f=0;f<archivos.length;f++)
if (archbusca.equals(archivos[f]))
return true;
return false;
}
public void grabar(View v) {
try {
OutputStreamWriter archivo = new
OutputStreamWriter(openFileOutput("notas.txt",Act
ivity.MODE_PRIVATE));
archivo.write(et1.getText().toString());
archivo.flush();
archivo.close();
}catch (IOException e)
{
}
Toast t=Toast.makeText(this,"Los datos
fueron grabados", Toast.LENGTH_SHORT);
t.show();
finish();
}
}
Veamos primero como grabamos datos en un archivo de texto. Esto se hace
en el mtodo grabar que se ejecuta cuando presionamos el botn "grabar"
(recordemos de inicializar la propiedad "OnClick" del botn):
public void grabar(View v) {
try {
OutputStreamWriter
archivo
=
new
OutputStreamWriter(openFileOutput("notas.txt",Activity.MODE_PRIVATE));
clase Activity que le pasamos como parmetro el nombre del archivo de texto y
el modo de apertura.
Seguidamente si el archivo se cre correctamente procedemos a llamar al
mtodo write y le pasamos el String a grabar, en este caso extraemos los datos
del EditText:
archivo.write(et1.getText().toString());
Luego de grabar con el mtodo write llamamos al mtodo flush para que
vuelque todos los datos que pueden haber quedado en el buffer y procedemos
al cerrado del archivo:
archivo.flush();
archivo.close();
Todo esto est cerrado en un try/catch para verificar si sucede algn error en la
apertura del archivo.
Finalmente mostramos un mensaje temporal en pantalla utilizando la clase
Toast:
Toast
t=Toast.makeText(this,"Los
Toast.LENGTH_SHORT);
t.show();
finish();
datos
fueron
grabados",
datos
fueron
grabados",
archivo=new
String todo="";
Llamamos al mtodo
InputStreamReader:
close
de
la
clase
BufferedReader
al
del
br.close();
archivo.close();
Cargamos el EditText con el contenido del String que contiene todos los datos
del archivo de texto:
et1.setText(todo);
El mtodo existe llega un vector de tipo String y otro String a buscar. Dentro de
un for verificamos el String a buscar con cada uno de los String del vector, si lo
encontramos retornamos true. Si recorre todo el for sin encontrarlo fuera del for
retornamos false:
private boolean existe(String[] archivos,String archbusca)
{
for(int f=0;f<archivos.length;f++)
if (archbusca.equals(archivos[f]))
return true;
return false;
}
package androidya.proyecto014;
import
import
import
import
import
import
import
java.io.BufferedReader;
java.io.File;
java.io.FileInputStream;
java.io.FileOutputStream;
java.io.IOException;
java.io.InputStreamReader;
java.io.OutputStreamWriter;
import
import
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.os.Environment;
android.view.View;
android.widget.EditText;
android.widget.Toast;
String nomarchivo =
et1.getText().toString();
String
contenido=et2.getText().toString();
try
{
File tarjeta =
Environment.getExternalStorageDirectory();
File file = new
File(tarjeta.getAbsolutePath(), nomarchivo);
OutputStreamWriter osw =new
OutputStreamWriter(new FileOutputStream(file));
osw.write(contenido);
osw.flush();
osw.close();
Toast.makeText(this,"Los datos fueron
grabados
correctamente",Toast.LENGTH_SHORT).show();
et1.setText("");
et2.setText("");
}
catch (IOException ioe)
{
}
}
public void recuperar(View v) {
String nomarchivo =
et1.getText().toString();
File tarjeta =
Environment.getExternalStorageDirectory();
File file = new
File(tarjeta.getAbsolutePath(), nomarchivo);
try {
FileInputStream fIn = new
FileInputStream(file);
InputStreamReader archivo=new
InputStreamReader(fIn);
BufferedReader br=new
BufferedReader(archivo);
String linea=br.readLine();
String todo="";
while (linea!=null)
{
todo=todo+linea+"\n";
linea=br.readLine();
}
br.close();
archivo.close();
et2.setText(todo);
} catch (IOException e)
{
}
}
}
El mtodo para grabar los datos en un archivo de texto localizado en una
tarjeta SD comienza obteniendo el directorio raiz de la tarjeta a travs del
mtodo getExternalStorageDirectory(), el mismo retorna un objeto de la clase
File.
public void grabar(View v) {
String nomarchivo = et1.getText().toString();
String contenido=et2.getText().toString();
try
{
File tarjeta = Environment.getExternalStorageDirectory();
Cerramos el archivo:
osw.flush();
osw.close();
osw
=new
OutputStreamWriter(new
Toast.makeText(this,"Los
datos
correctamente",Toast.LENGTH_SHORT).show();
et1.setText("");
et2.setText("");
}
catch (IOException ioe)
{
}
}
fueron
grabados
identidad), nombre del votante, colegio donde vota y nmero de mesa donde
vota.
El programa debe permitir:
1
2
3
4
Carga de personas.
Consulta por el dni (para saber donde vota)
Borrado de personas
Modificacin de datos.
package androidya.proyecto015;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import
android.database.sqlite.SQLiteDatabase.CursorFact
ory;
import android.database.sqlite.SQLiteOpenHelper;
public class AdminSQLiteOpenHelper extends
SQLiteOpenHelper {
public AdminSQLiteOpenHelper(Context
context, String nombre, CursorFactory factory,
int version) {
super(context, nombre, factory,
version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table votantes(dni
integer primary key, nombre text, colegio text,
nromesa integer)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int
versionAnte, int versionNue) {
db.execSQL("drop table if exists
votantes");
String
nombre,
void
onUpgrade(SQLiteDatabase
db,
int
versionAnte,
int
Ahora veamos la otra clase que implementar las altas, bajas, modificaciones y
consultas:
package androidya.proyecto015;
import
import
import
import
import
import
import
import
android.app.Activity;
android.content.ContentValues;
android.database.Cursor;
android.database.sqlite.SQLiteDatabase;
android.os.Bundle;
android.view.View;
android.widget.EditText;
android.widget.Toast;
et2.setText("");
et3.setText("");
et4.setText("");
Toast.makeText(this, "Se cargaron los
datos de la persona", Toast.LENGTH_SHORT).show();
}
public void consulta(View v) {
AdminSQLiteOpenHelper admin=new
AdminSQLiteOpenHelper(this, "administracion",
null, 1);
SQLiteDatabase
bd=admin.getWritableDatabase();
String dni=et1.getText().toString();
Cursor fila=bd.rawQuery("select
nombre,colegio,nromesa from votantes where
dni="+dni+"",null);
if (fila.moveToFirst())
{
et2.setText(fila.getString(0));
et3.setText(fila.getString(1));
et4.setText(fila.getString(2));
}
else
Toast.makeText(this, "No existe una
persona con dicho dni",
Toast.LENGTH_SHORT).show();
bd.close();
}
public void baja(View v) {
AdminSQLiteOpenHelper admin=new
AdminSQLiteOpenHelper(this, "administracion",
null, 1);
SQLiteDatabase
bd=admin.getWritableDatabase();
String dni=et1.getText().toString();
int cant=bd.delete("votantes",
"dni="+dni+"",null);
bd.close();
et1.setText("");
et2.setText("");
et3.setText("");
et4.setText("");
if (cant==1)
Toast.makeText(this, "Se borr la
persona con dicho documento",
Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, "No existe una
persona con dicho documento",
Toast.LENGTH_SHORT).show();
}
public void modificacion(View v) {
AdminSQLiteOpenHelper admin=new
AdminSQLiteOpenHelper(this, "administracion",
null, 1);
SQLiteDatabase
bd=admin.getWritableDatabase();
String dni=et1.getText().toString();
String nombre=et2.getText().toString();
String colegio=et3.getText().toString();
String nromesa=et4.getText().toString();
ContentValues registro=new
ContentValues();
registro.put("nombre",nombre);
registro.put("colegio",colegio);
registro.put("nromesa",nromesa);
int cant = bd.update("votantes",
registro, "dni="+dni, null);
bd.close();
if (cant==1)
1 - Alta de datos.
Cuando se presiona el botn alta se ejecuta el mtodo "alta" recordemos
inicializar la propiedad "OnClick" del botn desde la ventana de visualizacin
del
archivo
XML.
Lo primero que hacemos en este mtodo es crear un objeto de la clase que
planteamos anteriormente y le pasamos al constructor this (referencia del
Activity actual), "administracion" (es el nombre de la base de datos que
crearemos en el caso que no exista) luego pasamos null y un uno indicando
que es la primer versin de la base de datos (en caso que cambiemos la
estructura o agreguemos tablas por ejemplo podemos pasar un dos en lugar de
un uno para que se ejecute el mtodo onUpgrade donde indicamos la nuestra
estructura de la base de datos)
Luego de crear un objeto de la clase AdminSqLiteOpenHelper procedemos a
crear un objeto de la clase SQLiteDataBase llamando al mtodo
getWritableDatabase (la base de datos se abre en modo lectura y escritura).
Creamos un objeto de la clase ContentValues y mediante el mtodo put
inicializamos
todos
tos
campos
a
cargar.
Seguidamente llamamos al mtodo insert de la clase SQLiteDatabase pasando
en el primer parmetro el nombre de la tabla, como segundo parmetro un null
y por ltimo el objeto de la clase ContentValues ya inicializado (este mtodo es
el que provoca que se inserte una nueva fila en la tabla votantes en la base de
datos
llamada
administracion)
2 - Consulta de datos.
Cuando se presiona el botn "Consulta por DNI" se ejecuta el mtodo consulta:
public void consulta(View v) {
AdminSQLiteOpenHelper
admin=new
AdminSQLiteOpenHelper(this,
"administracion", null, 1);
SQLiteDatabase bd=admin.getWritableDatabase();
String dni=et1.getText().toString();
Cursor fila=bd.rawQuery("select nombre,colegio,nromesa
from
votantes where dni="+dni+"",null);
if (fila.moveToFirst())
{
et2.setText(fila.getString(0));
et3.setText(fila.getString(1));
et4.setText(fila.getString(2));
}
else
Toast.makeText(this, "No existe una persona con dicho dni",
Toast.LENGTH_SHORT).show();
bd.close();
}
4 - Modificacin de datos.
En la modificacin de datos debemos crear un objeto de la clase
ContentValues y mediante el mtodo put almacenar los valores para cada
campo que ser modificado. Luego se llama al mtodo update de la clase
SQLiteDatabase pasando el nombre de la tabla, el objeto de la clase
ContentValues y la condicin del where (el cuanto parmetro en este ejemplo
no se lo emplea)
public void modificacion(View v) {
AdminSQLiteOpenHelper
admin=new
AdminSQLiteOpenHelper(this,
"administracion", null, 1);
SQLiteDatabase bd=admin.getWritableDatabase();
String dni=et1.getText().toString();
String nombre=et2.getText().toString();
String colegio=et3.getText().toString();
String nromesa=et4.getText().toString();
ContentValues registro=new ContentValues();
registro.put("nombre",nombre);
registro.put("colegio",colegio);
registro.put("nromesa",nromesa);
int cant = bd.update("votantes", registro, "dni="+dni, null);
bd.close();
if (cant==1)
Toast.makeText(this,
"se
modificaron
los
datos",
Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, "no existe una persona con dicho
documento", Toast.LENGTH_SHORT).show();
}
Layout (TableLayout)
El Layout de tipo TableLayout agrupa componentes en filas y columnas. Un
TableLayout contiene un conjunto de componentes de tipo TableRow que es el
que agrupa componentes visuales por cada fila (cada fila puede tener distinta
cantidad de componentes visuales)
Cuando disponemos un control de Layouts de tipo TableLayout
automticamente crea cuatro componentes de tipo TableRow que los podemos
ver en la ventana "Outline". Podemos borrar o agregar componentes de tipo
TableRow segn las necesidades de nuestro TableLayout:
Otra propiedad que nos puede ser til inicializar en los controles que se
disponen dentro de un TableLayout es layout_span. Esta propiedad permite
que un control se expanda ms de una celda.
En el siguiente ejemplo el objeto de la clase Button de la segunda fila hemos
dispuesto la propiedad layout_span con el valor 2:
Layout (RelativeLayout)
Hay varias posibilidades cuando empleamos el RelativeLayout. Primero
podemos alinear un control con respecto al Layout que lo contiene. Para probar
esto dispondremos un control de tipo RelativeLayout y fijaremos la propiedad
Layout_weight con el valor 1 (esto hace que el RelativeLayout ocupe
completamente la pantalla) Luego dispondremos un botn en cada vrtice y
veremos que propiedades son afectadas e inicializadas:
Como podemos ver cada control que agregamos se inicializan alguna de las
propiedades:
alignParentLeft
alignParentRight
alignParentTop
alignParentBottom
centerHorizontal
centerVertical
centerInParent
Con este tipo de layout podemos disponer un control en forma relativa a otro
control que haya dentro del RelativeLayout. Veamos un ejemplo:
En este ejemplo hemos dispuesto el segundo botn debajo (below) del botn 1
y alineado a la izquierda (luego si desplazamos el botn 1 se desplazar el
botn 2)
La posicin relativa con respecto a otro control puede ser:
above (por encima)
below (debajo)
toLeftOf (a la izquierda de)
toRightOf (a la derecha)
Layout (FrameLayout)
El control de tipo FrameLayout dispone dentro del contenedor todos los
controles visuales alineados al vrtice superior izquierdo. Es decir si
disponemos dos o ms controles los mismos se apilan.
package androidya.proyecto016;
import
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.View;
android.widget.Button;
android.widget.ImageView;
Icono de la aplicacin
Cuando creamos un proyecto para implementar una aplicacin con el plugin de
Android nos crea un cono por defecto:
Como las resoluciones de los dispositivos Android pueden ser muy distintos (un
celular, una tablet, un televisor etc.) se recomienda proporcionar mltiples
copias de cada imagen de recursos a diferentes resoluciones y almacenarlos
en las carpetas nombradas respetando las siguientes reglas:
res/drawable-mdpi/
El cono debe ser de 48*48 pxeles.
res/drawable-ldpi/
75% del tamao de las imgenes almacenadas en la carpeta drawablemdpi
El cono debe ser de 36*36 pxeles.
res/drawable-hdpi/
150% del tamao de las imgenes almacenadas en la carpeta drawablemdpi
El cono debe ser de 72*72 pxeles.
Problema:
Crear una aplicacin, dibujar y almacenar tres archivos llamados icon.png.
Tener en cuenta que el archivo que se almacena en la carpeta drawable-mdpi
debe ser de 48 pxeles, el de la carpeta drawable-mdpi de 36 pxeles y el de la
carpeta drawable-hdpi debe ser de 72 pxeles de ancho y alto. Ejecutar la
aplicacin y ver el cono nuevo.
Problema:
Disponer dos botones con las etiquetas: Gato y Len, luego cuando se
presione reproducir el archivo de audio respectivo. Los archivos de sonidos
almacenarlos en la misma aplicacin.
Luego de crear el proyecto procedemos a crear una carpeta llamada raw que
dependa de la carpeta res, almacenamos los dos archivos mp3 en dicha
carpeta:
package androidya.proyecto019;
import
import
import
import
android.app.Activity;
android.media.MediaPlayer;
android.os.Bundle;
android.view.View;
setContentView(R.layout.main);
}
public void presionGato(View v) {
MediaPlayer
mp=MediaPlayer.create(this,R.raw.gato);
mp.start();
}
public void presionLeon(View v) {
MediaPlayer mp=MediaPlayer.create(this,
R.raw.leon);
mp.start();
}
}
Cuando copiamos los archivos mp3 se genera luego en la clase R la referencia
a los dos archivos y posteriormente los podemos rescatar cuando creamos un
objeto de la clase MediaPlayer:
MediaPlayer mp=MediaPlayer.create(this,R.raw.gato);
package androidya.proyecto020;
import
import
import
import
android.app.Activity;
android.media.MediaPlayer;
android.os.Bundle;
android.view.View;
import android.widget.Button;
public class Proyecto020Activity extends Activity
{
MediaPlayer mp;
Button b1;
int posicion=0;
/** Called when the activity is first
created. */
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1=(Button)findViewById(R.id.button5);
}
public void destruir() {
if(mp!=null)
mp.release();
}
public void iniciar(View v) {
destruir();
mp =
MediaPlayer.create(this,R.raw.numeros);
mp.start();
String op=b1.getText().toString();
if (op.equals("No reproducir en forma
circular"))
mp.setLooping(false);
else
mp.setLooping(true);
}
public void pausar(View v) {
int
posicion=0;
Problema:
Disponer un botn con la etiqueta: "Gato", luego cuando se presione reproducir
el archivo de audio respectivo. El archivo de sonido almacenarlo en la tarjeta
SD.
Luego de crear el proyecto debemos ejecutar la aplicacin en modo depuracin
para poder acceder a la tarjeta SD que crea el emulador Android. Para ejecutar
la aplicacin en modo "Debug" presionamos el botn derecha del mouse sobre
el proyecto y seleccionamos la opcin "Debug A" "Android Aplication":
Una vez que se este ejecutando la aplicacin (no importa que todava no
hemos implementado su funcionalidad) procedemos a abrir la ventana "File
Explorer" de Android. Seleccionamos del men de opciones de Eclipse:
Window -> Show View -> Other :
package androidya.proyecto021;
import android.app.Activity;
import
import
import
import
import
android.media.MediaPlayer;
android.net.Uri;
android.os.Bundle;
android.os.Environment;
android.view.View;
Recordar que para ejecutar este proyecto se debe subir un archivo mp3
llamado "gato.mp3" a la tarjeta SD.
Problema:
Disponer un botn con la etiqueta: "Gato", luego cuando se presione reproducir
el archivo de audio respectivo. El archivo de sonido almacenarlo en la tarjeta
SD.
Luego de crear el proyecto debemos ejecutar la aplicacin en modo depuracin
para poder acceder a la tarjeta SD que crea el emulador Android. Para ejecutar
la aplicacin en modo "Debug" presionamos el botn derecha del mouse sobre
el proyecto y seleccionamos la opcin "Debug A" "Android Aplication":
Una vez que se este ejecutando la aplicacin (no importa que todava no
hemos implementado su funcionalidad) procedemos a abrir la ventana "File
Explorer" de Android. Seleccionamos del men de opciones de Eclipse:
Window -> Show View -> Other :
package androidya.proyecto021;
import
import
import
import
android.app.Activity;
android.media.MediaPlayer;
android.net.Uri;
android.os.Bundle;
import android.os.Environment;
import android.view.View;
public class Proyecto021Activity extends Activity
{
/** Called when the activity is first
created. */
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void ejecutar(View v) {
Uri datos =
Uri.parse(Environment.getExternalStorageDirectory
().getPath() +"/gato.mp3");
MediaPlayer mp=MediaPlayer.create(this,
datos);
mp.start();
}
}
Creamos un objeto de la clase Uri llamando al mtodo parse donde indicamos
el path y nombre del archivo a recuperar:
Uri
datos
Uri.parse(Environment.getExternalStorageDirectory().getPath()
+"/gato.mp3");
Recordar que para ejecutar este proyecto se debe subir un archivo mp3
llamado "gato.mp3" a la tarjeta SD.
Problema:
Disponer un botn con la etiqueta: "Ejecutar mp3 con el reproductor propio de
Android", luego cuando se presione reproducir el archivo de audio respectivo
con el reproductor de Android via Intent. El archivo de sonido almacenarlo en la
tarjeta SD.
Luego de crear el proyecto debemos ejecutar la aplicacin en modo depuracin
para poder acceder a la tarjeta SD que crea el emulador Android. Para ejecutar
la aplicacin en modo "Debug" presionamos el botn derecha del mouse sobre
el proyecto y seleccionamos la opcin "Debug A" "Android Aplication":
Una vez que se este ejecutando la aplicacin (no importa que todava no
hemos implementado su funcionalidad) procedemos a abrir la ventana "File
Explorer" de Android. Seleccionamos del men de opciones de Eclipse:
Window -> Show View -> Other :
package androidya.proyecto024;
import
import
import
import
import
android.app.Activity;
android.content.Intent;
android.net.Uri;
android.os.Bundle;
android.view.View;
Creamos el archivo "Android XML File" siguiendo los mismos pasos indicados en
el concepto anterior, procedemos a crear el primer Item y luego creamos el
submen para dicho menuitem como lo indica la siguiente imagen:
Luego aadimos varios Menu Item al Sub-Menu (uno por cada sitio web a
enlazar):
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.menu1, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent i;
switch (item.getItemId()) {
case R.id.item2: i = new Intent("android.intent.action.VIEW",
Uri.parse("http://www.google.com"));
startActivity(i);
break;
case R.id.item3: i = new Intent("android.intent.action.VIEW",
Uri.parse("http://www.yahoo.com"));
startActivity(i);
break;
case R.id.item4: i = new Intent("android.intent.action.VIEW",
Uri.parse("http://www.bing.com"));
startActivity(i);
break;
case R.id.item5: finish();
}
return true;
}
}
El mtodo onCreateOptionsMenu es idntico al concepto anterior. En el mtodo
onOptionsItemSelected verificamos cual de los MenuItem es seleccionado y
procedemos a invocar mediante un Intent al navegador configurado por defecto
para el dispositivo.
La visualizacin del submen en tiempo de ejecucin es similar a:
Problema:
Confeccionar una aplicacin que muestre un men con dos opciones: una que
active el navegador con YouTube y otra que active Facebook. Disponer un
cono para cada MenuItem.
Luego de crear el proyecto procedemos a buscar dos conos representativos
de Youtube y Facebook (dos archivos png de 48 pxeles de ancho y alto) y los
almacenamos en la carpeta drawable-mdpi.
Luego de refrescar la carpeta debemos tener en nuestro proyecto en dicha
carpeta tres archivos:
package androidya.proyecto029;
import
import
import
import
import
android.app.Activity;
android.content.Intent;
android.net.Uri;
android.os.Bundle;
android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class Proyecto029Activity extends Activity
{
/** Called when the activity is first
created. */
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.menu1, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem
item) {
Intent i;
switch (item.getItemId()) {
case R.id.item1: i = new
Intent("android.intent.action.VIEW",
Uri.parse("http://www.youtube.com"));
startActivity(i);
break;
case R.id.item2: i = new
Intent("android.intent.action.VIEW",
Uri.parse("http://www.facebook.com"));
startActivity(i);
}
return true;
}
}
Luego cuando lo ejecutamos podemos observar el cono que se muestra en
cada MenuItem:
Men contextuales
Otra variante de men de opciones son los men contextuales que se pueden
asociar a distintos componentes visuales del formulario (TextView, EditText,
ListView
etc.)
Un men contectual aparece cuando el usuario presiona por un tiempo ms o
menos prolongado el control visual.
Problema:
Confeccionar una aplicacin que muestre un EditText y asociarle un men
contextual que permita cambiar el color de fondo del mismo. El men debe
permitir seleccionar entre el rojo, verde y azul.
Primero creamos un proyecto y creamos una interfaz con un control de tipo
EditText:
Ahora veamos como asociar el archivo XML donde definimos el men con el
cdigo Java:
package androidya.proyecto030;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
public class Proyecto030Activity extends Activity {
EditText et1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et1=(EditText)findViewById(R.id.editText1);
registerForContextMenu(et1);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo
menuInfo)
{
menu.setHeaderTitle("Elija el color de fondo:");
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu1, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item1:et1.setBackgroundColor(Color.rgb(255, 0, 0)) ;
break;
case R.id.item2:et1.setBackgroundColor(Color.rgb(0, 255, 0)) ;
break;
case R.id.item3:et1.setBackgroundColor(Color.rgb(0, 0, 255)) ;
break;
}
return true;
}
}
En el mtodo onCreateContextMenu asociamos el archivo XML llamando al
mtodo
inflate
de
la
clase
MenuInflate.
Podemos tambin llamar al mtodo setHeaderTitle para mostrar un ttulo en el
men emergente.
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo
menuInfo)
{
menu.setHeaderTitle("Elija el color de fondo:");
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu1, menu);
}
Para la captura de eventos de los MenuItem debemos implementar el mtodo
onContextItemSelected donde mediante un switch verificamos cual de los
MenuItem fue seleccionado y cambiamos el color de fondo del control EditText:
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item1:et1.setBackgroundColor(Color.rgb(255, 0, 0)) ;
break;
case R.id.item2:et1.setBackgroundColor(Color.rgb(0, 255, 0)) ;
break;
case R.id.item3:et1.setBackgroundColor(Color.rgb(0, 0, 255)) ;
break;
}
return true;
}
AlertDialog simple
El dilogo ms simple que podemos crear con Android en una ventana con un
ttulo, un mensaje y un botn para cerrarlo.
Muy til si tenemos que informar al usuario y no queremos que la ventana
desaparezca hasta que el usuario presione un botn para ocultar el dilogo.
Problema:
Confeccionar una aplicacin que muestre un dilogo cada vez que se inicie la
aplicacin informando que el programa que est ejecutando es un programa de
prueba y no el completo.
Primero
creamos
un
proyecto
llamado:
proyecto031
Lo almacenamos en el paquete: androidya.proyecto031
El cdigo fuente de la aplicacin queda como sigue:
package androidya.proyecto021;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
public class Proyecto031Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Importante");
package androidya.proyecto032;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.Toast;
public class Proyecto032Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AlertDialog.Builder dialogo1 = new AlertDialog.Builder(this);
dialogo1.setTitle("Importante");
dialogo1.setMessage(" Acepta la ejecucin de este programa en modo
prueba ?");
dialogo1.setCancelable(false);
dialogo1.setPositiveButton("Confirmar", new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogo1, int id) {
aceptar();
}
});
dialogo1.setNegativeButton("Cancelar", new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogo1, int id) {
cancelar();
}
});
dialogo1.show();
}
public void aceptar() {
Toast t=Toast.makeText(this,"Bienvenido a probar el programa.",
Toast.LENGTH_SHORT);
t.show();
}
public void cancelar() {
finish();
}
}
Creamos un objeto de la clase AlertDialog a travs de la clase Builder:
setContentView(R.layout.main);
}
public void prueba1(View v) {
Toast toast = Toast.makeText(this, "Mensaje 1", Toast.LENGTH_SHORT);
toast.show();
}
public void prueba2(View v) {
Toast toast = Toast.makeText(this, "Mensaje 2", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.show();
}
public void prueba3(View v) {
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast1, null);
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
}
Para el evento click del primer botn mostramos el mensaje con las estructura
ms simple que nos provee la clase Toast. Definimos un objeto de la clase Toast y
llamamos al mtodo makeText pasando como parmetro la referencia del Activity,
el mensaje a mostrar y una constante indicando si queremos que el mensaje
aparezca por un perodo corto o largo de tiempo en la pantalla. Por ltimo
llamamos al mtodo show para que se muestre el mensaje:
public void prueba1(View v) {
Toast toast = Toast.makeText(this, "Mensaje 1", Toast.LENGTH_SHORT);
toast.show();
}
PRACTICA INTEGRADORA
Nombre
Competencias a
desarrollar
Habilidades
Instrucciones para el
alumno
Instrucciones para el
docente
Recursos, materiales
de apoyo
Conocimientos a
adquirir
Competencias
genricas a
desarrollar
Programando mi phone
NO. l
Errores
Confundir las sentencias de programacin en java y utilizarlas de manera
equivocada.
Contingencias
No contar con los materiales de apoyo, tales como el sistema operativo android, o
con los dispositivos mviles.
Conclusiones de la competencia 1
Durante el desarrollo de esta competencia el alumno adquirir los saberes,
habilidades, atributos y actitudes necesarias sobre los forma de accesar a
Eclipse y desarrollar las aplicaiones de software que puedan ser ejecutadas desde
un dispositivo mvil, tomando en cuenta los requerimientos del usuario.
Saberes
1. Conceptos bsicos
2. Navegando por la red
3. Qu vamos a desarrollar? Un sitio web o una aplicacin?
Ejemplos:
1. Conozco plataformas privadas
Atributos de la Competencia
1.- Conocer una plataforma cerrada
2.- Conocer los dispositivos mviles de plataforma cerrada
Introduccin a la Competencia 2
En la competencia pasada conociste los beneficios de una aplicain abierta, el
sistema operativo Android, aprendiste a utilizar herramientas de desarrollo como
Eclipse + ADT plugin, Android SDK/NDK y un Emulador para programar tu
dispositivo mvil.
Sin embargo la creacin de comunidades de programadores entorno a una
determinada plataforma o sistema operativo, con tutoriales especficos y
herramientas compartidas, est sufriendo una evolucin hacia la creacin
privativa gracias al auge de los smartphones o telfonos inteligentes.
(la
clave
que
se
usa
para
instalar
validar
Windows)
Costo
Periodo
Apple Store
US$99
Suscripcin anual
Andoird Market
US$25
Al registrarse
Ovi Store
Al registrarse
Windows Phone
Marketplace
US$99
Gratuito para
estudiantes a travs
deDreamspark
Suscripcin anual
Un ao de
suscripcin gratuita
para estudiantes
(No. 1)
Saberes
TITULO
Saberes a adquirir
Competencias Genricas:
. Se expresa y comunica.
Escucha, interpreta y emite mensajes pertinentes en distintos contextos
mediante la utilizacin de medios, cdigos y herramientas apropiados.
Manera didctica de lograrla:
A travs de una actitud de orden, tomando en cuenta la investigacin sustentada
con acervo bibliogrfico.
Saberes
(No. 2)
investigacin
Ejercicio
(No. 1)
Competencias Genricas:
. Se expresa y comunica.
Escucha, interpreta y emite mensajes pertinentes en distintos contextos
mediante la utilizacin de medios, cdigos y herramientas apropiados.
o Atributo: Expresa ideas y conceptos mediante representaciones,
lingsticas, matemticas o grficas.
Conclusin de la competencia 2
En esta competencia descubriste que el uso de las aplicaciones mviles no solo se
refiere a los telfonos celulares sino a otro tipo de dispositivos, y que los beneficios
o prestaciones que ofrecen se incrementan da a da, por ejemplo:
Acceso a internet y conectividad mediante Bluetooth
Envo de SMS
Acelermetros
Cmaras integradas
Informacin de localizacin de GPS
Sensores de orientacin
Aceleracin 2D y 3D
BIBLIOGRAFA
http://en.wikipedia.org/wiki/Maemo
http://talk.maemo.org/showthread.php?p=319423
http://maemo.org/
http://es.wikipedia.org/wiki/Maemo
http://www.htc.com/www/press.aspx
http://en.wikipedia.org/wiki/Android_(operating_system)
http://androidandme.com/category/phones/
http://www.engadget.com/tag/android/