Уведомление о Heads-Up – Android Lollipop

Я пытаюсь показать хедз-ап типа уведомления, но я не мог. Что я пробовал

final Notification.Builder notif = new Builder(getApplicationContext()) .setContentTitle(getString(R.string.title)) .setContentText(getString(R.string.text)) // .setTicker(getString(R.string.tick)) removed, seems to not show at all // .setWhen(System.currentTimeMillis()) removed, match default // .setContentIntent(contentIntent) removed, I don't neet it .setColor(Color.parseColor(getString(R.color.yellow))) //ok .setSmallIcon(R.drawable.ic_small) //ok .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)) // .setCategory(Notification.CATEGORY_CALL) does not seem to make a difference .setPriority(Notification.PRIORITY_MAX); //does not seem to make a difference // .setVisibility(Notification.VISIBILITY_PRIVATE); //does not seem to make a difference mNotificationManager.notify(Constants.NOTIFICATION_ID, notif.build()); 

Уведомление отображается только как значок на панели. Я использую api 21 для эмулятора api21 (не для предварительного просмотра). Пробовал андроид: Theme.Holo.NoActionBar и android: Theme.Holo.NoActionBar.Fullscreen And NotificationCompat.Builder

Примеры Sdk недоступны. Кто-нибудь знает как это делать?

Я сделал это, добавляя

  .setDefaults(Notification.DEFAULT_VIBRATE) 

Это лучший способ?

Solutions Collecting From Web of "Уведомление о Heads-Up – Android Lollipop"

Согласно Уведомлениям , вы должны установить виброзвонок или мелодию звонка, чтобы выполнить Heads-up. Тем не менее, вот быстрый хак, который не требует разрешения VIBRATE для получения заголовка:

 notificationBuilder.setPriority(Notification.PRIORITY_HIGH); if (Build.VERSION.SDK_INT >= 21) notificationBuilder.setVibrate(new long[0]); 

РЕДАКТИРОВАТЬ:

Не злоупотребляйте уведомлением о хедз-ап. См. Здесь, когда следует использовать хедз-ап уведомление:

MAX: для критических и срочных уведомлений, которые предупреждают пользователя о том, что это критически важно или необходимо решить, прежде чем они смогут продолжить выполнение конкретной задачи.

ВЫСОКАЯ: Прежде всего для важных сообщений, таких как сообщения или чат-события с содержанием, которое особенно интересно для пользователя. Высокоприоритетные уведомления вызывают отображение уведомлений о хедз-ап.

Согласно Google: https://developer.android.com/design/patterns/notifications.html

Если приоритет уведомления отмечен как высокий, максимальный или полный экран, он получает уведомление о хедз-ап.

Поэтому следующий код должен генерировать уведомление хедз-ап:

 .setPriority(Notification.PRIORITY_MAX) 

Должно быть достаточно. Но, видимо, также необходимо установить .setDefaults (Notification.DEFAULT_VIBRATE). Надеюсь, Google исправит это в своей последней версии Android 5.0.

Не уверен, что ошибка или функция …

Все мои приложения не показывают Notification, например, у меня есть Nexus 6 с Android 5.1.1, но я думаю, что это происходит с Android 5.0, мне пришлось установить:

 .setPriority(Notification.PRIORITY_HIGH) 

Правильно установить приоритет уведомлений и управлять им

Android поддерживает флаг приоритета для уведомлений. Этот флаг позволяет вам влиять на то, где появляется ваше уведомление, относительно других уведомлений, и помогает гарантировать, что пользователи всегда видят свои самые важные уведомления в первую очередь. При публикации уведомления вы можете выбрать один из следующих уровней приоритета:

MAX Используйте для критических и срочных уведомлений, которые предупреждают пользователя о том, что это критически важно или необходимо решить, прежде чем они смогут продолжить выполнение определенной задачи.

HIGH Используется в основном для важных сообщений, таких как сообщения или чаты с содержанием, которое особенно интересно для пользователя. Высокоприоритетные уведомления вызывают отображение уведомлений о хедз-ап.

ПО УМОЛЧАНИЮ Используйте для всех уведомлений, которые не попадают ни в один из других приоритетов, описанных здесь. LOW Используйте для уведомлений, о которых вы хотите, чтобы информация о них была информирована, но это менее актуально. Низкоприоритетные уведомления, как правило, отображаются в нижней части списка, что делает их хорошим выбором для таких вещей, как общественные или неориентированные социальные обновления. Пользователь попросил сообщить о них, но эти уведомления никогда не должны иметь приоритет над срочными или Прямой связи.

MIN Используется для контекстной или справочной информации, такой как информация о погоде или информация о контекстном местоположении. Уведомления о минимальном приоритете не отображаются в строке состояния. Пользователь обнаруживает их при расширении оттенка уведомления.

Чтобы установить приоритет , используйте функцию setPriority (введенную в API 16) вместе с setDefaults (добавленный в API 11) Notification Builder . Выберите приоритет DEFAULT , HIGH, LOW, MAX, MIN в соответствии с требованиями вашего приложения. Здесь также могут быть выбраны значения по умолчанию.

Небольшой фрагмент:

 notification = NotificationBuilder(service) notification.setPriority(Notification.PRIORITY_MAX) notification.setDefaults(Notification.DEFAULT_ALL) 

Добавьте эту строку в свой код, чтобы отобразить уведомление в виде заголовка, оно работает только для версии Lollipop

 notificationBuilder.setPriority(Notification.PRIORITY_HIGH); 

Должен задавать высокий приоритет и использовать рингтоны или вибрации.

 notificationBuilder.setDefaults(Notification.DEFAULT_ALL); notificationBuilder.setPriority(Notification.PRIORITY_HIGH); 

Ссылка: https://developer.android.com/guide/topics/ui/notifiers/notifications.html#Heads-up

Уведомления о Heads-up

С Android 5.0 (уровень API 21) уведомления могут появляться в небольшом плавающем окне (также называемом уведомлением о хед-апе), когда устройство активно (то есть устройство разблокировано и его экран включен). Эти уведомления похожи на компактную форму вашего уведомления, за исключением того, что в уведомлении хедз-ап также отображаются кнопки действий. Пользователи могут действовать или отклонять уведомление о хедз-ап, не выходя из текущего приложения.

Примерами условий, которые могут вызывать уведомления о хедз-ап, являются:

  • Активность пользователя в полноэкранном режиме (приложение использует fullScreenIntent) или
  • Уведомление имеет высокий приоритет и использует рингтоны или вибрации