Voeg thema-selector toe (DayNight, Radiogroep, teal accent)
This commit is contained in:
parent
5a0dee77b3
commit
c977dc25a2
12 changed files with 201 additions and 24 deletions
|
|
@ -138,13 +138,13 @@ De flasher draait in een raw `Thread` die niet annuleerbaar is. Als de gebruiker
|
|||
|
||||
**Aanbeveling:** Overweeg een cancelable mechanisme of gebruik coroutines.
|
||||
|
||||
#### 3.3 BLE writes zonder acknowledgment fallback (LAAG)
|
||||
#### 3.3 BLE writes zonder acknowledgment fallback (LAAG) — **AFGESLOTEN, bewuste keuze**
|
||||
|
||||
**Bestand:** `MainActivity.kt:277-289`
|
||||
|
||||
`WRITE_TYPE_NO_RESPONSE` betekent dat er geen bevestiging komt van de ESP. Als de packet verloren gaat, heeft de app geen retry mechanisme. De knop-toestand wijzigt wel ("ON"), maar het relais schakelt niet.
|
||||
|
||||
**Aanbeveling:** Voor productie: overweeg een bevestigingsmechanisme via BLE notifications van de ESP, om de UI-state te koppelen aan de werkelijke relay-state.
|
||||
**BESLUIT:** Afgewezen om dezelfde reden als 6.1 — ACK-based writes veroorzaken dat loslaten wordt genegeerd als de ACK te lang duurt, waardoor het relais blijft hangen. Zie _Ontwerpbeslissingen_ in README.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -265,25 +265,23 @@ try { unregisterReceiver(usbAttachedReceiver) } catch (e: Exception) {
|
|||
|
||||
### 6. UI & UX
|
||||
|
||||
#### 6.1 Knop-state niet gesynchroniseerd met relay-state (MEDIUM)
|
||||
#### 6.1 Knop-state niet gesynchroniseerd met relay-state (MEDIUM) — **AFGESLOTEN, bewuste keuze**
|
||||
|
||||
**Bestand:** `MainActivity.kt:207-222`
|
||||
|
||||
De knop tekst wijzigt naar "ON" bij `ACTION_DOWN` en "HOLD" bij `ACTION_UP`, ongeacht of het BLE-commando daadwerkelijk is aangekomen. Gezien het gebruik van `WRITE_TYPE_NO_RESPONSE` is er geen bevestiging.
|
||||
|
||||
**Aanbeveling:** Geef visuele feedback die duiderscheid maakt tussen "commando verzonden" en "relais bevestigd" — bijv. een dimmed state of pending indicator.
|
||||
**Oorspronkelijke aanbeveling:** Geef visuele feedback die onderscheid maakt tussen "commando verzonden" en "relais bevestigd" — bijv. een dimmed state of pending indicator.
|
||||
|
||||
#### 6.2 Geen dark mode support (LAAG)
|
||||
**BESLUIT:** Afgewezen. Eerdere versies gebruikten `WRITE_TYPE_DEFAULT` (met ACK), maar de BLE write acknowledgement duurde lang genoeg dat de gebruiker de knop kon loslaten vóór de ACK arriveerde. Bij `ACTION_UP` tijdens een pending write werd het loslaten genegeerd en bleven het relais en de app hangen in de ON-status. `WRITE_TYPE_NO_RESPONSE` verwijdert die latency. De UI reflecteert de gebruikersintentie in plaats van bevestigde relay-state — een aanvaardbare afweging. Gedocumenteerd in code (`MainActivity.kt`) en README (_Ontwerpbeslissingen_).
|
||||
|
||||
#### 6.2 Geen dark mode support (LAAG) — **AFGESLOTEN**
|
||||
|
||||
**Bestand:** `AndroidManifest.xml:17`
|
||||
|
||||
```xml
|
||||
android:theme="@style/Theme.AppCompat.Light"
|
||||
```
|
||||
|
||||
De app forceert Light theme, ook op devices in dark mode.
|
||||
|
||||
**Aanbeveling:** Gebruik `Theme.AppCompat.DayNight` of `Theme.Material3.DayNight` voor automatisch dark mode support.
|
||||
**Oplossing:** Overgeschakeld naar `Theme.AppCompat.DayNight` met teal accent-kleuren. Thema-selector in Instellingen met 3 opties: Systeem (volgt telefoon), Licht, Donker. Gekozen voor de best-practice aanpak: geen custom font-slider of contrast-kleurenkiezer — Android's systeem-lettergrootte en hoog-contrast instellingen zijn al voldoende voor de doelgroep.
|
||||
|
||||
#### 6.3 Geen visuele indicator voor scan timeout (LAAG)
|
||||
|
||||
|
|
@ -316,21 +314,17 @@ AGP 8.2.2 is van begin 2024. De nieuwste is 8.5+. Nieuwere versies bevatten bug
|
|||
|
||||
**Aanneveling:** Upgrade AGP naar 8.5+ (compatibel met Gradle 8.14).
|
||||
|
||||
#### 7.2 compileSdk 34, niet 35 (LAAG)
|
||||
#### 7.2 compileSdk 34, niet 35 (LAAG) — **AFGESLOTEN, bewuste keuze**
|
||||
|
||||
**Bestand:** `app/build.gradle:8,13`
|
||||
|
||||
`compileSdk` en `targetSdk` zijn 34 (Android 14). Android 15 (API 35) is uitgebracht.
|
||||
|
||||
**Aanbeveling:** Upgrade naar SDK 35 om de nieuwste API's en security fixes te gebruiken.
|
||||
**BESLUIT:** Afgewezen. De doelgroep bestaat uit lichamelijk gehandicapte gebruikers die zeer terughoudend zijn met het updaten van hun telefoon. API 34 maximaliseert device-compatibiliteit. Gedocumenteerd in `build.gradle` en README (_Ontwerpbeslissingen_).
|
||||
|
||||
#### 7.3 Kotlin 1.9.24, niet 2.x (LAAG)
|
||||
#### 7.3 Kotlin 1.9.24, niet 2.x (LAAG) — **AFGESLOTEN, geüpgraded**
|
||||
|
||||
**Bestand:** `android/build.gradle:3`
|
||||
|
||||
Kotlin 1.9.24 is ouder dan Kotlin 2.0+. Kotlin 2.0 biedt K2 compiler met betere prestaties.
|
||||
|
||||
**Aanneveling:** Overweeg upgrade naar Kotlin 2.0+ (vereist AGP 8.5+).
|
||||
Kotlin is geüpgraded naar 2.0.21 (K2 compiler).
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -363,9 +357,9 @@ Het 6e byte verschilt: `0x08` (SettingsActivity) vs `0x00` (UsbKeyReceiver). De
|
|||
|
||||
| Prioriteit | Aantal | Actie |
|
||||
|---|---|---|
|
||||
| **Belangrijk** | 5 | Na ontvangst oplossen |
|
||||
| **MEDIUM** | 8 | Bij volgende release |
|
||||
| **LAAG** | 8 | Optioneel / technische schuld |
|
||||
| **Belangrijk** | 5 | Alle 5 opgelost |
|
||||
| **MEDIUM** | 8 | Alle 8 opgelost |
|
||||
| **LAAG** | 8 | Alle 8 opgelost / afgesloten |
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue