Ich kann anscheinend keine Android Wear-Benachrichtigung erstellen, die aktualisiert wird, ohne das App-Symbol zu blinken, während derselbe Code auf einem Android-Telefon einwandfrei funktioniert.
Die meisten referenzierten Lösungen sprechen von der Aktualisierung derselben Benachrichtigung, use setAlertOnlyOncehalten die ICH WÜRDE oder Wenn das Gleiche. Was auch immer ich tue, jedes Mal, wenn die Benachrichtigung aktualisiert wird, blinkt sie (am meisten durch das App-Symbol gekennzeichnet).
Wie hier vorgeschlagen, Android Wear: Timer wie Benachrichtigungskarte auf dem Wear-Gerät, das Sie verwenden können setHintHideIcon(true) um das App-Symbol auszublenden, das den blinkenden Teil ausblendet, aber in der begrenzten Welt der Android Wear-Benachrichtigungen spielt das App-Symbol eine große Rolle beim Branding der Anwendung.
Wenn Sie einen Timer möchten, können Sie verwenden .setUsesChronometer(true) und lassen Sie das System den Timer aktualisieren, der perfekt funktioniert. Wenn Sie etwas anderes als die Zeit aktualisieren möchten (z. B. die Anzahl der Schritte oder empfangenen Nachrichten), haben Sie meines Erachtens leider kein Glück.
Unten finden Sie Code, der gut funktioniert, wenn er als Telefon-App ausgeführt wird, aber blinkt, wenn er als tragbare App ausgeführt wird.
Kommentierte Zeile unten, um zu zeigen, dass die Benachrichtigung immer noch blinkt (wenn sie auf Wear läuft, nicht auf dem Telefon), dass die Benachrichtigung immer noch blinkt, wenn eine unveränderte Benachrichtigung auf dem Wearable gepostet wird. Kommentieren Sie die Benachrichtigung erneut, um sie zu aktualisieren.
mNotification = buildNotification(WearMainActivity.this);
Daher ist meine Frage, ob jemand eine weitere Idee hat, die wir untersuchen können, um zu verhindern, dass die Benachrichtigung blinkt, oder ob wir dies als Android Wear-Fehler aufschreiben können?
public class WearMainActivity extends Activity {
public final int NOTIFICATION_ID= 1;
public Notification mNotification;
public int count;
public long when;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
count = 0;
when = System.currentTimeMillis();
mNotification = buildNotification(WearMainActivity.this);
postDelayedHandler();
finish();
}
private void postDelayedHandler(){
new Handler().postDelayed(new Runnable() {
public void run() {
count++;
mNotification = buildNotification(WearMainActivity.this);
NotificationManager notifyMgr = ((NotificationManager) getSystemService(NOTIFICATION_SERVICE));
notifyMgr.notify(NOTIFICATION_ID, mNotification);
postDelayedHandler();
}
}, 1000L);
}
private Notification buildNotification(Context context){
return new Notification.Builder(context)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(context.getString(R.string.app_name))
.setContentText("Count: "+count)
.setWhen(when)
// .setOngoing(true) //Don't do this, adds "Mute app" action
.setOnlyAlertOnce(true)
.setPriority(Notification.PRIORITY_MAX)
.extend(new Notification.WearableExtender()
// .setHintHideIcon(true) //Hides the icon, so kinda hides the blink
)
.build();
}
}
Getestet am:
Wearable: Moto 360 (4.4W2) Wear-Emulator (5.0.1)
Telefone: Galaxy Nexus (4.3) und Nexus 5 (5.0.0)
Tritt auf: Beim Ausführen als Wearable-App oder als Telefonbenachrichtigung, die auf dem Wearable angezeigt wird. Funktioniert perfekt am Handy.
Bezugsfragen:
Wie kann ich das Blinken der Benachrichtigungsaktualisierung beim Ändern der Schaltfläche vermeiden?
Stillschweigendes Aktualisieren einer laufenden Benachrichtigung
Wie aktualisiere ich eine Benachrichtigung nach API 11 richtig?
Tut mir leid, aber ich habe es nicht ganz verstanden – passiert das auch bei regelmäßigen Benachrichtigungen in Telefon-Apps (keine Verschleißkomponente), die automatisch auf die Uhr gespiegelt werden? Weil ich dieses Szenario mit Ihrem Code getestet habe und kein Flackern gesehen habe (Moto 360 mit Android 5.0).
– Matiasch
12. Dezember 2014 um 0:33 Uhr
Ah danke, dass du das bemerkt hast. Wenn Sie eine Benachrichtigung auf Ihrem Telefon aktualisieren, ist das System anscheinend intelligent genug, um keine unveränderte Benachrichtigung an das Wearable zu senden. Zur Verdeutlichung habe ich ein Video von dem Verhalten gemacht: youtube.com/watch?v=8QBuUjb_vTA
– LearnDriver
12. Dezember 2014 um 13:50 Uhr
Update: Dies scheint auf einem Gear Live mit 5.0 nicht zu passieren. Also zwei Möglichkeiten: a) Es flimmert dort nicht aufgrund der besseren Hardware b) Es könnte in 5.0 behoben sein. Jetzt warte ich darauf, dass meine Uhr das Update erhält, um entweder a oder b zu bestätigen … (Oh, ich wünschte, ich könnte den OTA einfach von der Seite laden 😉 )
– LearnDriver
12. Dezember 2014 um 23:27 Uhr
Ich würde auf (b) tippen. Wir werden sehen 🙂
– Matiasch
12. Dezember 2014 um 23:32 Uhr
Also habe ich gerade das 5.0-Update bekommen (es hat lange genug gedauert!) und die Antwort ist: ja und nein! Wenn Sie eine erweiterte Benachrichtigung von einer App erhalten, die auf dem Telefon gestartet wurde, funktioniert dies nahtlos, ohne zu blinken. Wenn Sie jedoch eine App von der Uhr aus starten, blinkt sie immer noch. Jetzt haben wir also zwei verschiedene Verhaltensweisen, je nachdem, woher die Benachrichtigung stammt …
– LearnDriver
19. Dezember 2014 um 0:05 Uhr