Perfecto 🌟 Entiendo exactamente lo que quieres lograr.
Tu objetivo es fusionar el proyecto API_Calendar-master con las funcionalidades avanzadas del App_Calendar_Pro (según la guía del documento Calendar_Pro_UC.pdf), manteniendo la estructura actual del API_Calendar-master —especialmente sus paquetes model, ui, y ui.adapters—, pero incorporando nuevos módulos bien organizados (data, network, google, util).
Aquí te dejo el plan técnico paso a paso para hacerlo correctamente sin romper compatibilidades:
🧱 1. Reorganiza la estructura de paquetes
Dentro de java/com/example/api_calendar/, crea estas nuevas carpetas:
├── data/ → Room (AppDatabase, EventoDao, Evento)
├── network/ → Retrofit (ApiService, RetrofitClient)
├── google/ → GoogleCalendarHelper.kt
├── util/ → GpsHelper, NotificationHelper, PreferencesManager
No borres las existentes:
├── model/
├── ui/
└── ui/adapters/
Así el proyecto combina ambas arquitecturas.
⚙️ 2. Configura build.gradle (Module: app)
Abre app/build.gradle.kts y agrega las siguientes dependencias:
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("kotlin-kapt")
}
android {
namespace = "com.example.api_calendar"
compileSdk = 34
defaultConfig {
applicationId = "com.example.api_calendar"
minSdk = 24
targetSdk = 34
versionCode = 2
versionName = "2.0"
}
buildFeatures {
viewBinding = true
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions { jvmTarget = "11" }
}
dependencies {
implementation("com.google.android.material:material:1.12.0")
// Retrofit
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.retrofit2:converter-gson:2.9.0")
// Room
implementation("androidx.room:room-runtime:2.6.0")
kapt("androidx.room:room-compiler:2.6.0")
// DataStore
implementation("androidx.datastore:datastore-preferences:1.1.1")
// Google Play Services
implementation("com.google.android.gms:play-services-auth:20.7.0")
implementation("com.google.android.gms:play-services-location:21.0.1")
implementation("com.google.api-client:google-api-client-android:1.34.0")
implementation("com.google.apis:google-api-services-calendar:v3-rev305-1.25.0")
// Coroutines
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.7.3")
// Glide
implementation("com.github.bumptech.glide:glide:4.16.0")
// Calendar UI
implementation("com.github.prolificinteractive:material-calendarview:2.0.1")
}
🧠 3. Agrega las clases base (copiadas desde App_Calendar_Pro)
Coloca los archivos completos:
data/
Evento.kt
EventoDao.kt
AppDatabase.kt
network/
ApiService.kt
RetrofitClient.kt
google/
util/
GpsHelper.kt
NotificationHelper.kt
PreferencesManager.kt
(Todo ese código está en el PDF Calendar_Pro_UC y se puede copiar exactamente igual.)
🔔 4. Actualiza AndroidManifest.xml
Asegúrate de incluir los permisos y las activities adicionales:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<application ...>
<activity android:name=".SplashActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".ui.LoginActivity"/>
<activity android:name=".ui.MainActivity"/>
<activity android:name=".ui.AgregarEventoActivity"/>
<activity android:name=".ui.ConfiguracionActivity"/>
<activity android:name=".ui.PerfilActivity"/>
<activity android:name=".ui.DocenteActivity"/>
</application>
🎨 5. Temas y estilos (DataStore + themes)
Reemplaza tus res/values/colors.xml y themes.xml con los del documento (poseen temas: Duoc, Lila, Oscuro y Verde).
Esto te permitirá cambiar el tema dinámicamente desde ConfiguracionActivity usando PreferencesManager.
📍 6. GPS y notificaciones
GpsHelper.kt usa FusedLocationProviderClient para obtener coordenadas.
NotificationHelper.kt crea canales y muestra notificaciones locales (ideal para recordatorios de eventos).
Integra las llamadas desde AgregarEventoActivity.kt.
☁️ 7. Retrofit + Google Calendar
En AgregarEventoActivity, agrega un switch:
“Sincronizar con Google Calendar”
Usa GoogleCalendarHelper.kt para enviar el evento real a la API de Google Calendar.
Simultáneamente, guarda los datos en Room y en la API NPoint mediante RetrofitClient.
🧩 8. Mantén los adaptadores
No toques ui.adapters ni model/; solo conecta tus nuevos datos (Evento, Course, etc.) al adapter si lo deseas.
De esa manera, mantienes tu lista dinámica intacta, pero ahora respaldada con Room o Retrofit.
🧾 9. Resultado final
Tu nuevo API_Calendar-master fusionado se convierte en una versión “Calendar Pro UC” completa, con:
- Persistencia local
- API externa
- Temas configurables
- Login local y Google
- Drawer funcional
- Eventos sincronizados
- GPS y notificaciones reales
Perfecto 🌟 Entiendo exactamente lo que quieres lograr.
Tu objetivo es fusionar el proyecto
API_Calendar-mastercon las funcionalidades avanzadas delApp_Calendar_Pro(según la guía del documento Calendar_Pro_UC.pdf), manteniendo la estructura actual delAPI_Calendar-master—especialmente sus paquetesmodel,ui, yui.adapters—, pero incorporando nuevos módulos bien organizados (data,network,google,util).Aquí te dejo el plan técnico paso a paso para hacerlo correctamente sin romper compatibilidades:
🧱 1. Reorganiza la estructura de paquetes
Dentro de
java/com/example/api_calendar/, crea estas nuevas carpetas:No borres las existentes:
Así el proyecto combina ambas arquitecturas.
⚙️ 2. Configura
build.gradle (Module: app)Abre
app/build.gradle.ktsy agrega las siguientes dependencias:plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("kotlin-kapt") } android { namespace = "com.example.api_calendar" compileSdk = 34 defaultConfig { applicationId = "com.example.api_calendar" minSdk = 24 targetSdk = 34 versionCode = 2 versionName = "2.0" } buildFeatures { viewBinding = true } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" } } dependencies { implementation("com.google.android.material:material:1.12.0") // Retrofit implementation("com.squareup.retrofit2:retrofit:2.9.0") implementation("com.squareup.retrofit2:converter-gson:2.9.0") // Room implementation("androidx.room:room-runtime:2.6.0") kapt("androidx.room:room-compiler:2.6.0") // DataStore implementation("androidx.datastore:datastore-preferences:1.1.1") // Google Play Services implementation("com.google.android.gms:play-services-auth:20.7.0") implementation("com.google.android.gms:play-services-location:21.0.1") implementation("com.google.api-client:google-api-client-android:1.34.0") implementation("com.google.apis:google-api-services-calendar:v3-rev305-1.25.0") // Coroutines implementation("org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.7.3") // Glide implementation("com.github.bumptech.glide:glide:4.16.0") // Calendar UI implementation("com.github.prolificinteractive:material-calendarview:2.0.1") }🧠 3. Agrega las clases base (copiadas desde
App_Calendar_Pro)Coloca los archivos completos:
data/
Evento.ktEventoDao.ktAppDatabase.ktnetwork/
ApiService.ktRetrofitClient.ktgoogle/
GoogleCalendarHelper.ktutil/
GpsHelper.ktNotificationHelper.ktPreferencesManager.kt(Todo ese código está en el PDF Calendar_Pro_UC y se puede copiar exactamente igual.)
🔔 4. Actualiza
AndroidManifest.xmlAsegúrate de incluir los permisos y las activities adicionales:
🎨 5. Temas y estilos (DataStore + themes)
Reemplaza tus
res/values/colors.xmlythemes.xmlcon los del documento (poseen temas: Duoc, Lila, Oscuro y Verde).Esto te permitirá cambiar el tema dinámicamente desde
ConfiguracionActivityusandoPreferencesManager.📍 6. GPS y notificaciones
GpsHelper.ktusa FusedLocationProviderClient para obtener coordenadas.NotificationHelper.ktcrea canales y muestra notificaciones locales (ideal para recordatorios de eventos).Integra las llamadas desde
AgregarEventoActivity.kt.☁️ 7. Retrofit + Google Calendar
En
AgregarEventoActivity, agrega un switch:Usa
GoogleCalendarHelper.ktpara enviar el evento real a la API de Google Calendar.Simultáneamente, guarda los datos en Room y en la API NPoint mediante
RetrofitClient.🧩 8. Mantén los adaptadores
No toques
ui.adaptersnimodel/; solo conecta tus nuevos datos (Evento,Course, etc.) al adapter si lo deseas.De esa manera, mantienes tu lista dinámica intacta, pero ahora respaldada con Room o Retrofit.
🧾 9. Resultado final
Tu nuevo
API_Calendar-masterfusionado se convierte en una versión “Calendar Pro UC” completa, con: