Sei sulla pagina 1di 9

1

Programación para Dispositivos Móviles


Tema: 1 – Estructura básica de una aplicación Android.
Laboratorio: 2 – Aplicación Android de estructura básica – Índice de Masa Corporal.
Modalidad: Individual.

Competencia específica: desarrolla una aplicación Android de estructura básica que calcule el índice de masa corporal
de una persona.

Enunciado del problema

El índice de masa corporal (IMC) es una medida de asociación entre el peso y la talla de un individuo. Se calcula de
acuerdo a la siguiente fórmula:
𝑝𝑒𝑠𝑜
𝐼𝑀𝐶 =
𝑒𝑠𝑡𝑎𝑡𝑢𝑟𝑎2

Donde el peso se expresa en kilogramos y la estatura en metros (el cuadrado de la estatura se expresará en metros
cuadrados).

En los adultos, el IMC se ha utilizado para evaluar el estado nutricional, de acuerdo con los valores propuestos por la
Organización Mundial de la Salud (OMS).

Clasificación IMC (kg/m2)


Peso bajo Menos de 18.5
Peso normal De 18.5 a 24.99
Sobrepeso De 25.0 a 29.99
Obesidad De 30.00 a 39.99
Obesidad extrema Más de 40.0

Escriba una aplicación Android que calcule el índice de masa corporal (IMC), a partir del peso en kilogramos y la estatura
en metros de una persona adulta e indique su estado nutricional.

Requisitos para la práctica

Para realizar esta práctica de laboratorio se requieren los siguientes elementos:


1. Computadora personal con sistema operativo Windows 7 o superior, MaxOS o Linux.
2. Acceso a Internet.
3. Java Development Kit (JDK), versión 7 o posterior.
4. Android Studio, versión 1.5 o posterior.
5. Tener instalado el API 16: Android 4.1, Jelly Bean.
6. Git 2.7 o posterior
7. Haber realizado la lectura sobre Uso de Git.
8. Haber realizado la lectura sobre Estructura de una aplicación Android.

Procedimiento

Para realizar la actividad desarrolle los siguientes puntos:

1) Ejecute Android Studio. Inicie un nuevo proyecto con los siguientes datos:
Nombre de la aplicación: Imc
Dominio de la organización: Use el dominio de su organización. O construya un dominio
utilizando su nombre y primer apellido (por ejemplo,
android.jorgechuc.com, este será el dominio mencionado durante la
práctica. Use el dominio registrado en la creación del proyecto)
Plataforma: Phone and Tablet
SDK mínimo: Seleccione el API acordado para el curso (por ejemplo, API 16:
Android 4.1, Jelly Bean)
Activity a utilizar: Empty Activity
Nombre de la Activity MainActivity
Nombre del layout activity_main
Ing. Jorge Luis Chuc López
2
Definir el layout de la Activity
2) Si no está disponible para editar, abra el layout activity_main.xml. Cámbiese al modo Text de edición del layout y
modifíquelo para cambiar el elemento raíz de RelativeLayout (o
android.support.constraint.ConstraintLayout, dependiendo de la versión de Android Studio que tenga
instalada) a LinearLayout, para que quede como el siguiente código xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.jorgechuc.android.imc.MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"/>

</LinearLayout>
3) Elimine el elemento TextView que aparece en el archivo activity_main.xml.
4) Agregue los componentes que se señalan en la siguiente jerarquía:
Widget Nivel Atributo Valor
TextView 1 android:layout_width wrap_content
android:layout_height wrap_content
android:text Proporcione el peso en kilogramos:
EditText 1 android:layout_width match_parent
android:layout_height wrap_content
TextView 1 android:layout_width wrap_content
android:layout_height wrap_content
android:text Proporcione la estatura en metros:
EditText 1 android:layout_width match_parent
android:layout_height wrap_content
Button 1 android:layout_width wrap_content
android:layout_height wrap_content
android:text Calcular
Button 1 android:layout_width wrap_content
android:layout_height wrap_content
android:text Limpiar
TextView 1 android:layout_width wrap_content
android:layout_height wrap_content
android:text El Indice de Masa Corporal (IMC) es
TextView 1 android:layout_width wrap_content
android:layout_height wrap_content
android:text 0.0
5) El código XML deberá verse como lo siguiente (Intenta hacerlo primero, no lo copies):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.jorgechuc.android.imc.MainActivity">

