浏览代码

docs: add verified screenshots and platform notes

Krasimir Kazakov 1 周之前
父节点
当前提交
7e30bb853a
共有 10 个文件被更改,包括 40 次插入 和 21 次删除
  1. 1 0
      AGENTS.md
  2. 24 9
      README.md
  3. 15 12
      docs/IMPLEMENTATION_PLAN.md
  4. 二进制
      docs/screenshots/all-apps.png
  5. 二进制
      docs/screenshots/app-picker.png
  6. 二进制
      docs/screenshots/home-compact-1024.png
  7. 二进制
      docs/screenshots/home-dark.png
  8. 二进制
      docs/screenshots/home-light.png
  9. 二进制
      docs/screenshots/pin-lock.png
  10. 二进制
      docs/screenshots/settings.png

+ 1 - 0
AGENTS.md

@@ -91,4 +91,5 @@ notifyListeners();
 - The HOME role must be granted for the dashboard to replace the tablet home screen. On the emulator use `cmd role add-role-holder`; the in-app banner and Settings row use `RoleManager`.
 - Screen-space is deliberately finite: test at 1280×800 and 1024×600. Avoid unbounded `ListView`s inside `Column`s.
 - `tool/emulator.sh` starts a headless AVD; use `adb exec-out screencap -p` for screenshots. There may be multiple `adb` binaries on PATH; use the absolute one.
+- While CarDash is foreground, `MainActivity` consumes hardware volume keys and adjusts `STREAM_MUSIC` so they match the dashboard. Do not remove that override without providing another sync path; otherwise Android controls the ring stream when no media is playing.
 - Reinstalling the app can clear its HOME role; re-run `tool/install.sh` or use Settings > Home app.

+ 24 - 9
README.md

@@ -10,17 +10,32 @@ apps open full-screen using the normal Android launcher mechanism. No overlays,
 no root, no kiosk setup.
 
 <p align="center">
-  <em>Early preview — implementation and UI screenshots are in progress.</em>
+  <em>Verified on Android 15 and Android 10 tablet emulators at 1280×800.
+  Landscape only.</em>
 </p>
 
+## Screenshots
+
+| Light | Dark |
+|---|---|
+| ![CarDash light home](docs/screenshots/home-light.png) | ![CarDash dark home](docs/screenshots/home-dark.png) |
+
+Also: [All apps](docs/screenshots/all-apps.png) ·
+[app picker](docs/screenshots/app-picker.png) ·
+[Settings](docs/screenshots/settings.png) ·
+[PIN lock](docs/screenshots/pin-lock.png) ·
+[1024×600 layout](docs/screenshots/home-compact-1024.png)
+
 ## Features
 
 - **One home screen** — no pages, no top bar, no bottom dock; information and
   controls live on the home page.
 - **Large clock and date** with the device's 12/24-hour preference.
 - **Battery, charging and Wi-Fi** status.
-- **Media volume** — ring, slider, step and mute controls; hardware volume keys
-  stay in sync. This is the phone's media stream, not a private volume.
+- **Media volume** — ring, slider, step and mute controls. While CarDash is in
+  front, the hardware volume keys are routed to the same media stream, so the
+  dashboard and the keys always agree. This is the phone's media stream, not a
+  private volume.
 - **Configurable shortcuts** for Navigation, Music and Radio. Generic icons on
   the dashboard; real app icons in the picker and All Apps.
 - **All apps** — searchable grid of every launchable app, launched full-screen.
@@ -75,8 +90,8 @@ minimum-version checks.
 ### Manual install
 
 ```bash
-flutter build apk --debug
-adb install -r build/app/outputs/flutter-apk/app-debug.apk
+flutter build apk --release
+adb install -r build/app/outputs/flutter-apk/app-release.apk
 adb shell cmd role add-role-holder android.app.role.HOME com.wasp.cardash_launcher
 adb shell am start -a android.intent.action.MAIN -c android.intent.category.HOME
 ```
@@ -96,7 +111,7 @@ same thing. Android will not let an app force itself into the home role silently
 | All apps | Search every launchable app; tap to open |
 | Volume ring / mute | Toggle media mute |
 | Slider or − / + | Set media volume |
-| Hardware volume keys | Update the on-screen control automatically |
+| Hardware volume keys | Adjust the dashboard's media volume; the ring follows |
 
 The app hides the Android status and navigation bars while CarDash is in the
 foreground. Swipe from an edge to reveal them temporarily; they hide again when
