Подтвердить что ты не робот

Уведомление о 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 и андроид: Theme.Holo.NoActionBar.Fullscreen И NotificationCompat.Builder

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

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

                    .setDefaults(Notification.DEFAULT_VIBRATE)

- лучший способ?

4b9b3361

Ответ 1

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

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

EDIT:

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

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

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

Ответ 2

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

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

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

.setPriority(Notification.PRIORITY_MAX)

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

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

Ответ 3

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

.setPriority(Notification.PRIORITY_HIGH)

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

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

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

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

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

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

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

Ответ 4

Чтобы установить priority, используйте 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)

Ответ 5

Необходимо установить высокий приоритет и использовать рингтоны или вибрации.

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) или
  • Уведомление имеет высокий приоритет и использует мелодии звонка или вибрации

Ответ 6

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

notificationBuilder.setPriority(Notification.PRIORITY_HIGH);