Avertissement D'usure Android empêcher l'icône clignotant lors de la mise à jour

Je ne peux pas sembler être en mesure de créer une notification Android Wear qui met à jour sans clignoter l'icône de l'application alors que le même code fonctionne très bien sur un téléphone Android.

la plupart des solutions référencées parlent de mettre à jour la même notification, utilisez setAlertOnlyOnce , en gardant le ID ou quand le même. Cependant, quoi que je fasse, chaque fois que la notification est mise à jour, elle clignote (la plupart des Icône De L'Application).

comme suggéré ici Android Wear: Timer like notification card on wear device vous pouvez utiliser setHintHideIcon(vrai) pour cacher l'icône de l'application, qui cache la partie clignotante, mais dans le monde limité des notifications Android Wear l'icône de l'application joue un rôle important dans la marque de l'application.

si vous voulez une minuterie, vous pouvez utiliser .setUsesChronometer (true) et laissez le système mettre à jour le minuteur qui fonctionne parfaitement. Malheureusement, si vous voulez mettre à jour quelque chose d'autre que le temps (comme les pas ou les messages reçus comptent), il me semble que vous n'avez pas de chance.

ci-dessous, vous pouvez trouver du code qui fonctionne très bien lorsqu'il est lancé sous forme d'application téléphonique, mais qui clignote lorsqu'il est lancé sous forme d'application portable.

a commenté la ligne ci-dessous pour démontrer que la notification clignote toujours (lors de la course sur l'usure, pas le téléphone) que la notification clignote toujours lorsque affichage d'une notification inchangée sur le portable. Retirez commentaires de mise à jour de la notification de nouveau.

mNotification = buildNotification(WearMainActivity.this);

par conséquent, ma question Est si quelqu'un a d'autres idées que nous pouvons explorer pour garder la notification de clignoter ou si nous pouvons écrire ceci comme un bug de Usure Android?

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();
    }
}

testé sur:

Portable: Moto 360 (4.4W2) émulateur D'usure (5.0.1)

Téléphones: Nexus Galaxy (4.3) et Nexus 5 (5.0.0)

se produit: lors de l'exécution comme une application portable ou comme une notification téléphonique affichée sur portable. Fonctionne parfaitement sur le téléphone.

questions référencées:

Comment puis-je éviter la mise à jour de notification clignotante tout en changeant le bouton

mise à jour discrète d'une notification en cours

comment mettre à jour correctement un message de notification api 11?

53
demandé sur Community 2014-12-11 22:26:23

2 réponses

remplacer:

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

à:

NotificationManagerCompat notifyMgr =
    NotificationManagerCompat.from(this);

plus d'informations: https://developer.android.com/training/wearables/notifications/creating.html

vous faites aussi beaucoup de mises à jour. Chaque mise à jour est envoyé via bluetooth À Wear. Vous devez créer auto-installer l'application pour Android Wear. Le délai d'envoi est d'environ 3 secondes.

1
répondu barwnikk 2015-07-14 13:20:56

j'ai résolu ce problème il y a quelque temps quand je travaillais avec Android Wear mais le code a malheureusement disparu. Quoi qu'il en soit, ce que j'ai fait était de ne pas construire la notification chaque fois que je voulais la mettre à jour, j'ai simplement étiqueté la notification la première fois que je l'ai créé et puis je l'ai récupéré avec le TAG et fait mes modifications directement à cet objet. Qui a complètement arrêté le scintillement...

1
répondu Joakim 2015-09-25 07:21:05