|
|
@@ -17,8 +17,8 @@ the normal Android launcher mechanism. No overlays, no root, no kiosk setup.
|
|
|
|
|
|
## Download
|
|
|
|
|
|
-- [Gogs release page](https://git.krasi.net/kkazakov/car-interface-android/releases) — published 1.0.0 release
|
|
|
-- [cardash-android-1.0.0.apk](releases/cardash-android-1.0.0.apk) — universal Android release
|
|
|
+- [Gogs release page](https://git.krasi.net/kkazakov/car-interface-android/releases) — published releases
|
|
|
+- [cardash-android-1.0.1.apk](releases/cardash-android-1.0.1.apk) — universal Android release
|
|
|
- SHA-256 and build details: [releases/README.md](releases/README.md)
|
|
|
|
|
|
Gogs limits release attachments to 32 MB, so the 54 MB universal APK is linked
|
|
|
@@ -76,6 +76,10 @@ live vehicle data.
|
|
|
play/pause button. The song title and artist scroll along the bottom; paused
|
|
|
audio stops the scroll and holds its position. When nothing is playing it
|
|
|
reads **Nothing playing**. The volume slider, −/+, and Mute pill remain.
|
|
|
+- **Update check** — on startup, CarDash queries the public Gogs release list
|
|
|
+ without blocking the dashboard. Settings → Updates shows the current version,
|
|
|
+ a Check button, and a Download button that opens the release page. It never
|
|
|
+ auto-installs an APK.
|
|
|
- **Now-playing access** — Settings → Media grants Android notification access,
|
|
|
used only to read the active media session’s title, duration and position.
|
|
|
CarDash never reads or stores notification content.
|
|
|
@@ -232,6 +236,11 @@ the app resumes.
|
|
|
OBD-II connected.” Enabling it asks for location permission.
|
|
|
- Read-only note: CarDash never writes to the ECU.
|
|
|
|
|
|
+**Updates**
|
|
|
+- Non-blocking check against the public Gogs releases.
|
|
|
+- Shows current/latest version; Download opens the release page.
|
|
|
+- No automatic download or silent installation.
|
|
|
+
|
|
|
**Security**
|
|
|
- Set, change or remove a four-digit PIN.
|
|
|
- The PIN is requested only on a cold start. It does not re-lock when switching
|
|
|
@@ -277,12 +286,13 @@ flutter test
|
|
|
./tool/check.sh
|
|
|
```
|
|
|
|
|
|
-The 47 tests cover PIN hashing/persistence, settings persistence, theme/accent,
|
|
|
+The 50 tests cover PIN hashing/persistence, settings persistence, theme/accent,
|
|
|
dark accent tinting, battery visibility, first-run state, slot visibility,
|
|
|
pinned apps, custom labels/icons, the 16-button cap at 1280×800, 1280×720 and
|
|
|
1024×600, the dense shortcut grid, the equalizer animation, OBD economy, the OBD
|
|
|
card, media-key playback, media metadata/progress, the marquee, the play/pause
|
|
|
-ring, the keep-awake preference, the night overlay and GPS speed fallback. Native package
|
|
|
+ring, the keep-awake preference, the night overlay, GPS speed fallback and the
|
|
|
+update version/availability logic. Native package
|
|
|
enumeration, the HOME role, volume, app launching and PIN flows were verified on
|
|
|
API 35 and API 29 emulators. Location permission, reverse geocoding and the
|
|
|
Open-Meteo fallback were verified live on the API 35 emulator. Now-playing
|
|
|
@@ -290,7 +300,8 @@ title, artist, progress and pause/resume were verified against a live Chrome
|
|
|
MediaSession. The OBD hardware path compiles and is covered by the parser/economy
|
|
|
design, but no ELM327 adapter is available on this machine; socket behavior still
|
|
|
needs a car test. Release
|
|
|
-The 1.0.0 universal APK is built from this tree. The emulator and physical Android 17 tablet last ran 0.10.0.
|
|
|
+The 1.0.1 universal APK is built from this tree. The emulator and physical
|
|
|
+Android 17 tablet have the 1.0.0 updater build installed for testing the update flow.
|
|
|
|
|
|
## Troubleshooting the emulator
|
|
|
|
|
|
@@ -343,6 +354,9 @@ Android 15 AVD is left running headlessly after development; use
|
|
|
- **Play/pause uses Android media keys.** It resumes a paused session when one
|
|
|
responds; if nothing is playing, it opens the app assigned to the Music slot
|
|
|
(or asks you to choose one). The ring shows Play whenever audio is inactive.
|
|
|
+- **Updates are notification-only.** Settings → Updates checks the public Gogs
|
|
|
+ release list and opens the release page; CarDash never downloads or installs an
|
|
|
+ APK automatically.
|
|
|
- **Song progress/title require notification access.** Without it, Android does
|
|
|
not expose MediaSession metadata to a normal launcher; the card still controls
|
|
|
playback and shows Nothing playing or Playing.
|
|
|
@@ -360,8 +374,9 @@ Android 15 AVD is left running headlessly after development; use
|
|
|
- **`QUERY_ALL_PACKAGES`** is used to list all launchable apps. It is reasonable
|
|
|
for a launcher but requires a Play policy declaration if the app is ever
|
|
|
distributed; this is a local/sideload build for now.
|
|
|
-- **Network access** is only for the optional Open-Meteo temperature fallback;
|
|
|
- there are no accounts, ads, telemetry or update checks.
|
|
|
+- **Network access** is used for the optional Open-Meteo temperature fallback and
|
|
|
+ the Gogs release check. There are no accounts, ads, telemetry or silent
|
|
|
+ auto-updates.
|
|
|
- The launcher cannot replace Android's lock screen. The PIN does not protect a
|
|
|
running session, by design.
|
|
|
|