Android Wear-Benachrichtigung verhindert blinkendes Symbol beim Aktualisieren

Lesezeit: 4 Minuten

Benutzer-Avatar
LearnDriver

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


Benutzer-Avatar
barwnikk

Ersetzen:

NotificationManager notifyMgr = 
    ((NotificationManager)getSystemService(NOTIFICATION_SERVICE));

zu:

NotificationManagerCompat notifyMgr =
    NotificationManagerCompat.from(this);

Mehr Informationen: https://developer.android.com/training/wearables/notifications/creating.html

Sie machen auch viele Updates. Jedes Update wird über Bluetooth an Wear gesendet. Sie sollten eine selbstinstallierende App für Android Wear erstellen. Die Sendeverzögerung beträgt ca. 3 Sekunden.

Ich habe dieses Problem vor einiger Zeit gelöst, als ich mit Android Wear gearbeitet habe, aber der Code ist leider verschwunden. Wie auch immer, was ich getan habe, war, die Benachrichtigung nicht jedes Mal zu erstellen, wenn ich sie aktualisieren wollte, ich habe die Benachrichtigung einfach beim ersten Mal, als ich sie erstellt habe, markiert und sie dann mit abgerufen TAG und meine Änderungen direkt an diesem Objekt vorgenommen. Damit ist das Flackern komplett weg…

1143940cookie-checkAndroid Wear-Benachrichtigung verhindert blinkendes Symbol beim Aktualisieren

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy