ScreenOnAuto

Spiegelung aus einer anderen App steuern

Seit v1.8.4 nimmt ScreenOnAuto drei Intents entgegen, die die Spiegelung starten, stoppen oder umschalten. Alles, was einen Intent senden kann – eine Automatisierungs-App, eine Verknüpfung auf dem Startbildschirm, ein Skript über ADB, eine eigene App – kann die Spiegelung damit steuern, sodass sie zusammen mit dem Rest deiner Fahrroutine anläuft statt von Hand.

Die drei Aktionen

Aktion Wirkung
idv.lzn.screenonauto.action.START_MIRROR Startet die Spiegelung. Tut nichts, wenn sie bereits läuft.
idv.lzn.screenonauto.action.STOP_MIRROR Stoppt die Spiegelung. Tut nichts, wenn sie nicht läuft.
idv.lzn.screenonauto.action.TOGGLE_MIRROR Stoppt sie, wenn sie läuft, startet sie andernfalls.

Eine Aktion zu wiederholen ist immer unbedenklich. Ein Start an eine bereits laufende Spiegelung wird ignoriert, statt die Sitzung abzubauen und neu aufzusetzen – etwas, das bei jeder Bluetooth-Verbindung auslöst, unterbricht also keine Spiegelung, die schon steht.

In einer Automatisierungs-App

Die meisten Automatisierungs-Apps bieten dieselben Bausteine unter eigenen Bezeichnungen an, üblicherweise eine Aktion „Intent senden“ mit Feldern in etwa so:

Feld Wert
Action eine der drei Aktionen oben
Package idv.lzn.screenonauto
Class idv.lzn.screenonauto.MirrorControlActivity (oder …MirrorControlReceiver für einen Broadcast)
Target Activity (oder Broadcast)

Nimm Activity, sofern nichts dagegenspricht – die beiden folgenden Abschnitte erklären den Unterschied und warum man sich auf einen Broadcast zum Starten nicht verlassen kann. So oder so ist das Feld Class nicht optional: Bleibt es leer, kommt der Broadcast gar nicht erst an.

Wenn etwas nicht funktioniert, probier zuerst den passenden ADB-Befehl weiter unten. Er zeigt, ob das Problem am Intent liegt oder an der App, die ihn sendet.

Eine Activity starten (empfohlen)

Sende die Aktion als Activity an idv.lzn.screenonauto/.MirrorControlActivity:

adb shell am start -a idv.lzn.screenonauto.action.START_MIRROR \
  -n idv.lzn.screenonauto/.MirrorControlActivity

Von ScreenOnAuto ist dabei nichts zu sehen, und in „Zuletzt verwendet“ bleibt nichts zurück. Du kannst den Start auch senden, bevor du am Auto bist – die Spiegelung wartet und greift von selbst, sobald der Fahrzeugbildschirm da ist.

ℹ️ Hinweis Android fragt beim Start der Spiegelung weiterhin nach der Bildschirmaufnahme-Berechtigung. Damit es wirklich ohne Handgriff läuft, erteile sie einmal vorab per ADB – siehe Spiegelungsberechtigung per ADB erteilen.

Einen Broadcast senden

Dieselben drei Aktionen funktionieren auch als Broadcast, gesendet an idv.lzn.screenonauto/.MirrorControlReceiver:

adb shell am broadcast -a idv.lzn.screenonauto.action.STOP_MIRROR \
  -n idv.lzn.screenonauto/.MirrorControlReceiver

Ein so gesendeter Stopp ist völlig unsichtbar – kein Fenster, kein Flackern.

Die Komponente zu benennen ist nicht optional. Das heutige Android stellt einer App keinen Broadcast zu, wenn der Absender nicht sagt, für welche Komponente er gedacht ist. Ein Broadcast, der nur die Aktion trägt, wird verworfen, und es passiert schlicht nichts – ohne Fehlermeldung irgendwo.

⚠️ Warnung Ein als Broadcast gesendeter Start ist unzuverlässig, und wenn er scheitert, scheitert er lautlos. Zwei Dinge müssen vorher erlaubt sein, und beide sind auf vielen Telefonen standardmäßig aus:

Wenn du nur den Start brauchst, nimm die Activity oben – sie braucht nichts davon.

Fehlerbehebung

Zuletzt aktualisiert: