Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Presentacion proyecto Borealis - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Hola, buenas tardes. Soy Adrián Blasco Martín y voy a mostrar mi propuesta para el proyecto Intermodular.
00:00:00
Esto es una aplicación que consta con una aplicación Android de Frontend y una de Java para el backend.
00:00:08
Se conectan las dos con un docker y todo el proyecto está hecho en inglés, también para ayudar con los RAs.
00:00:17
aplicados. La aplicación sirve para hacer una creación y edición de personajes de
00:00:23
dragones y mazmorras de 5e. Tiene todo lo necesario para guardar un personaje de forma
00:00:32
local, un personaje que sea funcional y jugable. La aplicación Android utiliza últimas tecnologías
00:00:40
desarrolladoras como Jetpack Compose, Material 3, Expressive y Navigation 3, entre otras.
00:00:49
Voy a explicar un poco cómo funciona por encima. Voy a empezar con el Docker que está aquí.
00:01:00
Simplemente es un contenedor que nos permite conectarnos con el resto de la aplicación.
00:01:07
Y aquí voy a mostrar lo que viene siendo el backend, que es la aplicación Java.
00:01:12
Voy a empezar por los DTOs, que es la clase que nos permite distinguir un poco, coger los datos de los JSON que estoy utilizando, de la API, y convertirlos en unos datos un poco más usables para la aplicación.
00:01:19
Aquí tengo otro, por ejemplo, uno es de las clases y otro es de hechizos, en este caso.
00:01:42
Y vamos a ver aquí el Data Loader. Es una clase que he utilizado para coger los datos del JSON y pasearlos a un formato más legible para poderlos utilizar en la aplicación.
00:01:49
Aquí tenemos también el service, es una estructura de datos funcional como hemos practicado en clase, con su service, su modelo, su todo.
00:02:07
Y aquí en el service podemos ver que tiene unos campos como cargar los datos del fichero, que llama, como hemos dicho antes, al data loader.
00:02:21
Tiene también para coger excepciones, manejarlas y tirar errores que no aparezcan.
00:02:31
Manejar los errores, controlarlos.
00:02:45
Y aquí por último tenemos el JSON.
00:02:47
Este he cogido un ejemplo así un poco complejo que vamos a ver después más a fondo en la aplicación Android.
00:02:51
si se ve un poco
00:02:59
voy a acercar la cámara un poquillo
00:03:02
ahí está
00:03:04
que se vea
00:03:05
tiene todos estos
00:03:07
campos que vamos a utilizar
00:03:10
y también tiene pues
00:03:12
el resto
00:03:14
de cositas
00:03:15
todo esto lo vamos a parsear
00:03:16
tenemos aquí los diferentes
00:03:20
hechizos que llegaré a ello
00:03:21
cuando lleguemos a la aplicación
00:03:23
Android
00:03:26
ahí está
00:03:26
Vamos a continuar ahora con la aplicación Android. La tengo aquí ya corriendo, se puede
00:03:28
ver aquí el emulador. Lo tengo también en mi móvil, pero no puedo porque estoy grabando
00:03:37
con mi móvil, no puedo mostrarlo. Pero funciona correctamente en el móvil, igual que en el
00:03:42
emulador. Entonces, vamos a ver ahora, vamos a empezar con esto, la base de datos. Estoy
00:03:48
utilizando una base de datos RUM generada, o sea, no la he creado yo a mano, sino que
00:04:00
estoy utilizando la que se genera con RUM, pero podemos ver aquí en el DAO, por ejemplo,
00:04:09
que estoy utilizando, pues las queries de SQL.
00:04:15
Voy a mostrarlo también ahí.
00:04:19
Aquí yo que se vea bien.
00:04:21
Ahí están las consultas SQL para la aplicación.
00:04:24
Vamos a continuar ahora con los entities.
00:04:32
Como hemos visto también en clase,
00:04:35
pasamos del modelo a los entities,
00:04:36
o sea, del DAO a los entities,
00:04:39
para tener esos datos, ¿no?,
00:04:41
que se pueden manejar correctamente más en la aplicación que como los recibimos.
00:04:43
Todo esto, lo de Room, se utiliza para almacenar ahora personajes que voy a mostrar en local.
00:04:52
Tenía una idea de ponerlos en la nube, de ponerlos en un servidor, como hemos visto también,
00:05:03
pero he pensado que no era necesario porque no es el objetivo que tengo para esta aplicación.
00:05:11
Entonces con Room me parecía que era más que suficiente y de hecho he comprobado que lo es en esta aplicación.
00:05:18
Vamos a continuar por aquí.
00:05:26
El Network Module, este, utilizamos aquí, como se puede ver, un Retrofit y un OKHttpClient
00:05:29
para poder
00:05:40
realizar la conexión con la app
00:05:44
la API es justo lo que hemos visto antes, el backend que tengo en Java
00:05:46
y vamos a continuar con el siguiente
00:05:51
que tengo aquí puesta una clase, una clase que es justo la del tipo
00:05:55
de clase que va a tener el personaje que vayamos a elegir
00:06:00
es la clase más compleja que diría yo que tenemos
00:06:03
podemos ver primero todos los valores que tiene
00:06:07
todos estos valores que son a tener en cuenta
00:06:11
que después se ven reflejados en la pantalla de detalles, muy curioso
00:06:16
vamos a continuar por aquí con el siguiente
00:06:21
esta es la parte yo diría más compleja de toda la aplicación
00:06:25
esto lo he puesto en la memoria del proyecto
00:06:29
y es la parte de los hechizos
00:06:32
Es muy curioso, porque cada clase puede tirar o no hechizos, entonces hay que hacer un filtro para saber qué clases pueden tirar hechizos, qué clases no.
00:06:36
Y esto es lo que hace. Además, los hechizos hay de dos tipos, hay cantrips y hechizos normales, hechizos por niveles, digamos.
00:06:50
Y estos se pueden conjurar dependiendo del nivel que tenga el personaje y de la clase.
00:06:58
entonces esta clase que es
00:07:04
diría de las más importantes
00:07:06
que tenemos por aquí
00:07:09
hace todo esto
00:07:10
va a coger aquí
00:07:12
el nivel
00:07:14
el nivel del personaje
00:07:17
y dependiendo de la progresión
00:07:19
que tengan los hechizos pues va a decir
00:07:21
tiene tantos hechizos
00:07:23
o tantos pocos
00:07:25
así que
00:07:27
es muy curioso, después vamos a verlo
00:07:29
en un ejemplo práctico
00:07:31
El siguiente, vamos a ver aquí el NavHost. Esto es súper simple. Esto es un fichero que nos ayuda a hacer la navegación de la aplicación.
00:07:33
Como he comentado antes, estamos utilizando Navigation 3. Entonces es lo más actual. Creo que todavía no ha salido nada nuevo.
00:07:45
y es lo que hemos visto en clase
00:07:54
así que esto es lo más actual
00:07:56
que existe por ahora
00:07:58
de navegación y funciona
00:08:00
muy muy bien
00:08:02
vamos a continuar aquí por
00:08:03
la API, como podéis ver es súper chiquitito
00:08:06
es simplemente coger
00:08:08
con el arroba get
00:08:10
el path
00:08:11
arroba path
00:08:14
vamos a coger
00:08:15
los datos justos que necesitamos
00:08:18
dependiendo de la situación
00:08:20
en este caso
00:08:21
en la que estoy mostrando es para las clases. Aquí tenemos un DTO, un DTO que es súper
00:08:24
similar al que hemos visto antes en el backend, como de todo, así enlazándolo. No es exactamente
00:08:30
igual porque me convenía más cambiar unas cositas para Android que como las tenía en
00:08:38
Así que, bueno, pues ha cambiado un poco, pero es muy similar para tener la consistencia de datos.
00:08:48
Aquí tenemos el AppChrome, que es un fichero de conveniencia, porque estaba repitiendo muchas partes de código y he dicho, vale, voy a sacar todo a un fichero aparte, y lo he puesto a todo lo que estaba repitiendo.
00:08:56
Cosas comunes como el Drawer que tenemos aquí arriba del móvil, el Button Bar que tenemos aquí también y esas cositas.
00:09:13
Las tengo aquí y así por cada pantalla que las va a tener solo llamo a este fichero y ya está.
00:09:24
Y se añade si lo importa.
00:09:31
Y aquí tenemos la pantalla de menú. Es justo esta pantalla que estamos viendo aquí.
00:09:35
esta es la pantalla más completa
00:09:40
que tiene toda la aplicación
00:09:44
porque tiene todos estos botoncitos
00:09:45
los podéis ver aquí
00:09:49
también tiene el button bar
00:09:50
un pequeño texto aquí
00:09:52
para decir de qué va la aplicación
00:09:54
y aquí es un dato curioso
00:09:57
que esta aplicación la probé con mi hermano
00:10:00
se la enseñé
00:10:02
y no se dio cuenta de que esto eran botones
00:10:03
estaba viendo
00:10:06
Se pensaba que era como solo texto, ¿no? Solo era información especial, ¿no? Y después se lo dije. Dije, pero es que son botones. Y pensé en poner este pequeño texto de ayuda que hay aquí.
00:10:08
de hecho lo voy a mostrar este pequeño texto que dice que puedes
00:10:27
tocar los botones y te va a llevar a la pantalla correspondiente
00:10:32
así que ahora voy una pequeña demostración de cómo funcionaría
00:10:37
la aplicación vamos a venir por aquí se ve el ratón
00:10:43
bien correctamente y bueno de primeras pues tenemos el menú
00:10:48
principal como he dicho antes el menú principal que tiene personajes hechizos
00:10:53
clases y gracias por todo esto que tiene también tenemos la pantalla de
00:11:00
personajes he dejado ya aquí uno uno preparado y llamado paco y vamos a
00:11:05
probar ahora también a crear uno para empezar vamos a ver los vamos a ver aquí
00:11:10
los hechizos los hechizos son todos estos hay muchos muchos muchos muchos
00:11:17
hechizos vale y que más aquí en el driver podemos pasar también a las otras dos cositas que tenemos
00:11:22
tenemos aquí los distintos tipos de clases y este que es más importante que son las razas como
00:11:29
podéis ver estamos cogiendo también imágenes aquí las imágenes las estoy sacando también de la app y
00:11:37
sólo los que tienen aquí podemos ver que estos por ejemplo no tienen no tienen pero porque no
00:11:46
existe imagen para ellos, entonces he dejado ahí una por defecto de los contactos, pero
00:11:51
el resto, los que sí que tienen imágenes, se pueden ver sus imágenes. Y a cada uno
00:11:57
tenemos su pantalla de detalle, ¿vale? Tenemos aquí su pantalla de detalle que nos dice
00:12:03
las distintas cosas que tienen. Y te puedes dar cuenta que aquí hay un más. Se lo podemos
00:12:08
asignar directamente a los personajes que tenemos vamos a ir de vuelta ahora a la de clases que voy
00:12:15
a mostrar también que estos pues más de lo mismo tienen todo en todo toda la información que
00:12:24
necesita y de los hechizos pues también lo mismo vamos a ver aquí alguno chulo este mismo y pues
00:12:29
nos pone lo mismo la descripción todo el rango la acción bueno todo lo que necesitas saber
00:12:40
Y vamos a probar ahora a ir a los personajes.
00:12:46
Vamos a ver este, que le tengo de ejemplo ya con todo, para que se vea todo bien.
00:12:50
Tiene aquí el nombre, que se puede cambiar.
00:12:55
Si me pongo aquí, sale para cambiar el texto.
00:12:57
Y ahí está.
00:13:02
Aquí, para subir o bajar de nivel, lo tengo a nivel 3 para mostrar ahora los hechizos.
00:13:04
Y, bueno, esta es la raza, que se llama Asimar.
00:13:10
La clase, que es Sorcerer.
00:13:13
que es un brujo hechicero
00:13:15
y aquí pues tenemos los distintos tipos de hechizos
00:13:18
tenemos cantrips
00:13:22
que los puedo coger y añadir en esta pantalla
00:13:23
me salen todos los cantrips y voy a probar a añadir este
00:13:26
y como se puede ver, este se ha añadido
00:13:30
voy a probar a quitarlo
00:13:33
se quita correctamente
00:13:36
sale el texto de que no hay ninguno seleccionado
00:13:38
y aquí tenemos un ejemplo de que
00:13:41
hay varios seleccionados pero no todos y deja añadir y aquí otro de salen todos
00:13:44
los que pueden estar seleccionados y no deja añadir ninguno se puede ver que
00:13:51
estoy clicando y no deja añadir
00:13:56
vamos a probar rapidito ahora hacer un personaje nuevo le vamos a llamar
00:14:01
paula
00:14:07
Ahí está. Y va a ser de nivel 4. Le vamos a poner de raza un goblin.
00:14:10
Mira, se puede añadir con esto. Ahora nos sale Paula aquí. Y también se puede añadir simplemente tocando.
00:14:20
Y de clase le vamos a poner uno que no pueda tirar hechizos. Por ejemplo, un bárbaro.
00:14:28
Y como se puede ver aquí, ya no aparecen los hechizos.
00:14:33
si salgo de aquí
00:14:36
vamos a ver que se ha puesto correctamente
00:14:39
la imagen y que es de nivel 4
00:14:41
y bueno, toda la
00:14:43
información que tiene
00:14:45
si volvemos al menú pues
00:14:46
podemos volver de nuevo
00:14:49
y sigue estando
00:14:51
y esta es mi aplicación
00:14:52
entera, espero que haya quedado claro
00:14:55
y bueno, cualquier duda diría
00:14:57
que espero preguntas
00:14:59
pero no hay nadie
00:15:01
a quien preguntar, así que
00:15:03
Un saludo y muchas gracias.
00:15:05
- Idioma/s:
- Materias:
- Programación
- Etiquetas:
- Móvil (teléfono)
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado básico
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado medio
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado superior
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado básico
- Autor/es:
- Adrián Blasco Martín
- Subido por:
- Adrián B.
- Moderado por el profesor:
- Lucia San Miguel López (lucia.sanmiguel)
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 13
- Fecha:
- 18 de mayo de 2026 - 20:56
- Visibilidad:
- Público
- Centro:
- IES FRANCISCO DE QUEVEDO
- Duración:
- 15′ 10″
- Relación de aspecto:
- 16:9 Es el estándar usado por la televisión de alta definición y en varias pantallas, es ancho y normalmente se le suele llamar panorámico o widescreen, aunque todas las relaciones (a excepción de la 1:1) son widescreen. El ángulo de la diagonal es de 29,36°.
- Resolución:
- 848x478 píxeles
- Tamaño:
- 108.98 MBytes