miércoles, 10 de junio de 2020

✧.。. *.
           ┊┊┊┊                        °
           ┊┊┊☆                  •
           ┊┊🌙    *
           ┊┊
           ┊☆  °
           🌙

╞GEOLOCALÍZATE

❏ Objetivos 

Diseñar una aplicación que proporcione los datos de la localización geografica en la que nos encontramos (latitud, longitud y altitud). Debe mostrar esta posición en el mapa de la aplicación google maps. Enviar esta misma en un correo electronico o en un SMS.

❏ Diseño 


En la pantalla principal hemos incluido un botón para cada una de las funciones que queremos que la app realice.
El primero nos dara la localización en los cuadros de texto situados justo debajo.
El segundo abrira la aplicación maps con un marcador que indique la posición actual.
El tercero nos lleva a la aplicación de correo electronico donde ya hay un mensaje listo con la posición faltando solo la dirección del correo del destinatarío.
El cuarto botón nos llevara a una segunda pantalla desde la cual podremos mandar SMS.

❏ Pantalla Secundaria 


Lo siguiente que se nos pide en esta pantalla es el numero de telefono de quien queremos que reciba nuestra localización y el mensaje que queremos que acompañe a esta.
Despues al pulsar el primer botón nos lleva a la app de envio de SMS y al pulsar el segundo volvemos a la primera pantalla.
❏ Programación 

Aparte de los elementos usandos en las aplicaciones anteriores vamos a utilizar unos componentes no visibles (que no salen en la pantalla) que son:
El primero es SensorDeUbicación, que es el componente que nos va a dar la información sobre la posición.
Utilizamos dos componentes ActivityStarter1y2 que son los que van a abrir las aplicaciones de Maps y de correo electronico.
EnviarTexto va a enviar el SMS al numero de telefono que le marquemos.


❏ Bloques 
Lo primero que vamos ha hacer es inicializar los valores de las variables.
El primer bloque nos va a dar los datos de localización en los que nos encontramos.

Al pulsar el botón 1 recoge los datos de nuestra localización mediante los sensores de ubicación y sustituye los campos de Texto por estos.

El segundo bloque abrira la aplicación Maps y marcara nuestra posición en el mapa.

Al pulsar el botón 2 va a cambiar el valor de las variables por las que nos de el sensor de ubicación.
Después con estos datos definimos las propiedades del ActivityStarter1.
Y más tarde lo ejecutamos que es lo que va a provocar que se abra Maps y marque nuestra posición.

El tercer bloque abre el correo electronico y lo manda con nuestra localización
Al pulsar el botón 3 va a cambiar el valor de las variables por las que nos de el sensor de ubicación.
Con los datos que nos proporciona esas variables se deciden las propiedades del ActivityStarter2, que cuando se ejecute va a ser la que abra la aplicación de correo electronico que mandara la ubicación.


El cuarto bloque abre la pantalla para mandar SMS



Los bloques para mandar SMS:

Lo primero que vamos ha hacer es inicializar los valores de las variables.


El segundo se activa al pulsar el botón "Enviar mensaje"

Le da a las variables los datos obtenidos mediante el sensor de ubicación y define las propiedades del componente enviar texto que son el numero de telefono que introducimos y el mensaje que añadimos después llama a la aplicación de SMS para que envie el mensaje y por ultimo reinicia los campos de numero de telefono y mensaje para poder mandar otro a otro destinatario.

Al pulsar el botón 2 volvemos a la pantalla principal



❏ Problemas que nos hemos encontrado 

Aparte de los problemas habituales con los nombres de variables, de campos de texto, ...
He encontrado dos problemas a la hora de lanzar las ActivityStarter y buscando en la ayuda del App Inventor he encontrado otras aplicaciones que también usaban el sensor de ubicación o el envío de correos y he podido solucionarlo añadiendo los bloques:
Para el correo electronico:

Para la aplicación maps:
Además, en ocasiones parece que el sensor de ubicación no recoge bien los datos y hay que volver a intentarlo.
Además sospecho de que el sensor de altitud no da datos , ya que siempre lo marca como 0, a pesar de que se que estoy a 16 metros sobre el nivel del mar.