Notifications nur kurz einblenden

T

tobbbbi

Neues Mitglied
3
Hi zusammen!

Ich möchte die Notifications "missbrauchen" um Ergebnisse bzw. Statusinfos meiner App in der Infoleiste oben anzuzeigen.
Dazu ist es ja nicht nötig, dass der anzeigte Status im Expandable hängen bleibt und daraus gelöscht werden muss bzw. sich automatisiert entfernt erst wenn man draufklickt.
Man kann zwar über die cancel()-Methode explizit eine Notification löschen, nur muss das in meinem Fall ja verzögert geschehen, ansonsten kommt auch eine Exception.
Die Verzögerung habe ich testweise über Thread.sleep(1000) implementiert, was auch ganz gut klappt.
Das Problem: Bei oben übergebenem Zeitwert bleibt das Programm (logischerweise) kurz hängen, zeigt aber alles richtig an, spielt auch den Sound komplett ab.
Bei zB. 100 ms merkt man den freeze nicht/kaum mehr, dafür wird aber der Sound auch nicht mehr abgespielt. Auch logisch, die Notification wird wohl zu schnell wieder entfernt.

Nun meine Fragen:

1. Wie kann man die Notification verzögert nebenläufig ausführen? Nur über Backgroundworker?

2. Kann man die Notification, genauer den Ticker, benutzerdefiniert lange anzeigen lassen? Defaultmäßig ist das schon etwas kurz.

3. Lustig ist ja die Sache mit der number()-Methode, welche dafür sorgt, dass eine Nummernanzeige über das Notificationicon geklatscht wird. Ist die Nummer zu lange (z.B. notification.number(12324325), werden einige Stellen untereinander gesetzt und der Rest einfach abgeschnitten. Irgendwie ist das schon fast ein Bug. :flapper: Jetzt würde mich interessieren, ob man diese kleine Grafik, die auf dem Icon landet auch modifizieren. Ist ja ein farbiger Kreis mit den Zahlen darauf.

Vielen Dank schonmal für eure Hilfe!
 
1. Naja, nebenläufig halt. Einen Thread starten, den warten lassen, dann Notification canceln.
2. Klar, indem du den Wert vom User eingeben lässt in den Settings.
3. Kenn ich nicht.
 
the_alien schrieb:
1. Naja, nebenläufig halt. Einen Thread starten, den warten lassen, dann Notification canceln.
2. Klar, indem du den Wert vom User eingeben lässt in den Settings.
3. Kenn ich nicht.

1. Okay, also praktisch in nen eigenen Thread setzen?

2. Kannst du das bitte nochmal etwas konkreter erläutern. Welche Settings?

3. Einfach mal ausprobieren, ist ganz einfach und sieht lustig aus. Wenn du zB. mehrere SMS oder Anrufe hast, wird die number()-Methode benötigt.
 
1. Ja, in einen eigenen Thread. Dann blockiert die GUI nicht.
2. Es gibt ja die SharedPreferences und man kann sich Settings sehr einfach -inkl der typischen Settings Screens- über XML definieren. Dann bietest du dem Benutzer dort die Möglichkeit die Zeit einzustellen, wie lange gewartet wird. Das kannst du dann über die SharedPreferences auslesen.
 
the_alien schrieb:
2. Es gibt ja die SharedPreferences und man kann sich Settings sehr einfach -inkl der typischen Settings Screens- über XML definieren. Dann bietest du dem Benutzer dort die Möglichkeit die Zeit einzustellen, wie lange gewartet wird. Das kannst du dann über die SharedPreferences auslesen.

Da liegt wohl ein Missverständnis vor.
Wenn eine Notification neu erscheint, dann wird nur sie angezeigt, und der Rest (Uhrzeit, Battery etc.) verschwindet, aber nur für eine kurze Zeit. Diese Zeitspanne will er erhöhen.
 
Ja genau, du hast es korrekt erfasst!
Kann man also diese Zeit anpassen und wnen ja, wie?

Außerdem habe ich mich auch mit Toasts beschäftigt, welche ja auch gut geeignet sind um nen Status nebenläufig kurz anzuzeigen. Allerdings kann man nur zwei Anzeigedauern einstellen...short und long..
Kennt ihr eine Möglichkeit diese selbst anzupassen?

Fr4gg0r schrieb:
Da liegt wohl ein Missverständnis vor.
Wenn eine Notification neu erscheint, dann wird nur sie angezeigt, und der Rest (Uhrzeit, Battery etc.) verschwindet, aber nur für eine kurze Zeit. Diese Zeitspanne will er erhöhen.
 
tobbbbi schrieb:
Ja genau, du hast es korrekt erfasst!
Kann man also diese Zeit anpassen und wnen ja, wie?

Außerdem habe ich mich auch mit Toasts beschäftigt, welche ja auch gut geeignet sind um nen Status nebenläufig kurz anzuzeigen. Allerdings kann man nur zwei Anzeigedauern einstellen...short und long..
Kennt ihr eine Möglichkeit diese selbst anzupassen?

zu deiner 2. Frage. Du kannst dir einen eigenen Dialog basteln den du dann mit einem CountDownTimer nur für eine bestimmte Zeit sichtbar machst. So hab ich das zumindest gemacht.
 
  • Danke
Reaktionen: tobbbbi

Ähnliche Themen

R
  • Gesperrt
  • roland-senior
Antworten
2
Aufrufe
786
Fulano
Fulano
L
Antworten
3
Aufrufe
1.302
deek
D
S
  • Schneemann3
Antworten
0
Aufrufe
800
Schneemann3
S
Zurück
Oben Unten