tipos - La notificación de Android Wear evita que el ícono parpadee al actualizar
notificaciones flotantes android studio (2)
Parece que no puedo crear una notificación de Android Wear que se actualice sin parpadear el ícono de la aplicación, mientras que el mismo código funciona bien en un teléfono Android.
La mayoría de las soluciones a las que se hace referencia se refieren a actualizar la misma notificación, usar setAlertOnlyOnce , mantener la ID o cuando sea la misma. Sin embargo, haga lo que haga, cada vez que se actualiza la notificación, parpadea (la mayoría se nota en el ícono de la aplicación).
Como se sugiere aquí Android Wear: temporizador como tarjeta de notificación en el dispositivo de desgaste , puede usar setHintHideIcon (verdadero) para ocultar el ícono de la aplicación, que oculta la parte parpadeante, sin embargo, en el mundo limitado de las notificaciones de Android Wear, el ícono de la aplicación juega un papel importante en el marca de la aplicación.
Si desea un temporizador, puede usar .setUsesChronometer (verdadero) y dejar que el sistema actualice el temporizador que funciona perfectamente. Desafortunadamente, si desea actualizar algo más que el tiempo (como los pasos o los mensajes recibidos cuentan), me parece que no tiene suerte.
A continuación puede encontrar el código que funciona bien cuando se ejecuta como una aplicación de teléfono, pero parpadea cuando se ejecuta como una aplicación portátil.
Línea comentada a continuación para demostrar que la notificación todavía parpadea (cuando se usa con el uso, no el teléfono) que la notificación aún parpadea cuando se publica una notificación sin cambios en el dispositivo portátil. Descomente para actualizar la notificación nuevamente.
mNotification = buildNotification(WearMainActivity.this);
Por lo tanto, mi pregunta es si alguien tiene alguna idea adicional que podamos explorar para evitar que la notificación parpadee o si podemos escribir esto como un error de Android Wear.
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();
}
}
Probado en:
Usable: emulador de desgaste Moto 360 (4.4W2) (5.0.1)
Teléfonos: Galaxy Nexus (4.3) y Nexus 5 (5.0.0)
Se produce: cuando se ejecuta como una aplicación portátil o como una notificación telefónica que se muestra en portátil. Funciona perfecto en el teléfono.
Preguntas de referencia:
¿Cómo puedo evitar parpadear la actualización de notificaciones mientras cambio el botón?
Actualización silenciosa de una notificación continua
¿Cómo actualizar correctamente una publicación de notificación api 11?
Reemplazar:
NotificationManager notifyMgr =
((NotificationManager)getSystemService(NOTIFICATION_SERVICE));
a:
NotificationManagerCompat notifyMgr =
NotificationManagerCompat.from(this);
Más información: https://developer.android.com/training/wearables/notifications/creating.html
También estás haciendo muchas actualizaciones. Cada actualización se envía por Bluetooth a Wear. Debería crear una aplicación de autoinstalación para Android Wear. El retraso del envío es de aproximadamente 3 segundos.
Resolví este problema hace un tiempo cuando estaba trabajando con Android Wear, pero desafortunadamente el código desapareció.
De todos modos, lo que hice fue no CONSTRUIR la notificación cada vez que quería actualizarla, simplemente etiqueté la notificación la primera vez que la creé y luego la recuperé con el
TAG
e hice mis cambios directamente a ese objeto.
Eso detuvo por completo el parpadeo ...