Android Wear: программно остановить отображение уведомлений моего приложения на часах

Судя по документации по носимым устройствам, кажется невозможным программно остановить отображение уведомлений моего приложения на подключенном носимом устройстве. Я могу добавить свое приложение в список «приглушенных» приложений, используя приложение Android Wear на портативном устройстве; однако я хотел бы сделать это с помощью кода. Пожалуйста, дайте мне знать, если вы поняли это.

Кроме того, можно ли отображать совершенно разные уведомления на телефоне и на носимых устройствах вместо того, чтобы просто иметь другой набор действий для уведомлений на носимых устройствах?

Спасибо за ваши ответы!


person Chaitanya    schedule 27.07.2014    source источник


Ответы (2)


Первый вопрос:

Боюсь, отключить приложения из кода невозможно.

Второй вопрос:

Можно показывать разные уведомления на телефоне и часах. Вы можете сделать это, внедрив носимое приложение и показывая локальные (setLocalOnly()) уведомления отдельно на часах и телефоне (+ синхронизируйте их с телефоном с помощью DataApi).


В качестве альтернативы вы можете использовать групповую функцию платформы Android Wear. В основном он создан для публикации множества (сгруппированных) уведомлений на носимых устройствах и одного сводного уведомления на телефоне. Но с помощью этого механизма вы также можете опубликовать одно (сводное) уведомление на свой телефон и второе уведомление только об износе.

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")
    .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")
    .setGroup("GROUP")
    .setGroupSummary(false);

notificationManager.notify(0, phoneNotificationBuilder.build());
notificationManager.notify(1, wearableNotificationBuilder.build());

Таким образом, вы можете создать «стек» только с одним уведомлением (+, конечно, сводное уведомление). Стек с одним уведомлением появится только на часах, а сводное уведомление появится только на телефоне — вот чего вы хотите добиться :)

Подробнее о группировании уведомлений можно узнать здесь: https://developer.android.com/training/wearables/notifications/stacks.html

person Maciej Ciemięga    schedule 27.07.2014
comment
Спасибо за ваш ответ. Позвольте мне попробовать это и дайте вам знать, как это происходит. - person Chaitanya; 28.07.2014
comment
Если я выберу подход «носимое приложение и setLocalOnly()», увижу ли я два уведомления на носимом устройстве; один из носимого приложения, а другой автоматически отображается Android? - person Chaitanya; 28.07.2014
comment
Ваше телефонное приложение также должно отображать уведомление с setLocalOnly() - person Maciej Ciemięga; 28.07.2014
comment
Идеальный. Позвольте мне попробовать это тоже. :) - person Chaitanya; 29.07.2014
comment
Спасибо! setLocalOnly() можно использовать для управления отображением уведомления на телефоне или на телефоне и на подключенном носимом устройстве. - person Chaitanya; 29.07.2014

Используя setLocalOnly(true), можно отобразить уведомление только на телефон. Это, по сути, программно отключает звук вашего приложения — уведомления вашего приложения не отображаются на подключенных устройствах.

Чтобы создать совершенно разные уведомления для телефона и носимых устройств, мы можем написать сопутствующее носимое приложение, которое отображает настраиваемое уведомление. Затем уведомление телефона перестает появляться на носимых устройствах с помощью setLocalOnly(). Я еще не пробовал «укладывание», упомянутое Мацеем Чемингой.


(Добавлено как ответ для тех, кто может пропустить комментарии к принятому ответу.)

person Chaitanya    schedule 28.07.2014