Page 2 of 4

Re: AppMed

Posted: Thu Mar 01, 2018 11:04 pm
by JuanDGiraldoM
Sprint 5 (Feb 23 - Mar 1)

Creación de logo AppMed (4/4)
Implementación del Software de Calidad (4/4)
Desarrollo del checklist automatizado (1/5)

Esfuerzo: 3
Velocidad: 4

Burndown
Image

¿Qué se ha hecho?

William Sotelo:
- Finalización del logo
Juan David Giraldo:
- Finalización de la implementación de SonarQube con Android Lint
- Correción de algunos errores recomendados por Android Lint
- Actualización de las keys de Google Maps y Firebase por keys de una cuenta propia para la aplicación (upb.appmed@gmail.com)
Cristian Toro
- Continuación de investigación de Firebase Authentication
- Desarrollo del Checklist

Evidencias
Image

Image

Image

¿Qué vamos a hacer?
Vamos a continuar con la investigación e implementación de Google Maps y Google Places
Revisaremos el checklist y se aplicarán las correcciones recomendadas por Android Lint

¿Qué dificultades tuvimos?
Semana de parciales

Re: AppMed

Posted: Mon Mar 05, 2018 9:31 pm
by JuanDGiraldoM
¿Qué se ha hecho?
Se mejoró la automatización del checklist y completó el listado de pautas

¿Qué se va a hacer?
Vamos a continuar con el cumplimiento de las pautas del checklist

¿Qué dificultades tuvimos?
Ninguna

Re: AppMed

Posted: Thu Mar 08, 2018 9:57 pm
by JuanDGiraldoM
Sprint 6 (Mar 2 - Mar 8)

Implementar un SplashScreen (3/4)
Implementación del logo (4/4)

Esfuerzo: 4
Velocidad: 3

Burndown
Image

¿Qué se ha hecho?
Se ha implementado el Splash Screen

Se ha actualizado el archivo de gitgnore porque tenemos algunos inconvenientes con algunos archivos de configuración del IDE

Se han hecho correcciones sugeridas por Android Lint

Evidencias
Image

Code: Select all

package co.edu.upb.calidad.appmed;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.Window;
import android.view.WindowManager;

/**
 * Clase que inicia la aplicación
 */

public class SplashScreen extends AppCompatActivity {

    /**
     * Método constructor
     *
     * @param savedInstanceState savedInstanceState
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_splash_screen);

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent intent = new Intent(SplashScreen.this, MainActivity.class);
                startActivity(intent);
                finish();
            }
        }, 1500);
    }
}
¿Qué se va a hacer?
Vamos a continuar con la investigación de la Autenticación por Firebase y de la implementación de Google Maps y Google Places

¿Qué dificultades tuvimos?
Carga académica

Re: AppMed

Posted: Fri Mar 16, 2018 9:58 pm
by JuanDGiraldoM
Sprint 7 (Mar 9 - Mar 15)

Esfuerzo: 4
Velocidad: 3

Burndown
Image

¿Qué se ha hecho?
Se ha pulido el checklist, con la adición de nuevas tareas por cumplir para seguir mejorando la calidad

Se ha continuado con la corrección de errores y recomendaciones hechas por Android Lint

Se ha continuado con la investigación y las pruebas de autentucación por medio de Facebook

Evidencias
Image

Code: Select all

package co.edu.upb.calidad.appmed;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;

/**
 * Clase Login que realiza la autenticación en Facebook, Google
 */
public class LoginActivity extends AppCompatActivity {

    private LoginButton loginButton;
    private CallbackManager callbackManager;

    /**
     * Método que crea la instancia del objeto
     * @param savedInstanceState savedInstanceState
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        callbackManager = CallbackManager.Factory.create();
        loginButton = findViewById(R.id.login_button);
        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                goMainScreen();
            }

            @Override
            public void onCancel() {
                Toast.makeText(getApplicationContext(), R.string.cancel_login, Toast.LENGTH_SHORT).show();

            }

            @Override
            public void onError(FacebookException error) {
                Toast.makeText(getApplicationContext(), R.string.error_login, Toast.LENGTH_SHORT).show();
            }
        });
    }


    /**
     * Método para redirigir a la pantalla de inicio
     */
    private void goMainScreen() {
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);

    }

