PDM Avanzado Práctica a entregar
Introdución
Para avaliar ao profesorado que sigue o curso en Platega propóñense dúas opcións:
- ou ben facer as tarefas indicadas en Platega para cada unha das unidades didácticas
- ou facer unha aplicación completa que se indica a continuación aplicando os conceptos aprendidos en cada unha delas.
Na plataforma Platega entrégase ao alumnado o proxecto da aplicación coa parte da interface xa feita, quitando todo o código que teña que ver có contido das diferentes unidades didácticas.
A aplicación instalable é a seguinte: Media:DiarodeViaxe.apk.
Se se instala nun AVD este ten que ter unha imaxe coa versión Google API como está comentado neste enlace. Está probada nun Google Map API 21.
O proxecto Android inicial baleiro da aplicación está na plataforma Platega e no seguinte enlace: [[Media:]] (Por agora dispoñible só na plataforma Platega ou Mestre do IES San Clemente)
Cando se importa o proxecto hai que resolver unha referencia á librería 'android-support-v7-appcompat', porque está cun sdk-mínimo inferior da API 16.
Para facelo:
Se non está dita librería ('android-support-v7-appcompat') no voso proxecto:
Se aparece unha cruz vermella na librería hai que ir ás propiedades (botón dereito sobre a librería => properties), e na sección Android escoller como Proyect Build Target a versión de Android 5.0.1 (API 21).
Facer un Clean de todos os proxectos (opción de menú Proyect => Clean de Eclipse).
Comentar que o alumno ten total liberdade para modificar a funcionalidade e aparencia da aplicación así como o SDK mínimo, con tal que implemente as funcionalidades correspondentes de cada unidade didáctica.
Agora explicaremos o funcionamento.
Obxectivo da práctica
O obxectivo da aplicación é ter un diario de viaxe no que gardar os lugares que visitamos. Dentro de cada lugar podemos:
- Gardar fotos.
- Gardar coordenadas GPS. Por exemplo, se facemos unha ruta andando podemos gardar os puntos máis interesantes da mesma.
- Gardar audios gravados (e reproducilos).
Tamén podemos visualizar un mapa de Google Map unindo mediante liñas rectas os puntos GPS que teña rexistrado un lugar e ademais amosa a posición actual do usuario.
Pantallas
Pantalla de presentación
Nome da clase no proxecto entregado: Presentacion.java
Pantalla na que aparece unha animación e unha música.
Debemos premer o botón 'Adiante'. Esta pantalla está totalmente feita.
Pantalla Principal
Nome da clase no proxecto entregado: Principal.java
Permite ir ás diferentes pantallas que conforman a aplicación e que ten na parte superior dúas opcións de menú:
- Opción de menú Descargar: Descargar un arquivo XML dende Internet: Media:Platega_pdm_rutas.xml
- Dito arquivo analízase e engádense os lugares á base de datos.
- Opción de menú Preferencias: Indicamos a coordenada (latitude e lonxitude) na que queremos que nos situemos no mapa cando o abramos. Ten que estar a opción de checkbox activada. En caso contrario situarase na última posición coñecida, ata recibir nova información polo GPS. Usamos unha pantalla de preferencias.
- Nome da clase no proxecto entregado: /res/xml/pantalla_preferencias.xml
O alumno terá que implementar a pantalla de preferencias e programar a súa funcionalidade na pantalla do mapa (XestionMapa.java).
Pantalla Alta Lugar
Nome da clase no proxecto entregado: AltaLugar.java
Pantalla que da de alta un novo lugar na base de datos.
Os campos necesarios son o nome do lugar e unha descrición.
Unha vez prememos o botón de alta, debemos engadir á base de datos o lugar.
Ao engadilo:
- Obteremos o identificador do lugar (clave autonumérica) que teremos que pasar no Intent á seguinte pantalla (AltaRecordos.java) xunto co nome do lugar.
- Creamos os seguintes cartafoles:
- /SD_CARD/DIARIO_DE_VIAXE/NOME_LUGAR/IMAXES => Onde se gardarán as imaxes.
- /SD_CARD/DIARIO_DE_VIAXE/NOME_LUGAR/AUDIOS => Onde se gardarán os audios.
Pantalla Alta Recordos
Nome da clase no proxecto entregado: AltaRecordos.java
A esta pantalla podemos vir dende a pantalla 'Lista Lugares' ou dende a pantalla 'Alta Lugar'. As dúas mandarán no Intent o id do lugar e o nome.
O obxectivo desta pantalla é a de gardar as fotos / audio / coordenadas GPS asociados ó lugar.
Na parte inferior (en forma de botóns) temos todas esas opcións.
- Ó gravar un audio se gardará en /SD_CARD/DIARIO_DE_VIAXE/NOME_LUGAR/AUDIOS e se refrescará a lista de audios.
- Ó obter unha foto se gardará en /SD_CARD/DIARIO_DE_VIAXE/NOME_LUGAR/IMAXES e se refrescará o horizontalScrollView (control que visualiza as imaxes).
- Ó gravar unha coordenada GPS se engadirá a lista de coordenadas e a base de datos. O envío de coordenadas 'falsas' de GPS está explicado na Unidade de Xeolocalización.
Pantalla Lista Lugares
Nome da clase no proxecto entregado: ListaLugares.java
Aparecen nunha lista a lista de lugares da base de datos.
Ó manter premido sobre un lugar aparece o seguinte menú emerxente (/res/menu/menulistalugares.xml):
- Detalle lugar: Volvemos á pantalla de 'Alta Recordos' amosando os datos do lugar escollido.
- Mapa lugar: Aparece un mapa de google map onde, se está activado o GPS, aparece unha icona indicando o nosa posición e ademais aparecen unidos os puntos GPS rexistrados para ese lugar.
- Borrar lugar: Dá de baixa o lugar seleccionado. Bórrao da base de datos e da SD externa (/SD_CARD/DIARIO_DE_VIAXE/NOME_LUGAR).
Pantalla Mapa Lugar
Nome da clase no proxecto entregado: XestionMapa.java
Aparece un mapa de google map onde, se está activado o GPS, aparece unha icona indicando o nosa posición e ademais aparecen unidos os puntos GPS rexistrados para ese lugar.
Base de datos
A base de datos xa se atopa creada no cartafol /assets/ do proxecto.
O alumno terá que (explicación dada na unidade de Datos Persistentes) copiar, sempre que non exista, dita base de datos ó cartafol /data/data/nome_paquete/databases/. Isto se fará na activity Principal.
A base de datos consta das seguintes táboas en SQL:
Táboa LUGARES:
CREATE TABLE LUGARES (
_id INTEGER PRIMARY KEY ASC AUTOINCREMENT,
nome VARCHAR( 200 ) NOT NULL,
descripcion VARCHAR( 800 )
);
Táboa COORDGPS:
CREATE TABLE COORDGPS (
_id INTEGER PRIMARY KEY AUTOINCREMENT,
latitude REAL,
lonxitude REAL,
_id_lugar INTEGER REFERENCES lugares ( _id ) ON DELETE CASCADE
ON UPDATE CASCADE
);
-- Ángel D. Fernández González e Carlos Carrión Álvarez -- (2014).