From 47cb0907358879e8687a1002d453dcf609abf8c1 Mon Sep 17 00:00:00 2001 From: Danny Stocker Date: Fri, 14 Nov 2025 16:21:39 +0100 Subject: [PATCH] Add Android tablet kiosk mode design for wall-mounted boat display MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Sleep mode: Large clock + weather + critical alerts (always-on, dimmed) - Active mode: Full dashboard grid (cameras, weather, maintenance, quick actions) - Auto-wake on tap, auto-sleep after 5 min inactivity - Hardware: Samsung Galaxy Tab A9+ with RAM Mounts (total €367) - Kiosk configuration: Single app lock, always-on display, adaptive brightness - Advanced: Motion detection auto-wake, PWA installable, offline mode - 7 days implementation (€5,600 dev cost) --- ANDROID_KIOSK_MODE_DESIGN.md | 943 +++++++++++++++++++++++++++++++++++ 1 file changed, 943 insertions(+) create mode 100644 ANDROID_KIOSK_MODE_DESIGN.md diff --git a/ANDROID_KIOSK_MODE_DESIGN.md b/ANDROID_KIOSK_MODE_DESIGN.md new file mode 100644 index 0000000..355f213 --- /dev/null +++ b/ANDROID_KIOSK_MODE_DESIGN.md @@ -0,0 +1,943 @@ +# 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