AlwaysOn Display, Ambient Display, Active Display...verschiedene Hersteller, verschiedene Bezeichnungen und wohl auch verschiedene Anwendungsfälle.

Ich hatte jahrelang ein Moto X, dessen "Active Display" für mich das ausschlaggebende Kaufsargument war:
Neue Nachricht geht ein => App-Icon wird auf OLED-Display angezeigt, bis ich die Nachricht lese oder die Benachrichtigung (direkt vom Active Display aus) verwerfe.

So sieht man zu jeder Zeit, dass man ungelesene Nachrichten hat.

Sofern der Hersteller in der Programmierung nicht gepfuscht hat, schlägt dies dank OLED-Display nicht nennenswert auf den Akku und zumindest bei Motorola kann ich auch nach 6 Jahren kein Display BurnIn feststellen (der Nachteil von OLED-Displays im Gegensatz zu LCD-Displays, wenn zu lange dasselbe Bild auf dem Display angezeigt wird).

Dies ist sinnvoller, als nur eine kleine Blinke-LED, die über Anzahl und Art der Nachrichten nichts aussagt und um einiges mehr sinnvoller, als all 10 Minuten sein Telefon zu entsperren, um nachzuschauen, ob neue Nachrichten vorhanden sind.

In meinem jugendlichen Leichtsinn ging ich davon aus, dass nun jeder Hersteller, der mit einem AlwaysOn Display / Ambient Display / Active Display wirbt, damit eben jene Funktion verbindet...aber falsch gedacht!

Nun lege ich mir extra ein (relativ) teures Google Pixel 3a zu, weil dieses im Gegensatz zu vielen anderen ein AlwaysOn Display plus Vanilla-Android bietet und muss feststellen, dass die Programmierer eine sehr wirre Vorstellung davon haben, was End-User sich wünschen (bzw. wünschen sich die Ottonormal-End-User einfach nur mehr CPU und mehr Pixel, statt praktischer Funktionen...alles andere ist ja wurscht).

Die "Sperrbildschirmanzeige" von Vanilla-Android bietet nämlich nur folgende Einstellungsmöglichkeiten:

  • Immer aktiviert. Es wird dauerhaft die Uhrzeit auf dem Display angezeigt. Ob es neue Nachrichten gibt oder nicht. Falls es neue Nachrichten gibt, werden diese (immerhin!) mit einem mickrigen Icon unter der Uhrzeit angezeigt.
    Anzeige komplett ausschalten, wenn keine Nachrichten vorhanden oder Vorgabe irgendwelcher Ruhezeiten (z.B. nachts)? Fehlanzeige. Immerhin macht es seinem Namen alle Ehre und ist tatsächlich "Always On".
  • Neue Benachrichtigungen. Hört sich gut an und sieht für ein paar Sekunden gut aus: Bildschirm ist standardmäßig aus. Trifft eine neue Benachrichtung ein, aktiviert sich das AlwaysOn Display und zeigt neben der Uhrzeit die Nachricht an. Sogar mit einem Textausschnitt.
    Dummerweise geht das Display dann nach einigen Sekunden wieder aus. Irgendwelche Einstellungsmöglichkeiten, wie lange das Display in so einem Benachrichtigungsfall eingeschaltet bleiben soll? Fehlanzeige!
    Man bekommt die neue Nachricht also nur mit, wenn man sowieso gerade auf das Display starrt (manche haben wahrscheinlich den ganzen Tag nichts Besseres zu tun).

Alles in allem sind diese beiden Funktionen eigentlich zu nichts zu gebrauchen, außer man findet es schick, dauerhaft die Uhrzeit auf dem Display angezeigt zu haben.
Neue Nachrichten-Icons unter der Uhrzeit fallen aber dann auch nicht wirklich auf.

Dank Tasker, einem Automatisierungs-Programm, welches ich schon seit Jahren installiert, aber ehrlich gesagt noch nie verwendet hatte, weil es mir schlichtweg zu komplex ist, habe ich es allerdings geschafft, Googles Interpretation des Always On Displays (im Folgenden nur noch AOD genannt) etwas aufzubohren und nützlicher zu gestalten.

Wir benötigen

Getestet auf einem Pixel-Gerät mit Android 10 und 11.
Das Handy muss nicht zwingend gerootet sein, die Entwickler-Optionen müssen aber freigeschaltet sein, da wir zwischendurch einmal kurz die adb-Tools verwenden müssen.

Tasker
Kostet derzeit 3,60 €. Es gibt manchmal Aktionen, bei denen es günsgtiger oder gar gratis ist.

Tasker muss die WRITE_SECURE_SETTINGS-Berechtigung via ADB erteilt werden. Mehr dazu im Folgenden.

AutoNotification oder Notification Listener
Beides sind Tasker-Plugins (und für hiesigen Anwendungsfall gratis), mit denen man die Anzahl neuer Nachrichten auslesen kann. Denn ich will das AOD nur wieder de-aktivieren, falls es keine Benachrichtungen in der Benachrichtungs-Leiste gibt.

Was genau machen wir?

Per Tasker wird die die Einstellung Display > Erweitert > Sperrbildschirmanzeige > Immer aktiviert aktiviert, sobald Benachrichtungen bestimmter Programme vorhanden sind und wieder de-aktiviert, sobald die Benachrichtigungen aus der Benachrichtigungsleiste verschwunden sind.

So ist der AOD-Bildschirm dauerhaft an, wenn neue Nachrichten da sind und dauerhaft aus, wenn keine neuen Nachrichten da sind.
Wie kann etwas anderes auch Sinn machen...!?

Leider ist die ganze Sache trotzdem nicht ganz so toll, wie bei Mototolas Active Display, wo das Programm-Icon unübersehbar groß angezeigt wird und man durch einen Wisch in die richtige Richtung die Benachrichtigung gleich auf dem AOD-Display öffnen oder verwerfen kann.
Aber immerhin lässt sich somit (mit zusammengebissenen Zähnen) leben.

WRITE_SECURE_SETTINGS-Berechtigung

Damit Tasker die Systemeinstellung für das AOD-Display ändern kann, muss eine spezielle Berechtigung erteilt werden, was nur über ADB geht.

Dazu müssen erst die Entwickler-Optionen und USB-Debugging aktiviert werden. Dies habe ich in diesem Artikel schon einmal beschrieben.

Danach das Handy per USB mit einem Computer verbinden, auf dem die Google-adb-Tools installiert sind und in einem Terminal-Fenster den Befehl

/pfad/zu/adb shell pm grant net.dinglisch.android.taskerm android.permission.WRITE_SECURE_SETTINGS
 ausführen.
Es ist keine spezielle Rückmeldung von diesem Befehl zu erwarten.

Automatisierung zusammenbasteln

Mir ist bewusst, das man Tasker-Profile auch einfach exportieren und zum Download zur Verfügung stellen kann.
Da es mir aber einiges an Zeit gekostet hat, mir die Infos zusammenzuklauben, wie ich das hier alles mit Tasker erledige, zeige ich viel lieber ausführlich, wie man die Automatisierung mit Hilfe von Tasker selbst zusammenstellt.

Tasks

Zuerst erstellen wir im Reiter "Tasks" zwei Tasks AOD an und AOD aus, die später je nachdem das AOD ein oder ausschalten.

Dafür in den Reiter "Tasks" wechseln und auf das + rechts unten klicken.

 

Den ersten Task nennen wir "AOD an".
Hier prüfen wir, ob das AOD schon eingeschaltet ist. Falls nicht, schalten wir es ein. Den "Trigger", diese Aktion bei einer neuen Benachrichtigung auszulösen, machen wir an einer anderen Stelle, bei den "Profilen".

Bild 1
Bild 2
Nachdem wir auf das + gedrückt und einen neuen Task erstellt haben, landen wir im Fenster "Aufgabe editieren". Mit dem + unten rechts fügen wir die neue Aktion "Custom Settings" ein. Am besten diesen Begriff unten in das Filter-Feld eingeben, dann hat man die Aktion am schnellsten gefunden (siehe Bild 1).

Typ ist secure und name ist doze_always_on
Dies ist der interne Parametername, den Android für diese Einstellung verwendet (Bild 2).

Bei Read Setting to geben wir %aod_an ein. Dies ist unsere interne Variable, die nun den Wert 1 oder 0 hat, je nachdem, ob Einstellung > Display > Erweitert > Sperrbildschirmanzeige > Immer aktiviert ein- oder ausgeschaltet ist.

 
Neue Aktion: If. Hier geben wir die Bedingung ein %aod_an gl 0

Wir wollen alles Weitere nur ausführen, falls das AOD noch nicht eingeschaltet ist.

 
Neue Aktion: Nochmals Custom Setting
Hier wieder Typ secure, Name doze_always_on – allerdings wollen wir den Wert dieses Mal nicht auslesen, sondern setzen. Dafür bei "Wert" eine 1 eintragen. Fertig und zurück zu "Aufgabe editieren".

