Der Emulator hat kein Bluetooth. Damit sich die Ansichten trotzdem
ansehen und durchklicken lassen, füttert ein Demo-Modus fertige Werte
ein - dasselbe Vorgehen wie in der iOS-Fassung.
Nur in Debug-Bauten und nur, wenn beim Start das Extra gesetzt ist:
adb shell am start -n de.fritob.campermonitor/.MainActivity --ez demo true
Im Demo-Modus funkt nichts und es wird nichts abgelegt; die echten Geräte
und Fahrzeuge bleiben unberührt. Der Kühlbox-Zustand kommt dabei aus
einem echten Einzonen-Datensatz, wie ihn die Box im Fahrzeug schickt -
inklusive des Fühlerplatzhalters, damit die Anzeige auch im Demo zeigt,
was sie im Fahrzeug zeigen würde.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Alle Ansichten der iOS-Fassung in Jetpack Compose: Dashboard mit Kacheln,
Gerätedetails samt Messwerten, Verlauf, Zellspannungen und Diagnose,
Kühlbox-Steuerung, Nivellierung mit Libelle und Fahrzeugansicht,
Ausrichtungs-Assistent, die beiden Einrichtungsassistenten, Fahrzeuge,
Gerät hinzufügen, Schlüsseleingabe und Einstellungen.
Mitgenommen ist auch, was wir uns in der Oberfläche erarbeitet haben. Die
Geräteliste beim Einrichten sortiert nach Fundreihenfolge, nicht nach
Signalstärke - danach zu sortieren macht sie unbenutzbar, weil sie
sekündlich springt. Empfangspegel und Alter der Werte erscheinen nur mit
eingeblendeter Diagnose. Der Victron-Schlüssel liegt auf einer eigenen
Seite und meldet sich nur, wenn er fehlt oder nicht passt. Einbaulage und
Nullpunkt liegen eine Ebene tiefer, damit ein Fehlgriff beim Ablesen nicht
den Nullpunkt verstellt. Der Ausrichtungs-Assistent verlangt eine stehende
Verbindung und sagt es, wenn sie abreisst.
Drei Dinge sind auf Android anders:
Die Berechtigungsabfrage ist eigenständige Arbeit. Bis Android 11 lief ein
BLE-Scan über die Standortfreigabe, seither gibt es eigene
Bluetooth-Rechte; beide Wege werden bedient, und die App erklärt vorher,
wozu sie fragt.
Die Fahrzeugauswahl sitzt als Titel mit Aufklappen in der Leiste statt als
runder Knopf in der Ecke - so ist es hier üblich.
Die Symbole sind Material-Entsprechungen der SF-Symbole. Ausgewählt ist
jeweils das, was dieselbe Sache meint, nicht das ähnlichst aussehende.
Der Verlauf ist selbst gezeichnet; für eine Linie mit Fläche lohnt keine
Diagrammbibliothek.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Damit steht der erste Teil vollständig: Protokoll, Funk und Ablage
übersetzen sich, die 50 Prüfungen laufen.
Die Funkschicht folgt der iOS-Fassung samt allem, was wir uns dort erst
erarbeiten mussten. Ein eigener Thread für alles, was Bluetooth anfasst;
Android ruft Scan- und GATT-Rückmeldungen auf Binder-Threads auf. Die
Wartesperre nach Fehlschlägen, die zwischen einem Abbruch einer stehenden
Verbindung und einem echten Fehlschlag unterscheidet. Stellbefehle, die
aufgehoben statt verworfen werden, wenn die Kühlbox gerade weg ist. Die
Zwanzig-Byte-Grenze beim Schreiben an die Kühlbox. Die stabile Reihenfolge
der Kandidaten, damit nicht der Zufall die Schreibart bestimmt.
Vier Dinge sind auf Android anders und im Quelltext vermerkt:
Die Herstellerdaten kommen ohne die zwei Bytes der Company-ID - die steht
im Schlüssel der Tabelle. Sie werden wieder davorgesetzt, damit derselbe
Rahmen ankommt wie unter iOS und dieselben Prüfungen gelten.
Notify muss über einen Deskriptor eingeschaltet werden; das Einschalten auf
unserer Seite allein genügt nicht.
Geräte werden über ihre MAC-Adresse angesprochen statt über eine
systemvergebene Kennung - iOS gibt die Adresse gar nicht heraus.
Die Victron-Schlüssel liegen in app-privater Ablage statt im
Schlüsselbund. Das schützt gegen andere Apps, ist aber nicht
hardwaregestützt. Ohne zusätzliche Bibliothek gibt es unter Android kein
gleichwertiges Gegenstück.
Als Nächstes die Oberfläche.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>