Кажется, я не могу создать уведомление Android Wear, которое обновляется без мигания значка приложения, тогда как тот же код отлично работает на телефоне Android.
В большинстве справочных решений говорится об обновлении одного и того же уведомления, используйте setAlertOnlyOnce, сохраняя идентификатор или когда тот же. Однако, независимо от того, что я делаю, каждый раз, когда уведомление обновляется, оно мигает (большинство отмечено значком приложения).
Как предложено здесь Android Wear: Timer, как плата уведомлений на устройстве для изнашивания, вы можете использовать setHintHideIcon (true), чтобы скрыть значок приложения, который скрывает мигающую часть, однако в ограниченном мире Android Wear Notifications значок приложения играет большую роль в брендинге приложения.
Если вы хотите использовать таймер, вы можете использовать .setUsesChronometer(true) и позволить системе обновлять таймер, который отлично работает. К сожалению, если вы хотите обновить что-то еще, кроме времени (например, шаги или полученные сообщения), мне кажется, вам не повезло.
Ниже вы можете найти код, который отлично работает при запуске в качестве приложения для телефона, но мигает при запуске в качестве загружаемого приложения.
Прокомментируйте строку ниже, чтобы продемонстрировать, что уведомление все еще мигает (при беге, а не в телефоне), что уведомление все еще мигает при публикации неизмененного уведомления о пригодности для носки. Раскомментируйте обновление уведомления еще раз.
mNotification = buildNotification(WearMainActivity.this);
Поэтому мой вопрос заключается в том, есть ли у кого-нибудь еще одна идея, которую мы можем исследовать, чтобы не допустить уведомления от уведомления или если мы можем записать это как ошибку 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();
}
}
Протестировано:
Wearable: Moto 360 (4.4W2) Эмулятор износа (5.0.1)
Телефоны: Galaxy Nexus (4.3) и Nexus 5 (5.0.0)
Происходит: При работе в качестве приложения Wearable или в виде уведомления о телефоне, отображаемом на Wearable. Прекрасно работает на телефоне.
Связанные вопросы:
Как я могу избежать мигания обновления уведомлений при изменении кнопки
Обновление текущего уведомления тихо
Как правильно обновить сообщение оповещения api 11?