Go to file
caspar b03d4507c1
All checks were successful
APK-BUILD/pipeline/head This commit looks good
Fix scanner input and move keyboard toggle into admin dialog
onCheckIsTextEditor() returning false prevented the InputConnection
from being established, breaking hardware key relay from the barcode
scanner into HTML inputs. Always return true — the other suppression
layers handle keyboard hiding.

Move the keyboard toggle from the top-right corner gesture (which
blocked a UI feature) into the admin dialog (7 taps top-left corner).
The dialog now shows three options: exit, toggle keyboard, or cancel.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-10-08 01:00:07 -04:00
app Fix scanner input and move keyboard toggle into admin dialog 2026-10-08 01:00:07 -04:00
gradle/wrapper Initial commit. Basic app. 2026-09-28 15:41:55 -04:00
.gitignore Initial commit. Basic app. 2026-09-28 15:41:55 -04:00
build.gradle.kts Initial commit. Basic app. 2026-09-28 15:41:55 -04:00
CLAUDE.md Restore real InputConnection to fix barcode scanner input 2026-10-08 00:37:43 -04:00
gradle.properties Initial commit. Basic app. 2026-09-28 15:41:55 -04:00
gradlew Initial commit. Basic app. 2026-09-28 15:41:55 -04:00
Jenkinsfile Fix: archive APKs before cleaning workspace 2026-10-07 19:18:29 -04:00
README.md Initial commit. Basic app. 2026-09-28 15:41:55 -04:00
settings.gradle.kts Initial commit. Basic app. 2026-09-28 15:41:55 -04:00

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

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.