<TextView
Ing. Jorge Luis Chuc López
3
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Proporcione el peso:"/>

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Proporcione la estatura:"/>

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Calcular"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Limpiar"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="El Índice de Masa Corporal (IMC) es:"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0.0"/>

</LinearLayout>
6) Vea el Preview del layout y será similar a la siguiente gráfica:

Ing. Jorge Luis Chuc López


4

7) Modifique el layout para que los dos botones queden dentro de un LinearLayout horizontal, de tal manera que la
jerarquía deberá quedar como se muestra a continuación:
Widget Nivel Atributo Valor
TextView 1 android:layout_width wrap_content
android:layout_height wrap_content
android:text Proporcione el peso en kilogramos:
EditText 1 android:layout_width match_parent
android:layout_height wrap_content
TextView 1 android:layout_width wrap_content
android:layout_height wrap_content
android:text Proporcione la estatura en metros:
EditText 1 android:layout_width match_parent
android:layout_height wrap_content
LinearLayout 1 android:layout_width match_parent
android:layout_height wrap_content
android:orientation Horizontal
Button 2 android:layout_width wrap_content
android:layout_height wrap_content
android:text Calcular
Button 2 android:layout_width wrap_content
android:layout_height wrap_content
android:text Limpiar
TextView 1 android:layout_width wrap_content
android:layout_height wrap_content
android:text El Indice de Masa Corporal (IMC) es
TextView 1 android:layout_width wrap_content
android:layout_height wrap_content
android:text 0.0
8) El código XML deberá verse como lo siguiente (de nuevo, intenta hacerlo primero, no lo copies):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
Ing. Jorge Luis Chuc López
5
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.jorgechuc.android.imc.MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Proporcione el peso:"/>

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Proporcione la estatura:"/>

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Calcular"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Limpiar"/>

</LinearLayout>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="El Índice de Masa Corporal (IMC) es:"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0.0"/>

</LinearLayout>
9) Vea el Preview del layout y será similar a la siguiente gráfica:

Ing. Jorge Luis Chuc López


6

10) Ejecute la aplicación. Notará que no hay respuesta a la interacción del usuario.
11) Abra Git Bash y cambie su ubicación del directorio de trabajo a la carpeta ~/AndroidStudioProjects. Posteriormente
cree un repositorio Git para el proyecto. Esto puede hacerlo usando los comandos siguientes (se asume que el
directorio de trabajo es la carpeta Home del usuario):
12) $ cd AndroidStudioProjects
13) $ cd Imc
14) $ echo “# Aplicación que calcula el Indice de Masa Corporal.” >> README.md
15) Abra su navegador de internet y vaya a la dirección gitignore.io
16) En el campo de búsqueda escriba y selecciones los siguientes elementos dándole Enter a cada uno de ellos para
que sean agregados: Windows, Java, Android, Intellij. Posteriormente haga clic en el botón Create. El Navegador
mostrará el texto generado. Haga clic derecho en cualquier parte de la página mostrada y en el menú de contexto
que aparece seleccione la opción Guardar como… Aparecerá el diálogo para guardar el archivo. Asigne el nombre
gitignore al archivo, cuyo tipo será Documento de Texto. Haga clic en el botón Guardar. El archivo se guardará en
la carpeta seleccionada, con el nombre gitignore.txt.
17) Con ayuda del Explorador de Archivos de Windows, mueva este archivo a la carpeta de su proyecto.
18) Usando Git Bash cambie el nombre del archivo gitignore a .gitignore, usando los siguientes comandos:
$ mv gitignore.txt .gitignore
19) Cree un repositorio Git para el proyecto, usando el comando:
$ git init
$ git status
20) Agregue al repositorio los archivos del proyecto para darle seguimiento con el control de versiones. Utilice los
siguientes comandos:
$ git add .
$ git status
21) El comando anterior hizo que los archivos del proyecto, que están en su directorio de trabajo, sean colocados en el
área Stage de Git.
22) Ahora realice un commit para mover estos archivos del área Stage y sean convertidos en objetos commit, creando
una nueva versión del proyecto. Utilice los siguientes comandos
$ git commit –m “Imc: Versión inicial del proyecto. Sólo muestra la interfaz de usuario y no
incluye manejo de eventos.”
$ git status

