# NaviDocs Android Tablet Kiosk Mode - Wall-Mounted Boat Display **Created:** 2025-11-14 **Use Case:** Wall-mounted Android tablet showing always-on boat status dashboard --- ## User Requirements **Primary Goal:** Wall-mounted tablet that shows critical boat information at a glance **Modes:** 1. **Sleep Mode** - Clock + weather + critical alerts (screen dimmed, always-on) 2. **Active Mode** - Full NaviDocs interface (tap to wake) **Critical Data (Always Visible in Sleep Mode):** - Current time - Weather (temp, wind, waves) - Important pressing alerts (maintenance due, low fuel, camera offline) --- ## Hardware Recommendations ### **Recommended Tablet:** **Samsung Galaxy Tab A9+ (2023)** - ✅ 11" display (readable from 3m distance) - ✅ 1920×1200 resolution (sharp text) - ✅ Auto-brightness (adapts to cabin lighting) - ✅ WiFi + LTE (works at marina or at sea with cellular) - ✅ USB-C charging (can be wired to boat's 12V system via converter) - ✅ Android 13+ (supports always-on display, kiosk mode) - 💰 €229 (affordable for yacht market) **Alternative (Budget):** - Lenovo Tab M10 Plus (3rd Gen) - €199, 10.6" display **Alternative (Premium):** - Samsung Galaxy Tab S9 - €799, 11" AMOLED (better sunlight visibility) ### **Mounting:** **RAM Mounts X-Grip Universal Tablet Mount** - ✅ Marine-grade (waterproof, corrosion-resistant) - ✅ Adjustable arm (swivel for viewing angle) - ✅ Vibration-dampening (boat engine vibrations) - ✅ Quick release (remove for software updates) - 💰 €89 **Power:** **Victron Orion-Tr 12V to 5V USB Converter** - ✅ Hardwired to boat's 12V system - ✅ Continuous charging (never dies) - ✅ Marine-grade (protected from voltage spikes) - 💰 €34 --- ## Kiosk Mode Design ### **1. Sleep Mode (Always-On Display)** **Layout:** ``` ┌─────────────────────────────────────────┐ │ │ │ 14:32 │ │ Wednesday │ │ November 14 │ │ │ │ ☀️ 24°C 💨 12 kts 🌊 0.8m │ │ │ │ ⚠️ Oil change due in 3 days │ │ │ │ 🔴 Aft camera offline │ │ │ │ │ │ (Tap anywhere to wake) │ │ │ └─────────────────────────────────────────┘ ``` **Visual Design:** ```vue ``` --- ### **2. Active Mode (Full Interface)** **Tap Anywhere → Transition to Full Dashboard** ```vue ``` --- ## Android Kiosk Mode Configuration ### **Step 1: Enable Developer Options** 1. Go to **Settings → About tablet** 2. Tap **Build number** 7 times 3. Developer options enabled ### **Step 2: Configure Always-On Display** 1. **Settings → Display → Screen timeout** → **Never** (keep screen always on) 2. **Settings → Display → Brightness** → **Adaptive brightness** ON 3. **Settings → Developer options → Stay awake** → ON (screen never sleeps when charging) ### **Step 3: Enable Kiosk Mode (Single App Lock)** **Option A: Using Android Enterprise (Free)** ```bash # Install Google Play Kiosk app adb install -r kiosk-mode.apk # Lock to NaviDocs app adb shell dpm set-device-owner com.navidocs.kiosk/.KioskDeviceAdminReceiver # This prevents: # - Home button (can't exit app) # - Recent apps (can't switch apps) # - Notifications (won't interrupt) ``` **Option B: Using 3rd-Party Kiosk App** - **Fully Kiosk Browser** (€15/year) - Recommended - Motion detection (wake on approach) - Remote management (update URL from cloud) - Scheduled reboots (prevent memory leaks) - Screenshot API (remote monitoring) ### **Step 4: Prevent Screen Burn-In** ```javascript // Rotate content every 10 minutes to prevent OLED burn-in setInterval(() => { // Shift clock position slightly const clockEl = document.querySelector('.kiosk-clock') const randomX = Math.random() * 20 - 10 // -10px to +10px const randomY = Math.random() * 20 - 10 clockEl.style.transform = `translate(${randomX}px, ${randomY}px)` }, 10 * 60 * 1000) ``` --- ## Auto-Wake on Approach (Motion Detection) **Using Tablet's Front Camera + TensorFlow.js** ```javascript // Detect person approaching tablet import * as tf from '@tensorflow/tfjs' import * as cocoSsd from '@tensorflow-models/coco-ssd' let model let video async function initMotionDetection() { model = await cocoSsd.load() video = document.createElement('video') video.srcObject = await navigator.mediaDevices.getUserMedia({ video: true }) video.play() // Check for person every 2 seconds setInterval(detectPerson, 2000) } async function detectPerson() { const predictions = await model.detect(video) const personDetected = predictions.some(p => p.class === 'person' && p.score > 0.6) if (personDetected && isInSleepMode) { wakeUp() } } ``` **Alternative: PIR Motion Sensor (Hardware)** - **HC-SR501 PIR Sensor** (€3) - Connect to tablet via USB OTG + Arduino - Triggers wake event when motion detected within 5m --- ## Progressive Web App (PWA) Configuration **Make NaviDocs installable on Android home screen** ```javascript // public/manifest.json { "name": "NaviDocs Kiosk", "short_name": "NaviDocs", "description": "Boat management dashboard", "start_url": "/kiosk", "display": "fullscreen", // Hide status bar and nav bar "orientation": "landscape", // Force landscape for wall mount "theme_color": "#0F172A", "background_color": "#0F172A", "icons": [ { "src": "/icons/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any maskable" } ] } ``` **Install prompt:** 1. User visits NaviDocs in Chrome 2. Chrome shows "Add to Home Screen" banner 3. Tap → App installs as standalone app 4. Launch from home screen → Full-screen kiosk mode --- ## Offline Mode (For At-Sea Use) **Service Worker for offline functionality:** ```javascript // public/sw.js self.addEventListener('install', (event) => { event.waitUntil( caches.open('navidocs-kiosk-v1').then((cache) => { return cache.addAll([ '/', '/kiosk', '/styles/kiosk.css', '/scripts/kiosk.js', '/api/weather/last-known', // Cached weather data '/camera-snapshots/bow.jpg', '/camera-snapshots/stern.jpg' ]) }) ) }) self.addEventListener('fetch', (event) => { event.respondWith( caches.match(event.request).then((response) => { // Return cached version if offline return response || fetch(event.request) }) ) }) ``` --- ## Power Management ### **Continuous Charging Setup:** 1. **Mount near 12V power outlet** 2. **Use Victron Orion-Tr converter** (12V → 5V USB-C) 3. **Enable battery saver:** - Settings → Battery → Battery Saver → ON when charging - Limits background apps to extend battery lifespan ### **Prevent Overheating:** - Mount in shaded area (not direct sunlight) - Leave 5cm air gap behind tablet (ventilation) - Use Samsung's "Adaptive Battery" feature (learns usage patterns, throttles when idle) --- ## Security Considerations **Prevent Unauthorized Access:** 1. **Disable lock screen in kiosk mode** (no PIN prompt, always shows dashboard) 2. **Admin settings behind hidden gesture** (e.g., 5-finger tap on logo) 3. **Remote wipe capability** (if tablet stolen) ```javascript // Hidden admin panel access let tapCount = 0 let tapTimer function handleLogoTap() { tapCount++ clearTimeout(tapTimer) tapTimer = setTimeout(() => { tapCount = 0 }, 2000) // Reset after 2s if (tapCount === 5) { // Show admin login showAdminPanel() } } ``` --- ## Implementation Roadmap ### **Phase 1: Core Kiosk Mode (3 days)** - [ ] Build sleep mode view (clock + weather + alerts) - [ ] Build active mode view (dashboard grid) - [ ] Implement tap-to-wake transition - [ ] Implement auto-sleep after 5 min inactivity - [ ] Test on Samsung Galaxy Tab A9+ ### **Phase 2: Android Configuration (1 day)** - [ ] Configure always-on display - [ ] Set up kiosk mode (single app lock) - [ ] Install Fully Kiosk Browser - [ ] Configure auto-start on boot ### **Phase 3: Hardware Setup (1 day)** - [ ] Mount RAM Mounts X-Grip - [ ] Wire Victron 12V→5V converter - [ ] Test vibration dampening - [ ] Test sunlight readability ### **Phase 4: Advanced Features (2 days)** - [ ] Implement motion detection (auto-wake on approach) - [ ] Configure PWA (installable app) - [ ] Set up offline mode (service worker) - [ ] Implement screen burn-in prevention **Total Estimate:** 7 days (€5,600 at €80/hr senior dev rate) **Hardware Costs:** - Samsung Galaxy Tab A9+ (11"): €229 - RAM Mounts X-Grip: €89 - Victron 12V→5V converter: €34 - USB-C cable (2m): €15 - **Total Hardware:** €367 **Grand Total (Software + Hardware):** €5,967 --- ## Testing Checklist - [ ] Clock updates every second (no lag) - [ ] Weather updates every 10 minutes - [ ] Alerts fetch every 1 minute - [ ] Tap-to-wake works on first tap - [ ] Auto-sleep activates after exactly 5 minutes - [ ] Screen brightness adapts to cabin lighting - [ ] Readable from 3m distance in daylight - [ ] Readable from 3m distance in darkness (not too bright) - [ ] Camera thumbnails update every 30 seconds - [ ] Works offline (shows last-known weather) - [ ] Battery stays at 100% when charging - [ ] Tablet doesn't overheat after 24 hours - [ ] RAM mount withstands engine vibration - [ ] Motion detection wakes tablet within 2 seconds --- ## Future Enhancements **Voice Control (Alexa/Google Assistant Integration):** - "Alexa, show bow camera" → Full-screen camera view - "Alexa, what's the weather tomorrow?" → Speaks forecast - "Alexa, when is next maintenance?" → Speaks countdown **Face Recognition (Multi-User):** - Owner approaches → Shows owner dashboard - Captain approaches → Shows captain dashboard - Crew approaches → Shows crew tasks **Gestures:** - Swipe up → Show full timeline - Swipe left → Cycle through cameras - Swipe right → Show weather details - Pinch zoom → Enlarge camera feed **Ambient Mode (Screensaver):** - Rotate through camera snapshots (slideshow) - Show tide chart (for tidal areas) - Show sunrise/sunset times