Non riesco a essere in grado di creare una notifica Android Wear che si aggiorna senza far lampeggiare l'icona dell'app mentre lo stesso codice funziona correttamente su un telefono Android.Notifica di usura Android impedisce l'icona lampeggiante durante l'aggiornamento
soluzioni più referenziati parlano di aggiornare la stessa notifica, usano setAlertOnlyOnce, mantenendo il ID o quando lo stesso. Tuttavia, qualunque cosa faccia, ogni volta che la notifica viene aggiornata lampeggia (la maggior parte è segnalata dall'icona dell'app).
come suggerito qui Android Wear: Timer like notification card on wear device è possibile utilizzare setHintHideIcon (vero) per nascondere l'icona dell'applicazione, che nasconde la parte lampeggiante, tuttavia nel mondo limitato di Android Wear notifiche l'icona dell'applicazione gioca un ruolo importante nel marchio del applicazione.
Se si desidera un timer, è possibile utilizzare . SetUsesChronometer (true) e lasciare che il sistema aggiorni il timer che funzioni perfettamente. Sfortunatamente se vuoi aggiornare qualcosa di diverso dal tempo (come i passi o i messaggi ricevuti), mi sembra che tu sia sfortunato.
Di seguito è possibile trovare il codice che funziona correttamente quando viene eseguito come app per telefono, ma lampeggia quando viene eseguito come app indossabile.
Riga commentata di seguito per dimostrare che la notifica lampeggia ancora (quando si utilizza l'usura, non il telefono) che la notifica lampeggia ancora quando si invia una notifica invariata sul dispositivo indossabile. Rimuovi il commento per aggiornare nuovamente la notifica.
mNotification = buildNotification(WearMainActivity.this);
Quindi la mia domanda è se qualcuno ha qualche idea di un'ulteriore possiamo esplorare per mantenere la notifica da lampeggiante o se siamo in grado di scrivere questo in giù come un bug di 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();
}
}
provata su:
Wearable: Moto 360 (4.4W2) Indossare Emulator (5.0.1)
Phones: Galaxy Nexus (4.3) e Nexus 5 (5.0.0)
Si verifica: Quando si esegue come app Wearable o come notifica telefonica visualizzata su Wearable. Funziona perfettamente al telefono.
domande referenziati:
How can I avoid blinking notification update while changing button
Updating an ongoing notification quietly
How to properly update a notification post api 11?
Mi dispiace ma non ho capito bene: questo succede anche con le notifiche regolari nelle app del telefono (nessun componente di usura) che vengono automaticamente copiate sull'orologio? Perché ho provato questo scenario con il tuo codice e non ho visto sfarfallio (Moto 360 con Android 5.0). – matiash
Ah grazie per averlo notato. Apparentemente quando aggiorni una notifica sul tuo telefono il sistema è abbastanza intelligente da non inviare una notifica invariata a Wearable. Per chiarire che ho realizzato un video del comportamento: https://www.youtube.com/watch?v=8QBuUjb_vTA – LearnDriver
Aggiornamento: Questo non sembra accadere su un Gear Live in esecuzione 5.0. Quindi due opzioni: a) Non c'è sfarfallio a causa del suo hardware migliore b) Potrebbe essere risolto in 5.0. Ora sto aspettando che il mio orologio riceva l'aggiornamento per confermare o a o b ... (Oh vorrei poter caricare l'OTA;)) – LearnDriver