113 lines
3.7 KiB
Markdown
113 lines
3.7 KiB
Markdown
# Folder Redirect App
|
|
|
|
Aplicación Android para redireccionar archivos entre carpetas automáticamente.
|
|
|
|
## Características
|
|
|
|
- ✅ Agregar reglas de redirección (carpeta origen → carpeta destino)
|
|
- ✅ Editar reglas existentes
|
|
- ✅ Eliminar reglas
|
|
- ✅ Activar/desactivar reglas individualmente
|
|
- ✅ **Filtro por tipo de archivo** (Documentos, Imágenes, Videos)
|
|
- ✅ **Filtro por patrón de nombre** (ej: RDT*, invoice_*, *.pdf)
|
|
- ✅ **Solución híbrida de batería**: Polling rápido cuando la app está abierta + WorkManager en segundo plano
|
|
- ✅ Servicio en segundo plano que monitorea las carpetas
|
|
- ✅ Mueve archivos automáticamente cuando llegan a la carpeta de origen
|
|
- ✅ Manejo de nombres duplicados (agrega timestamp)
|
|
|
|
## Requisitos
|
|
|
|
- Android 7.0 (API 24) o superior
|
|
- Permisos de almacenamiento
|
|
|
|
## Permisos
|
|
|
|
La app solicita los siguientes permisos:
|
|
|
|
- `READ_EXTERNAL_STORAGE` - Leer archivos de la carpeta de origen
|
|
- `WRITE_EXTERNAL_STORAGE` - Escribir archivos en la carpeta de destino
|
|
- `MANAGE_EXTERNAL_STORAGE` - Acceso completo al almacenamiento (Android 11+)
|
|
- `FOREGROUND_SERVICE` - Ejecutar servicio en segundo plano
|
|
|
|
## Cómo usar
|
|
|
|
1. **Abrir la app** - Al iniciar, solicita permisos de almacenamiento
|
|
|
|
2. **Agregar regla**:
|
|
- Presiona el botón flotante `+`
|
|
- Ingresa la ruta absoluta de la carpeta de origen (ej: `/storage/emulated/0/Download`)
|
|
- Ingresa la ruta absoluta de la carpeta de destino (ej: `/storage/emulated/0/MisDocumentos`)
|
|
- Presiona "Guardar"
|
|
|
|
3. **Iniciar servicio**:
|
|
- Presiona el botón "Iniciar Servicio"
|
|
- El servicio se ejecutará en segundo plano monitoreando las carpetas
|
|
|
|
4. **Gestionar reglas**:
|
|
- Usa el switch para activar/desactivar reglas individualmente
|
|
- Presiona el ícono de editar para modificar una regla
|
|
- Presiona el ícono de eliminar para borrar una regla
|
|
|
|
## Notas Importantes
|
|
|
|
- Las carpetas de origen y destino deben existir antes de crear la regla
|
|
- El servicio se detiene al cerrar la app (presionar "Detener Servicio")
|
|
- Los archivos con nombres duplicados reciben un timestamp para evitar sobrescritura
|
|
- Solo se monitorean archivos nuevos, no subcarpetas
|
|
|
|
## Estructura del Proyecto
|
|
|
|
```
|
|
app/src/main/java/com/folderredirect/app/
|
|
├── MainActivity.kt # Actividad principal
|
|
├── FolderRule.kt # Modelo de datos
|
|
├── FolderRuleAdapter.kt # Adapter para RecyclerView
|
|
├── FolderMonitorService.kt # Servicio de monitoreo
|
|
└── RulesManager.kt # Gestión de almacenamiento de reglas
|
|
|
|
app/src/main/res/layout/
|
|
├── activity_main.xml # Layout principal
|
|
├── item_folder_rule.xml # Item de la lista
|
|
└── dialog_rule.xml # Diálogo para agregar/editar
|
|
```
|
|
|
|
## Compilación
|
|
|
|
```bash
|
|
# Abrir en Android Studio o compilar desde terminal
|
|
./gradlew assembleDebug
|
|
|
|
# El APK se generará en:
|
|
# app/build/outputs/apk/debug/app-debug.apk
|
|
```
|
|
|
|
## Tecnologías
|
|
|
|
- Kotlin
|
|
- Androidx
|
|
- Material Design 3 (Dynamic Colors)
|
|
- RecyclerView
|
|
- Foreground Service
|
|
- **WorkManager** (segundo plano eficiente)
|
|
- WatchService (Java NIO)
|
|
- Gson (persistencia)
|
|
|
|
## 💡 Solución Híbrida de Batería
|
|
|
|
La app usa un enfoque inteligente para ahorrar batería:
|
|
|
|
### **Cuando la app está abierta:**
|
|
- ⚡ **Polling rápido (10 segundos)** - Movimiento casi instantáneo
|
|
- 📱 El servicio en primer plano monitorea constantemente
|
|
|
|
### **Cuando la app está cerrada:**
|
|
- 🔋 **WorkManager (15 minutos)** - Bajo consumo
|
|
- 🔄 El sistema ejecuta verificaciones periódicas eficientes
|
|
- 💤 Respeta el modo Doze y ahorro de batería
|
|
|
|
### **Ventajas:**
|
|
- ✅ Movimiento rápido cuando usas la app
|
|
- ✅ Ahorro de batería cuando está cerrada
|
|
- ✅ Funciona incluso si cierras la app
|
|
- ✅ Android no mata el proceso en segundo plano
|