Diese Aktion sollte nun eingerückt dargestellt werden (wird nur ausgeführt, wenn der If-Block davor wahr ist).

 
Neue Aktion: End if als Zeichen, dass der If-Block hiernach beendet ist.

Danach sollte alles in etwa so wie rechts abgebildet aussehen.

 

Zurück zur Tasks-Liste und nun einen weiteren Task erstellen.

Den nächsten Task nennen wir "AOD aus".
Hier kommen nun die Plugins AutoNotification oder Notification Listener ins Spiel, da wir diese Aufgabe nur ausführen wollen, wenn von bestimmten Programmen keine Benachrichtigungen mehr aktiv sind. Ob eine eBay-Mitteilung oder ein GooglePlay-Update angezeigt wird...egal. Hauptsache keine E-Mail oder WhatsApp-Nachricht.

Ich verwende "AutoNotification":
Also neue Aktion, unter "Plugin" "AutoNotofication" wählen und dann "Query".
Unter "Konfiguration" kann man auf den Bleistift klicken. "Persistency Type: Non-Persistent only", "Notification Apps:" diejenigen auswählen, die relevant sind. In meinem Fall wären das E-Mail und WhatsApp.

Bei allem anderen braucht der AOD bei mir nicht eingeschaltet bleiben.

 
Zurück zur Aufgabenliste, neue Aufgabe "Custom Setting". Hier lesen wir wieder (wie schon bei "AOD an") aus, ob der AOD schon eingeschaltet ist oder nicht und schreiben den Status in die Variable %aod_an.
 
