e38a6cb7f6
- Screen pinning (startLockTask) blocks home/recent buttons - Gateway launches in background, kiosk returns to front after 1.5s - Injected thin green bar at top of WebView for triple-tap exit - JavaScript bridge for kiosk exit from WebView context - Update check via GitHub releases API (every 6h) - Shows banner in WebView when kiosk/gateway updates available - Setup wizard no longer re-appears after completion/skip (evershelf_setup_done flag) - REORDER_TASKS permission for moveTaskToFront - singleTask launch mode for proper kiosk behavior - Version bumped to 1.2.0 (versionCode 3)
EverShelf Kiosk
Android kiosk app that displays the EverShelf web interface in full-screen mode while running the Smart Scale BLE Gateway as a background service.
Features
- Full-screen WebView — displays EverShelf in immersive kiosk mode (no status bar, no navigation)
- Built-in Scale Gateway — BLE connection to smart scales with WebSocket server on port 8765
- Auto-reconnect — automatically reconnects to the last connected scale
- Foreground service — gateway runs even when the screen is off
- Camera pass-through — allows barcode scanning from within the WebView
- Error recovery — shows retry page when the server is unreachable
Setup
- Install the APK on your Android tablet/phone
- On first launch, grant Bluetooth and Location permissions
- Tap the subtle ⚙️ icon in the top-right corner to configure the EverShelf server URL
- In EverShelf settings, set the Scale Gateway URL to
ws://localhost:8765
Architecture
KioskActivity (WebView — full-screen EverShelf)
↕ binds to
ScaleGatewayService (foreground service)
├── BleScaleManager (BLE scanning + connection)
│ └── ScaleProtocol (multi-protocol weight parser)
└── GatewayWebSocketServer (port 8765)
↕ WebSocket
WebView (EverShelf JavaScript connects to ws://localhost:8765)
Building
cd evershelf-kiosk
./gradlew assembleDebug
# APK at app/build/outputs/apk/debug/app-debug.apk
Requirements
- Android 7.0+ (API 24)
- Bluetooth Low Energy support
- Network access to EverShelf server