Можно ли прокрутить страницу уведомлений об износе Android?
У нас есть приложение SMS для Android Wear ( https://play.google.com/store/apps/details?id=com.awear.coffee)
Прямо сейчас мы используем обычные действия по уведомлению, и когда вы выбираете Ответить, запускается наша активность на часах. Я хочу заменить действие "Ответить" страницей уведомлений с пользовательским действием, содержащим несколько кнопок и список строк.
Я пробовал два подхода.
Создайте большую страницу уведомлений, которая содержит контент
Это не работает, потому что Notification.WearableExtender.setCustomContentHeight имеет скрытое максимальное значение, поэтому содержимое обрезается. Я думаю, что это такая же высота, как если бы вы использовали setCustomSizePreset(SIZE_LARGE). Я проверил, что если я использую уведомление по умолчанию с тонной текста, оно может быть больше этого, но если вы используете настраиваемое отображение, оно обрезается.
Используйте полноэкранную страницу уведомлений и добавьте к ней прокрутку
Это не работает, потому что вход блокируется как-то. Всякий раз, когда вы прокручиваете, действие получает Action.DOWN, Action.MOVE, Action.CANCEL в этом порядке, поэтому вы получаете только одно Action.MOVE независимо от того, как долго вы перетаскиваете. Я предполагаю, что это потому, что ОС хочет контролировать левый / правый пролистывания.
Есть идеи как обойти это? Я пытался настроить пользовательские слушатели onTouch, но они все еще не получают все сенсорные события.
Любая помощь будет оценена. Это сделало бы наше приложение намного лучше, если бы мы могли уменьшить количество необходимых нажатий.
Jakob
2 ответа
Я столкнулся с теми же проблемами.
Предел на setCustomContentHeight
расстраивает Я не мог найти способ обойти это.
Точно так же, кажется, не существует хорошего способа обойти ограничения, наложенные на прослушиватели тапов, с помощью полноэкранного уведомления.
Моим решением было добавить действие на первую страницу уведомления, которое запускает Activity
на основе GridViewPager
, Оказавшись там, ограничения исчезли, но это все еще в основном выглядит как уведомление. Основными отличиями являются: (1) вам нужно "нажать" на первую карту уведомлений, а не проводить ее, и (2) пролистывание вверх и вниз не приводит к автоматическому переходу к следующим / предыдущим уведомлениям.
Если вы используете мостовое уведомление (без наличия модуля износа) Вы можете вставить расширенный текстовый контент в ваше уведомление, добавив один из стилей "большого обзора" (InboxStyle,BigTextStyle) к вашему уведомлению. На портативном устройстве пользователи могут просматривать содержимое большого представления, расширяя уведомление. На носимых устройствах большой вид содержимого отображается по умолчанию.
BigTextStyle bigStyle = new NotificationCompat.BigTextStyle();
bigStyle.bigText(someBigText);
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_small)
.setContentTitle(title)
.setContentText(contentText)
.setContentIntent(viewPendingIntent)
.addAction(R.drawable.ic_map,
getString(R.string.somestring), mapPendingIntent)
.setStyle(bigStyle);