@@ -152,8 +167,9 @@ flutter test
 ```
 
 Current tests cover PIN hashing/persistence, settings persistence, theme
-resolution and the shortcut tile widget. Native package enumeration and the
-HOME role are verified on the emulator.
+resolution and the shortcut tile widget. Native package enumeration, the HOME
+role, volume, app launching and PIN flows were verified on both API 35 and
+API 29 tablet emulators, including the release APK.
 
 ## Compatibility and limitations
 
@@ -187,7 +203,6 @@ large numerals and quiet line icons. It is not a copy of that UI.
 
 - Optional compact now-playing control beside the volume card.
 - Configurable home layout or additional shortcut slots.
-- Screenshot set in `docs/screenshots/`.
 - Release signing configuration.
 - Real-device soak test on an Android 10 car tablet.
 

+ 15 - 12
docs/IMPLEMENTATION_PLAN.md

@@ -74,8 +74,8 @@ Android (Kotlin)
 | M3 | Kotlin bridges: app list/icons/launch, HOME role, volume, battery/Wi-Fi | Done |
 | M4 | App picker, All Apps, slot persistence, long-press flows, launch errors | Done |
 | M5 | Settings, theme auto window, PIN setup/change/remove, cold-start lock | Done |
-| M6 | Interaction testing, light/dark screenshots, layout polish, API 29 verification | In progress |
-| M7 | Release build, final docs, screenshots, last commits | Pending |
+| M6 | Interaction testing, light/dark screenshots, layout polish, API 29 verification | Done |
+| M7 | Release build, final docs, screenshots, last commits | Done |
 
 ## 5. Verification checklist
 
@@ -86,15 +86,15 @@ Android (Kotlin)
 - [x] HOME role granted; Home opens CarDash.
 - [x] Immersive full-screen; no Android bars.
 - [x] Real app list and icons in All Apps.
-- [ ] App picker assign / long-press change / clear, with dock-independent persistence.
-- [ ] Launch Navigation/Music/Radio full-screen and return Home.
-- [ ] Volume slider, mute, hardware-key synchronization.
-- [ ] Light theme, dark theme and automatic switch.
-- [ ] PIN set → cold start shows lock; wrong PIN/cooldown; remove PIN.
-- [ ] Verify 1024×600 compact layout (`adb shell wm size 1024x600`).
-- [ ] Boot and verify on Android 10 (API 29) AVD.
-- [ ] Release APK on both AVDs.
-- [ ] Screenshots in `docs/screenshots/`; README/AGENTS/plan updated.
+- [x] App picker assign / long-press change / clear, with persistence across restart.
+- [x] Launch Navigation/Music/Radio full-screen and return Home (verified with Maps and YouTube Music).
+- [x] Volume slider, mute and hardware-key synchronization (keys are routed to `STREAM_MUSIC` while the dashboard is foreground).
+- [x] Light theme, dark theme and automatic switch.
+- [x] PIN set/change/remove; cold start shows lock; wrong PIN; no re-lock after returning from an app.
+- [x] Verify 1024×600 compact layout (`adb shell wm size 1024x600`).
+- [x] Boot and verify on Android 10 (API 29) AVD, including PIN and release APK.
+- [x] Release APK on both AVDs (54 MB universal APK).
+- [x] Screenshots in `docs/screenshots/`; README/AGENTS/plan updated.
 
 ## 6. Known risks and mitigations
 
@@ -125,4 +125,7 @@ Android (Kotlin)
 - 2026-10-29: Pivoted from an overlay/head-unit chrome design to a
   launcher-native single home page, no top/bottom bars, full-screen external
   apps. Implemented core UI, Kotlin bridges, settings, PIN and documentation.
-  Verified initial home/All Apps/immersive behavior on the API 35 AVD.
+  Verified initial home, app picker, All Apps, volume, themes and cold-start PIN
+  on the API 35 AVD; then verified the release build and PIN flows on the API 29
+  AVD. Added hardware volume-key routing and PIN verification progress.
+  Screenshots captured at 1280×800 and 1024×600.

二进制
docs/screenshots/all-apps.png


二进制
docs/screenshots/app-picker.png


二进制
docs/screenshots/home-compact-1024.png


二进制
docs/screenshots/home-dark.png


二进制
docs/screenshots/home-light.png


二进制
docs/screenshots/pin-lock.png


二进制
docs/screenshots/settings.png