92 lines
3.4 KiB
Markdown
92 lines
3.4 KiB
Markdown
# Joykoo Scanner
|
|
|
|
Aplicación nativa de Android que funciona como navegador dedicado de pantalla completa para el sistema web de Joykoo (`smart.joykoo.mx`), diseñada para escáneres industriales de códigos de barras y QR.
|
|
|
|
## Características
|
|
|
|
- **WebView en pantalla completa** — Carga el sitio web de la empresa sin barra de direcciones ni controles del navegador
|
|
- **Supresión del teclado virtual** — El teclado en pantalla de Android nunca aparece, mientras que la entrada del escáner de códigos de barras (modo HID/teclado) funciona normalmente
|
|
- **Modo kiosco** — Pantalla siempre encendida, modo inmersivo, navegación restringida al dominio de la empresa
|
|
- **Persistencia de sesión** — Cookies y almacenamiento local persisten entre reinicios de la aplicación
|
|
- **Manejo de errores de red** — Pantalla de reintento cuando no hay conexión Wi-Fi
|
|
- **Salida protegida** — Se requieren 3 pulsaciones rápidas del botón Atrás para salir; gesto oculto de administrador (7 toques en esquina superior izquierda) con diálogo de confirmación
|
|
|
|
## Requisitos
|
|
|
|
- Android 7.0+ (API 24)
|
|
- Dispositivo con escáner de códigos de barras integrado en modo HID/teclado
|
|
- Conexión Wi-Fi al servidor de la empresa
|
|
|
|
## Compilación
|
|
|
|
### Prerrequisitos
|
|
|
|
- JDK 17
|
|
- Android SDK con:
|
|
- `platform-tools`
|
|
- `platforms;android-34`
|
|
- `build-tools;34.0.0`
|
|
|
|
### Usando Android Studio
|
|
|
|
Abrir el proyecto y compilar normalmente.
|
|
|
|
### Línea de comandos
|
|
|
|
```bash
|
|
export JAVA_HOME=/ruta/a/jdk-17
|
|
export ANDROID_HOME=/ruta/a/android-sdk
|
|
|
|
./gradlew assembleDebug # APK de depuración
|
|
./gradlew assembleRelease # APK de producción (requiere configurar firma)
|
|
```
|
|
|
|
El APK resultante se encuentra en `app/build/outputs/apk/`.
|
|
|
|
## Configuración
|
|
|
|
Todos los valores configurables están en un solo archivo:
|
|
|
|
**`app/src/main/java/mx/joykoo/scanner/AppConfig.kt`**
|
|
|
|
| Parámetro | Descripción | Valor por defecto |
|
|
|---|---|---|
|
|
| `HOME_URL` | URL que se carga al iniciar | `https://smart.joykoo.mx/` |
|
|
| `ALLOWED_HOSTS` | Dominios permitidos dentro del WebView | `smart.joykoo.mx`, `joykoo.mx` |
|
|
| `BACK_PRESS_EXIT_COUNT` | Pulsaciones rápidas de Atrás para salir | 3 |
|
|
| `ADMIN_TAP_COUNT` | Toques en esquina superior izquierda para menú de administrador | 7 |
|
|
|
|
## Uso del escáner
|
|
|
|
1. El usuario toca un campo de texto en la página web
|
|
2. El campo recibe el foco — **el teclado virtual no aparece**
|
|
3. El usuario escanea un código de barras o QR
|
|
4. El texto escaneado aparece en el campo
|
|
5. Si el escáner envía Enter al final, la página lo procesa normalmente
|
|
|
|
## Estructura del proyecto
|
|
|
|
```
|
|
app/src/main/java/mx/joykoo/scanner/
|
|
├── AppConfig.kt — Configuración centralizada
|
|
├── MainActivity.kt — Actividad principal (kiosco, WebView, navegación)
|
|
├── NoSoftKeyboardWebView.kt — WebView que suprime el teclado virtual
|
|
└── ScannerIntegration.kt — Interfaz para futura integración con SDK de escáner
|
|
```
|
|
|
|
## Integración futura con SDK de escáner
|
|
|
|
La aplicación funciona inmediatamente con escáneres en modo HID/teclado. Para escáneres que requieren integración con SDK propietario (broadcast intents), implementar la interfaz `ScannerIntegration` y registrar el BroadcastReceiver correspondiente.
|
|
|
|
## Seguridad
|
|
|
|
- Solo conexiones HTTPS
|
|
- No se omiten errores de certificado TLS
|
|
- No se exponen interfaces JavaScript
|
|
- Acceso a archivos y contenido deshabilitado
|
|
- Navegación restringida a dominios autorizados
|
|
|
|
## Licencia
|
|
|
|
Uso interno — Joykoo.
|