Флаг уведомления FLAG_NO_CLEAR
в основном делает ваше уведомление «текущим». Текущие уведомления, отправленные с телефона, НЕ будут отображаться на носимом устройстве.
У вас есть два решения проблемы. У обоих есть свои преимущества и недостатки. Пожалуйста, прочитайте текст ниже и решите, какое решение лучше решит вашу ситуацию :)
Решение 1 - используйте группу:
Вы можете использовать group
функцию платформы Android Wear. В основном он создан для публикации множества (сгруппированных) уведомлений на носимых устройствах и одного summary
уведомления на телефоне. Но с помощью этого механизма вы также можете опубликовать одно уведомление ongoing
на своем телефоне, а второе уведомление только при износе. В итоге вы получите одно ongoing
уведомление на свой телефон и одно обычное уведомление на носимое устройство.
final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
// This notification will be shown only on phone
final NotificationCompat.Builder phoneNotificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Title phone")
.setContentText("Text phone")
.setOngoing(true)
.setOnlyAlertOnce(true)
.setGroup("GROUP")
.setGroupSummary(true);
// This notification will be shown only on watch
final NotificationCompat.Builder wearableNotificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Title wearable")
.setContentText("Text wearable")
.setOngoing(false)
.setOnlyAlertOnce(true)
.setGroup("GROUP")
.setGroupSummary(false);
notificationManager.notify(0, phoneNotificationBuilder.build());
notificationManager.notify(1, wearableNotificationBuilder.build());
Этот метод позволит вам опубликовать «альтернативное» уведомление только для часов, сохранив ваше ongoing
уведомление на телефоне. Но (как упоминалось ранее) уведомление на часах не может быть ongoing
— это должно быть обычное уведомление. Если вы действительно хотите, чтобы на часах отображалось настоящее уведомление ongoing
, вам нужно выбрать второе решение.
Подробнее о группировании уведомлений читайте здесь:
https://developer.android.com/training/wearables/notifications/stacks.html
Решение 2 — создайте носимое приложение:
Текущие уведомления с телефона не будут отображаться на часах, но вы можете создать носимую часть своего приложения для Android и опубликовать свое уведомление прямо на Android Wear. Вы можете легко опубликовать текущее уведомление оттуда, но оно не будет таким же, как на телефоне. Вам нужно будет синхронизировать их между обоими устройствами.
Подробнее о DataApi
читайте здесь:
https://developer.android.com/training/wearables/data-layer/index.html
https://developer.android.com/training/wearables/data-layer/data-items.html
Вы также можете взглянуть на мой пост, где я разместил код, демонстрирующий, как использовать DataApi
на практике:
https://stackoverflow.com/a/24896043/3827276
person
Maciej Ciemięga
schedule
23.07.2014