public class MedicionPresenter extends java.lang.Object implements PresenterFunctions, android.hardware.SensorEventListener, PresenterFunctions.MedicionFunctions
En concreto, se encarga de realizar la "configuracion inicial" del Fragment, que, consiste en actualizar el item del NavigationView al segundo item del mismo, fijar la orientacion de la pantalla a "Landscape", para evitar que se pueda girar, fijar el Toolbar como SupportActionBar y registrar el Listener del vector de rotacion del dispositivo.
Ademas de eso, se encarga de calcular el angulo de desplazamiento del dispositivo entre dos posiciones distintas, en funcion de las lecturas obtenidas por el vector de rotacion del mismo; asi como indicar a la Vista (MedicionFragment), que muestre ese angulo en tiempo real mientras el usuario mueve el dispositivo
Por ultimo, gestiona el comportamiento de la aplicacion cuando el usuario pulsa sobre el boton "Reiniciar", indicando a la Vista (MedicionFragment) que deje la IU tal y como estaba cuando se creo el Fragment MedicionFragment.
Esta clase forma parte de la aplicacion TFG-Goniometer, desarrollada para el Trabajo de Fin de Grado - Grado en Ingenieria Informatica (Universidad de Valladolid)
MedicionFragment
,
MainModel
,
Toolbar
,
SensorEventListener
,
Sensor
,
SensorManager
,
AlertDialog
PresenterFunctions.HomeFunctions, PresenterFunctions.MainFunctions, PresenterFunctions.MedicionFunctions, PresenterFunctions.NuevaMedicionFunctions, PresenterFunctions.NuevoPacienteFunctions, PresenterFunctions.PacientesFunctions, PresenterFunctions.PerfilPacienteFunctions, PresenterFunctions.SobreAppFunctions, PresenterFunctions.UltimasMedicionesFunctions
Constructor and Description |
---|
MedicionPresenter(android.app.Fragment fragment,
MainModel model)
Constructor principal de la clase
|
Modifier and Type | Method and Description |
---|---|
void |
onAccuracyChanged(android.hardware.Sensor sensor,
int accuracy)
Called when the accuracy of the registered rotationVector has changed.
|
void |
onDestroy()
Perform any final cleanup before an activity is destroyed.
|
void |
onGoniometerClicked()
Evento ClickListener que se llama cuando el usuario ha pulsado sobre el
LinearLayout que contiene el goniometro en el MedicionFragment.
|
void |
onPause()
Called as part of the fragment lifecycle when a fragment is going into the background, but
has not (yet) been killed.
|
void |
onResetClicked(java.lang.String lecturaGoniometro)
Evento ClickListener que se llama cuando el usuario ha pulsado sobre el boton
"Reiniciar" en el MedicionFragment.
|
void |
onResume()
Called as part of the fragment lifecycle when your fragment is ready to start interacting
with the user.
|
void |
onSensorChanged(android.hardware.SensorEvent sensorEvent)
Called when there is a new sensor event.
|
void |
onStoreMeasurementClicked(java.lang.String measurement)
Evento ClickListener que se llama cuando el usuario ha pulsado sobre el boton
"ALMACENAR MEDICION" en el MedicionFragment.
|
void |
setUpInitialSettings(android.support.v7.widget.Toolbar toolbar)
Metodo que realiza las operaciones iniciales cuando se crea el
Fragment MedicionFragment.
|
public MedicionPresenter(android.app.Fragment fragment, MainModel model)
fragment
- Fragmento (Vista) con la que mantiene una relacion 1-a-1.model
- Modelo (unico) de la aplicacion.public void setUpInitialSettings(android.support.v7.widget.Toolbar toolbar)
Se encarga de marcar el segundo item del NavigationView (correspondiente a MedicionFragment), fijar la orientacion de la pantalla en "Landscape", de utilizar el Toolbar recibido como SupportActionBar, y de registrar el Listener del vector de rotacion, para que empiece a obtener lecturas del dispositivo.
Ademas de esto, se encarga de enviar a la Vista (MedicionFragment), el tamaño que tiene que asignar al goniometro y al boton "Reiniciar" en funcion del tamaño de la pantalla del dispositivo.
setUpInitialSettings
in interface PresenterFunctions.MedicionFunctions
toolbar
- Toolbar a emplear como SupportActionBarpublic void onGoniometerClicked()
Se encarga de comprobar si se dispone un lectura del vector de rotacion como "origen" para calcular el angulo de desplazamiento.
Si ya se dispone de ella, significa que el usuario ha pulsado sobre el goniometro para terminar la medicion, por tanto, se deja de mostrar la variacion del angulo en tiempo real, y se obtiene la fecha y la hora en la que se ha realizado la medicion para su, quizas, posterior almacenamiento.
Si no se dispone de ella, significa que el usuario ha pulsado sobre el goniometro para empezar la medicion, por tanto, se toma como origen de la misma la lectura que se esta obteniendo del vector de rotacion en esa posicion, y se empieza a mostrar la variacion del angulo en tiempo real.
onGoniometerClicked
in interface PresenterFunctions.MedicionFunctions
public void onStoreMeasurementClicked(java.lang.String measurement)
Se encarga de:
1.- Comprobar que el usuario ha realizado una medicion y no ha pulsado sobre el boton antes de haberlo hecho. 2.- Crea un dialogo que envia a la Vista para que se lo muestre al usuario, con el fin de confirmar que quiere almacenar la medicion. 3.- Crea un nuevo Fragment PacientesFragment para que el usuario elija el usuario al que quiere añadir esa medicion.
onStoreMeasurementClicked
in interface PresenterFunctions.MedicionFunctions
measurement
- Lectura obtenida del TextView con el angulo de desplazamiento
del dispositivo.public void onSensorChanged(android.hardware.SensorEvent sensorEvent)
Si el cambio es del vector de rotacion, se almacena la lectura del mismo en la variable global quaternion (previa obtencion del cuaternion asociado a la lectura del vector de rotacion), y, por ultimo, si hay que mostrar la variacion del angulo en tiempo real, se llama al metodo mostrarAngulo() para que obtenga el angulo de desplazamiento entre el cuaternion inicial initialQuaternion y el cuaternion final quaternion, y mande esa informacion a la vista para que se la muestre al usuario.
onSensorChanged
in interface android.hardware.SensorEventListener
sensorEvent
- the SensorEventpublic void onAccuracyChanged(android.hardware.Sensor sensor, int accuracy)
onAccuracyChanged
in interface android.hardware.SensorEventListener
sensor
- the Sensoraccuracy
- The new accuracy of this rotationVector, one of SensorManager.SENSOR_STATUS_*public void onResetClicked(java.lang.String lecturaGoniometro)
Se encarga de:
1.- Comprobar si se esta mostrando la variacion del angulo en tiempo real. 2.- De ser asi, dejar de mostrarla. 3.- Reiniciar los valores que representan el origen de la medicion. 4.- Volver al estado inicial la lectura del goniometro, asi como la barra de desplazamiento que representa la variacion del angulo.
onResetClicked
in interface PresenterFunctions.MedicionFunctions
lecturaGoniometro
- Lectura del goniometro que se tiene en ese momento.public void onResume()
Se encarga de volver a registrar el vector de rotacion para poder obtener, de nuevo, lecturas del mismo.
onResume
in interface PresenterFunctions.MedicionFunctions
public void onPause()
Se encarga de borrar el Listener del vector de rotacion, para evitar asi, que se consuma la bateria del dispositivo cuando la actividad este en un segundo plano.
onPause
in interface PresenterFunctions.MedicionFunctions
public void onDestroy()
Se encarga de liberar la referencia al Fragment con el que esta asociado.
onDestroy
in interface PresenterFunctions