Modificar la Activity para agregar manejo de eventos a los botones


23) Agregue un atributo android:id a los siguientes widgets:
Widget Valor del atributo id del widget
Primer EditText @+id/campo_peso
Ing. Jorge Luis Chuc López
7
Segundo EditText @+id/campo_estatura
Primer Button @+id/boton_calcular
Segundo Button @+id/boton_limpiar
Último TextView @+id/etiqueta_imc
24) Vaya al archivo MainActivity.java y agregue variables de instancia para los siguientes widgets:
Widget (Tipo de datos) Id del widget en el layout Variable de instancia
EditText campo_peso mCampoPeso
EditText campo_estatura mCampoEstatura
Button boton_calcular mBotonCalcular
Button boton_limpiar mBotonLimpiar
TextView etiqueta_imc mEtiquetaImc
25) Asegúrese de importar las clases correspondientes a los widgets.
26) Vaya al método onCreate () y al final del método inicialice las variables de instancia mediante el código (recuerde
importar las clases EditText, Button y TextView):
mCampoPeso = (EditText) v.findViewById(R.id.campo_peso);
mCampoEstatura = (EditText) v.findViewById(R.id.campo_estatura);
mBotonCalcular = (Button) v.findViewById(R.id.boton_calcular);
mBotonLimpiar = (Button) v.findViewById(R.id.boton_limpiar);
mEtiquetaImc = (TextView) v.findViewById(R.id.etiqueta_imc);
27) Después de este código, agregue el manejo de eventos para los dos botones utilizando una clase que implemente la
interfaz OnClickListener (de nuevo, importe el paquete para la interfaz OnClickListener.
mBotonCalcular.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = mCampoPeso.getText().toString();
double peso = Double.parseDouble(s);
s = mCampoEstatura.getText().toString();
double estatura = Double.parseDouble(s);
double imc = peso / (estatura * estatura);
s = String.format("%2.2f", imc);
mEtiquetaImc.setText(s);
}
});

mBotonLimpiar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCampoPeso.setText("");
mCampoEstatura.setText("");
mEtiquetaImc.setText("0.0");
}
});
28) Ejecute la aplicación. Haga pruebas con diferentes casos de prueba.
Agregar los recursos de cadena
29) Abra el archivo string.xml que se encuentra en la carpeta res/values. Agregue los siguientes recursos de cadena:
Nombre del recurso de cadena Texto
texto_etiqueta_peso Proporcione el peso en kilogramos:
texto_etiqueta_estatura Proporcione la estatura en metros:
texto_boton_calcular Calcular
texto_boton_limpiar Limpiar
texto_etiqueta_resultado El Indice de Masa Corporal (IMC) es
Hacer que los widgets del layout se refieran a los recursos de cadena
30) Vaya al archivo activity_main.xml y modifique los atributos android:text para que su valor sea tomado de los
recursos de cadena, de la siguiente manera:
Widget Nuevo valor del atributo text
TextView @string/texto_etiqueta_peso
TextView @string/texto_etiqueta_estatura
Button @string/texto_boton_calcular
Ing. Jorge Luis Chuc López
8
Button @string/texto_boton_limpiar
TextView @string/texto_etiqueta_resultado
31) En Git Bash emita los siguientes comandos y analice el resultado de cada uno de ellos:
$ git status
$ git add .
$ git status
$ git commit –am “Imc: Primer versión funcional del proyecto. Incluye manejo de eventos.”
$ git status
$ git log
32) Ejecute la aplicación. Haga pruebas con diferentes casos de prueba.
33) Inicie sesión en GitHub y cree un repositorio remoto para su proyecto de nombre imc.
34) Vincule su proyecto con el repositorio remoto en GitHub tal y como lo menciona el documento para entregar los
proyectos de programación en GitHub.
35) Suba su proyecto hacia el repositorio remoto en GitHub.
36) Elabore el informe de la práctica de laboratorio.

