Traducción instantánea, privada y sin internet — directamente desde el menú de selección de texto de cualquier app.
TapTranslate es una utilidad minimalista para Android que se integra directamente en el menú nativo de selección de texto del sistema operativo. Selecciona cualquier texto en cualquier aplicación, pulsa el menú de tres puntitos y elige TapTranslate — tu texto se traduce al instante, sin internet, sin que ningún dato abandone tu dispositivo.
Sin anuncios. Sin nube. Sin cuenta. Solo traducción.
- ⚡ Instantáneo — Traduce en el mismo lugar usando
ACTION_PROCESS_TEXT. El texto seleccionado es sustituido automáticamente por su traducción. - 🔒 100% Privado — Impulsado por Google ML Kit On-Device Translation. Todo el procesamiento ocurre de manera local. Cero peticiones de red durante la traducción.
- 🌐 Bidireccional — Alterna entre Español → Inglés (Modo Escribir) e Inglés → Español (Modo Leer) desde el panel de ajustes.
- 🤖 Auto-Pegado — Para apps que restringen el menú contextual (por ejemplo, comentarios ajenos en Reddit), comparte el texto hacia TapTranslate y éste lo pega automáticamente usando la API de Accesibilidad de Android.
- 🎨 UI Minimalista — Construida con Jetpack Compose, siguiendo el patrón arquitectónico MVVM (Model-View-ViewModel).
- 📱 Icono Adaptativo — Icono profesional (
mipmap-anydpi) que se adapta a cualquier forma (círculo, cuadrado) sin bordes blancos. - 🌍 Localizada — La interfaz se adapta al idioma del sistema (Inglés y Español soportados).
- 📝 Código Limpio — Constantes centralizadas y estructura de paquetes profesional.
[El usuario selecciona texto en cualquier app]
↓
[El menú del OS muestra TapTranslate]
↓
[ProcessTextActivity recibe el texto (Capa de Intercepción)]
↓
[MainViewModel gestiona el estado y activa la lógica]
↓
[TranslationEngine llama al motor NMT (Neural Machine Translation) local]
↓
[El texto traducido es devuelto a la app de origen]
Para texto de solo lectura en apps cerradas (posts de Reddit, etc.):
[El usuario comparte el texto → TapTranslate]
↓
[La traducción se copia al portapapeles]
↓
[AutoPasteService (Accesibilidad) inyecta ACTION_PASTE en el campo enfocado]
| Requisito | Versión |
|---|---|
| Android OS | 6.0+ (API 24) |
| Target SDK | Android 15 (API 35) |
| Build Tools | Android Gradle Plugin 8.2.0 |
| Gradle | 8.4 |
| Kotlin | 1.9.24 |
| Java | 17 |
-
Clona el repositorio:
git clone https://github.com/D4vRAM369/TapTranslate.git cd TapTranslate -
Ábrelo en Android Studio (Hedgehog o posterior).
-
Sincroniza Gradle y ejecútalo en tu dispositivo o emulador (API 24+).
-
En el primer lanzamiento: sigue el carrusel de bienvenida y activa opcionalmente el Servicio de Accesibilidad para el Auto-Pegado.
No se necesita configuración. Tras instalar, selecciona cualquier texto en cualquier app → pulsa ⋯ → elige TapTranslate.
Para automatización completa en apps como Reddit:
- Abre TapTranslate.
- Toca el banner
⚠️ Súper-Autopegado Desactivado. - En los ajustes de Accesibilidad, busca TapTranslate y actívalo.
- Vuelve a TapTranslate — el banner desaparece confirmando que está activo.
app/
├── src/main/
│ ├── java/com/d4vram/taptranslate/
│ │ ├── AutoPasteService.kt # Servicio de Accesibilidad — motor de auto-pegado
│ │ ├── MainActivity.kt # UI de Ajustes (Jetpack Compose)
│ │ ├── OnboardingScreen.kt # Carrusel de bienvenida (HorizontalPager)
│ │ ├── PreferencesManager.kt # Envoltorio de SharedPreferences
│ │ ├── ProcessTextActivity.kt # Interceptor invisible — activador de traducción
│ │ └── TranslationEngine.kt # Envoltorio de ML Kit — traducción bidireccional
│ ├── res/
│ │ ├── drawable/
│ │ │ └── ic_taptranslate.xml # Icono vectorial
│ │ ├── values/
│ │ │ └── strings.xml # Cadenas en español (por defecto)
│ │ ├── values-en/
│ │ │ └── strings.xml # Cadenas en inglés
│ │ └── xml/
│ │ └── accessibility_service_config.xml
│ └── AndroidManifest.xml
├── build.gradle.kts
└── gradle/wrapper/
└── gradle-wrapper.properties # Gradle 8.4 fijado
| Capa | Tecnología |
|---|---|
| Lenguaje | Kotlin |
| UI | Jetpack Compose + Material Design 3 (Patrón MVVM) |
| IA de Traducción | Google ML Kit NMT (Neural Machine Translation) |
| Asincronía | Kotlin Coroutines + kotlinx-coroutines-play-services + StateFlow |
| Persistencia | Android SharedPreferences |
| Integración con OS | ACTION_PROCESS_TEXT, ACTION_SEND, AccessibilityService |
TapTranslate no:
- Se conecta a ningún servidor externo
- Recopila ningún dato del usuario
- Requiere conexión a internet para traducir
El permiso de Servicio de Accesibilidad se usa exclusivamente para pegar el texto traducido en el campo de entrada enfocado tras usar la ruta de Compartir. No lee, registra ni transmite el contenido de la pantalla.
- Solo soporta traducción Español ↔ Inglés en v1.0. Se planean pares de idiomas adicionales.
- El primer uso requiere una descarga puntual de ~30MB de modelo por par de idiomas.
- El Auto-Pegado por Accesibilidad requiere activación manual del permiso por parte del usuario (política de seguridad de Android).
- Algunas apps pueden suprimir el menú
ACTION_PROCESS_TEXTcompletamente (usa la alternativa de Compartir en su lugar).
- Soporte para pares de idiomas adicionales (FR, DE, PT…)
- Detección automática de idioma (eliminar el selector manual de modo)
- Refactorización a arquitectura ViewModel + MVVM
- Cobertura de tests unitarios de constantes y lógica base
- Cobertura de tests de UI (Espresso/Compose Test)
- Publicación en Play Store
Licencia MIT © 2026 D4vRAM369