    /**
     * Método que obtiene el resultado de la actividad
     * @param requestCode requestCode
     * @param resultCode resultCode
     * @param data data
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }
}

Code: Select all

package co.edu.upb.appmed.feature;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;

import co.edu.upb.appmed.feature.Utilities.Utilities;

/**
 * Actividad principal
 */
public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {


    /**
     * Método constructor de la actividad
     *
     * @param savedInstanceState savedInstanceState
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });

        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }


    /**
     * Método que captura el evento generado al presionar la tecla de retoceso
     */
    @Override
    public void onBackPressed() {
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    /**
     * Método que verifica
     *
     * @param menu
     * @return
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    /**
     * Método que captura el evento generado al presionar un ítem del menú de opciones
     *
     * @param item item seleccionado
     * @return true cuando finaliza correctamente
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();

        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }


    /**
     * Método que captura los eventos generados al presionar algún ítem del menú de navegación
     *
     * @param item item seleccionado
     * @return true cuando finaliza correctamente
     */
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {

        Intent intent = new Intent(this, SitesListActivity.class);

        int i = item.getItemId();

        if (i == R.id.nav_hospital) {
            intent.putExtra("activity", Utilities.HOSPITALS);
            startActivity(intent);
            return true;
        } else if (i == R.id.nav_wifi) {
            intent.putExtra("activity", Utilities.WIFI_STATIONS);
            startActivity(intent);
            return true;
        } else if (i == R.id.nav_station) {
            intent.putExtra("activity", Utilities.SERVICE_STATIONS);
            startActivity(intent);
            return true;


        } //TODO: else if (i == R.id.nav_map)
        else {
            DrawerLayout drawer = findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
            return true;
        }
    }
}
¿Qué se va a hacer?
Se va a implementar comentarios tipo "TODO" para que manejemos un orden de las tareas faltantes respecto al código fuente

Vamos a continuar con el cumplimiento del checklist

¿Qué dificultades tuvimos?
Carga académica

Re: AppMed

Posted: Mon Mar 19, 2018 4:15 pm
by JuanDGiraldoM
¿Qué se ha hecho?
Se ha modificado el tablero de trello con el backlog porque hemos incumplido una de las normas más importantes de Kanban: superar el límite de tareas por integrantes del equipo.

¿Qué se va a hacer?
Hemos trasladado las tareas en proceso y vamos a reunirnos para organizar y volver a asignar tareas por integrante.

¿Qué dificultades tuvimos?
Carga académica.

Re: AppMed

Posted: Thu Mar 22, 2018 9:27 pm
by JuanDGiraldoM
Sprint 8 (Mar 16 - Mar 22)

Desarrollo del checklist automatizado (5/5)
Migración del proyecto (Instant App) (1/4)

Esfuerzo: 6
Velocidad: 3

Burndown
Image

¿Qué se ha hecho?
Se corrigieron errores del checklist automatizado, el correo estaba incompleto cuando se generaba el informe.

Gracias a la reciente actualización de Android (3.1) se hizo la investigación del por qué la actualización y encontramos que se ha implementado Android Instant App que son aplicaciones que ofrecen un novedoso sistema de ejecución sin previa instalación.

Estamos investigando sobre el tema y estamos debatiendo si hacemos la migración del proyecto o no.

Evidencias




¿Qué se va a hacer?
Vamos a seguir investigando a fondo sobre el tema, cómo funciona y si es viable tomarnos el tiempo necesario que lleva a cabo la migración del proyecto a Instant App.

¿Qué dificultades tuvimos?
Ninguna

Re: AppMed

Posted: Mon Apr 02, 2018 4:50 pm
by cristiantorol
¿Qué se ha hecho?

Se ha investigado sobre el API de Uber y el API de AirBnb a la aplicación y se han pedido las autorizaciones necesarias para el uso de estos en la aplicación.

Image


¿Qué vamos a hacer?
Se terminará la implementación del API de Uber a la aplicación.

¿Qué dificultades tuvimos?
Investigando se encontró que AirBnb no cuenta con API oficial.

Re: AppMed

Posted: Thu Apr 05, 2018 2:06 pm
by JuanDGiraldoM
Sprint 9 (Abr 2 - Abr 5)

Esfuerzo: 4
Velocidad: 1

Burndown
Image

¿Qué se ha hecho?
Se ha estado migrando el proyecto a la estructura de una aplicación instantánea de Android

Evidencias
Image

¿Qué se va a hacer?
Vamos a continuar con la migración de la aplicación a la nueva estructura

¿Qué dificultades hemos tenido?
No tenemos suficiente conocimiento de la nueva estructura de Instant App, pero vamos consultando e investigando

Re: AppMed

Posted: Tue Apr 10, 2018 9:57 am
by xacarana
Image

Re: AppMed

Posted: Thu Apr 12, 2018 10:21 am
by JuanDGiraldoM
Pre-Entrega



Prueba