Neue Aufgabe "If". Hier haben wir nun zwei Bedingungen, damit der AOD ausgeschaltet wird: Zum ersten muss er gerade eingeschaltet sein, zum zweiten darf es keine Benachrichtigungen vom E-Mail-Programm oder WhatsApp mehr geben. Bedingung: %aod_an gl 1 und %annumber(#) gl 0 wobei %annumber(#) eine Variable unserer vorherigen "AutoNotofication"-Abfrage ist.
Bei der Verwendung des Plugins "Notification Listener" wäre stattdessen %nlqkey(#) zu verwenden.
 
Neue Aufgabe "Custom Setting".

Hier schalten wir den AOD nun aus.

 

Nun noch ein kleiner Workaround:
Wenn das AOD gerade aktiv ist und man es im Hintergrund mit Hilfe von Tasker deaktiviert, bleibt es trotzdem noch so lange aktiviert, bis das Display mal ein- und wieder ausgeschaltet wird. Also schalten wir den Bildschirm noch ganz kurz ein, damit er danach wieder ganz aus geht.

Update April 2020: Den Workaround habe ich inzwischen etwas verfeinert. Beim alten Weg Bildschirm einschalten und wieder ausschalten, nervte es, dass der Bildschirm immer an geht. Die Zeit bis zum Ausschalten ließ sich nicht um weiter als ein paar Sekunden reduzieren.
Der neue Weg geht über ein Overly in schwarzer Farbe, welches auf den Bildschirm gelegt wird (und welches dann bei Anzeige automatisch den Bildschirm aktiviert) und ein shell/keyevent, welcher den Bildschirm verlässlicher ausschaltet, als die Tasker-Aktion "Bildschirm ausschalten". Letzteres benötigt aber scheinbar Root! Auf einem ungerooteten Pixel hatte dies nicht funktioniert.

Unter dem Reiter "Szenen" fügen wir mit dem + Button eine neue Szene hinzu (ich habe sie "Leer" genannt).
 
Eigenschaften der Szene aufrufen...
 
Property-Type: Dialog
und unter "Geometry" einen Wert wählen, der der nativen Bildschirmauflösung entspricht. Wenn man die Eigenschaften verlässt, sollte der Bildschirm schwarz angezeigt werden. Hier ist etwas Experimentieren angesagt!
 

Zurück zu den unserem Task "AOD aus"...

Neue "If"-Aktion. Wir wollen Folgendes nur tun, wenn der Bildschirm gerade aus (bzw. im AOD-Modus) ist.
If %SCREEN gl off => Nur, wenn der Bildschirm aus ist. Ist das AOD gerade aktiv, ist das für Android scheinbar trotzdem aus.
 
Neue Aktion "Szene anzeigen" und die vorhin erstellte Szene "Leer" auswählen.
Anzeigen als ''Activity, No Bar, No Status, No Nav"
Animation: Keine
Ãœber Keyguard anzeigen und sofort mit Task fortfahren.
 
Wird diese Aktion ausgeführt, wird hierbei automatisch der Bildschirm aktiviert. Als nächstens wollen wir ihn gleich wieder ausschalten.
Dafür gibt es zwar eine eigene Aktion, aber irgendwie funktioniert das bei mir damit nicht so richtig.

Geholfen hatte bei mir stattdessen die Aktion "Shell ausführen" mit dem Befehl
input keyevent 1015 input keyevent 6
Kein Timeout, aber Root verwenden! (ist das Gerät nicht gerootet, scheint dies nicht zu funktionieren)

Ich muss allerdings dazusagen, dass die beiden Keyevents 1015 und 6 bei mir auf dem Pixel 3a XL funktionieren...je nach Handy können die Keyevents abweichen!

Zu guter Letzt zerstören wir die Szene, die wir erstellt hatten, wieder, denn wir wollen bei der nächsten Verwendung des Handys nicht von einem unüberwindbaren schwarzen Bildschirm begrüßt werden (Aktion #8 im Bild rechts).

Die gesamte Aufgabe sollte nun wie rechts abgebildet aussehen.

Achtung: Ist das Gerät nicht gerootet, würde ich die Schritte 5-9 weg lassen und stattdessen auf meine alte Lösung zurückgreifen (siehe im Folgenden).

 

Gerät nicht gerootet?
Alten Weg anzeigen, den Bildschirm auszuschalten.

Profile

Die Profile werden bei bestimmten Bedingungen ausgelöst (z.B. neue Benachrichtigung durch ein Programm) und lösen dann unsere Tasks/Aufgaben aus.

In den Reiter "Profile" wechseln und auf das + rechts unten tippen.

Das erste neue Profil ist "AOD an", wird durch ein Ereignis ausgelöst; hier suchen wir nach "Benachrichtigung".
Bei "Besitz Applikation" wählen wir die Programme aus, bei denen das AOD später aktiviert werden soll, sobald es eine neue Benachrichtigung gibt (in meinem Fall E-Mail und WhatsApp).
 
Zurück in der Profile-Liste wählen wir dann unseren vorhin erstellen Task "AOD on"
 

Nun noch das Profil AOD aus.
Wir suchen nach dem Ereignis "Notification removed". "Besitz Applikation" ist hier wurscht Рes kann ruhig jedes Mal ausgel̦st werden, sobald irgendeine Benachrichtigung aus der Benachrichtigungsleiste verschwunden ist.
Zurück in der Profil-Liste wählen wir dann unseren vorhin erstellen Task "AOD aus".

Diese beiden Profile müssen (mit dem kleinen Schalter rechts neben dem Namen) eingeschaltet sein, damit sie ausgelöst werden.

Berechtigungsbliblablubb

Unter Einstellungen > Apps > Alle anzeigen > Tasker > Erweitert > Akku sollte man die Akku-Optimierung für Tasker de-aktivieren, so dass Tasker nicht irgendwann vom System schlafen gelegt wird und dann nicht mehr funktioniert.

Gut versteckt unter Einstellungen > Apps & Benachrichtigungen > Erweitert > Spezieller App-Zugriff > Benachrichtigungszugriff muss "AutoNotification" (respektive "Notification Listener") der Zugriff gewährt werden, sonst funktioniert die ganze Sache nämlich überhaupt nicht und man wundert sich, wieso.
 

Alternativen

Die App Pixel Pulse soll angeblich etwas ähnliches machen, hat bei mir auf einem Pixel 3a XL mit Android 10 allerdings nicht wie erwartet funktioniert.
Kurz gesagt war bei mir alles mit App wie ohne App.

Die App AC Display macht an sich genau das, was "Active Display" auf einem Motorola Handy macht.
Konnte ich auf meinem Pixel 3a XL mit Android 10 allerdings nicht wirklich zum Funktionieren bringen.

Es liegt wohl nicht an mir oder Android 10, sondern diese App scheint auch generell nur für ein paar Sekunden die Benachrichtigung anzuzeigen.

Ãœbrigens...

Um noch etwas mehr Moto-Feeling zu bekommen, empfehle ich außerdem die App WaveUp.
Sie macht genau das, was ein Moto X oder Moto Z von Haus aus können: Winkt man kurz über den Nährungssensor des Telefons, wird der Bildschirm eingeschaltet (statt die Einschalttaste drücken oder einen Doppeltipp auf den Bildschirm machen zu müssen).