Producto a entregar

Proyecto de Android Studio en GitHub y el informe de la práctica de laboratorio.

El Informe de la práctica de laboratorio a entregar debe incluir:


• Número y nombre del laboratorio.
• Datos del Alumno (Nombre, matrícula y grupo)
• Fecha de entrega
• Dirección del proyecto en GitHub.
• Bitácora de comandos de Git emitidos.

Evaluación

Esta actividad se evaluará con base en los siguientes criterios:

Aspectos a evaluar / 20 Puntos 10 Puntos 0 Puntos Calificación


Valor
Funcionalidad de la La aplicación satisface La aplicación satisface La aplicación no
aplicación completamente los más del 50% de los satisface más del 50%
requerimientos requerimientos de los requerimientos
definidos definidos definidos
Diseño La aplicación cumple La aplicación cumple La aplicación no cumple
con todos los parcialmente con los con los requerimientos
requerimientos de requerimientos de de diseño definidos en
diseño definidos en el diseño definidos en el el enunciado de la
enunciado de la enunciado de la práctica de laboratorio
práctica de laboratorio práctica de laboratorio
Legibilidad del código El código fuente incluye El código fuente incluye El código fuente no
comentarios de algunos comentarios de incluye comentarios de
identificación del identificación del identificación del
programa, del programa, del programa, del
programador y los programador y los programador y no
necesarios para detallar necesarios para detallar detalla las suposiciones
las suposiciones las suposiciones realizadas; no hace un
realizadas; hace un uso realizadas; o no hace uso adecuado de
adecuado de sangrías un uso adecuado de sangrías (indentación);
(indentación); utiliza sangrías (indentación); no utiliza los nombres
nombres apropiados o no utiliza nombres apropiados para los
para los elementos apropiados para los elementos definidos por
definidos por el elementos definidos por el programador
programador (variables, el programador (variables, constantes
constantes simbólicas, (variables, constantes simbólicas, clases,
clases, métodos, etc.); y simbólicas, clases, métodos, etc.); y no
hace un uso apropiado métodos, etc.); y hace hace un uso apropiado
de los elementos del un uso apropiado de los de los elementos del

Ing. Jorge Luis Chuc López


9
lenguaje de elementos del lenguaje lenguaje de
programación. de programación. programación.
Presentación del La entrega fue hecha La entrega fue hecha La entrega no fue
informe de la práctica en tiempo y forma, con en tiempo y forma, pero hecha en tiempo, y
limpieza, sin faltas de tiene faltas de ortografía forma, conteniendo
ortografía y en el o no está en el formato faltas de ortografía y
formato definido por el definido por el profesor además no se
profesor encuentra en el formato
definido por el profesor
Entrega del proyecto en El proyecto está El proyecto está El proyecto no está
GitHub almacenado en un almacenado en un almacenado en un
repositorio de GitHub, repositorio de GitHub, repositorio de GitHub, o
puede ser accedido por puede ser accedido por no puede ser accedido
el profesor y cumple el profesor, y cumple por el profesor, y no
con las versiones con al menos el 50% de cumple con al menos el
definidas en el las versiones definidas 50% de las versiones
enunciado de la en el enunciado de la definidas en el
práctica de laboratorio. práctica de laboratorio. enunciado de la
práctica de laboratorio.

Las instrucciones y los criterios de evaluación constituyen un apoyo para elaborar el contenido básico esperado. El
producto de esta actividad debe reflejar el trabajo de análisis del alumno.

Entrega
Fecha y hora de entrega: El indicado en la plataforma del curso.
Modo de entrega principal: El indicado por el profesor.
Modo de entrega alternativo: Ninguno.
Puntualidad: No hay prórrogas.

Ing. Jorge Luis Chuc López

Potrebbero piacerti anche