В первой статье мы рассмотрели базовые функции по работе с уведомлениями. Сегодня мы поговорим об использовании с уведомлениями звуковых сигналов и вибрации.
Мы можем использовать как звук и вибрацию по умолчанию, так и собственные настройки для звукового сопровождения и вибрации.
Звук и вибрация по умолчанию
Есть два способа использовать звук и вибрацию по умолчанию.
Первый способ состоит в использовании свойства defaults объекта Notification в сочетании с соответствующими константами.
1 2 3 |
// Названия констант уже говорят об их назначении. // Если используется только одна из констант уведомление будет сопровождаться только звуком или только вибрацией. notification.defaults= Notification.DEFAULT_SOUND or Notification.DEFAULT_VIBRATE; |
Но, этот способ на данный момент является устаревшим и несмотря на то, что он всё ещё поддерживается, применять его в приложениях, которые поддерживают последние версии SDK не рекомендуется.
Вместо этого нужно использовать метод shouldVibrate и свойство sound (в Java метод getSound) объекта NotificationChannel.
1 2 |
notificationChannel.shouldVibrate(); notificationChannel.sound; |
Собственные звуковые файлы
Для звукового сопровождения можно выбрать как стандартные системные звуки, так и собственные аудиофайлы. В обоих случаях необходимо получить URI воспроизводимого файла.
1 |
val ringURI = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION) |
Для воспроизведения также существует два способа.
Старый, использующий свойство sound объекта Notification.
1 |
notification.sound = ringURI; |
И новый.
1 2 3 4 5 |
val att = AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_NOTIFICATION) .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) .build() notificationChannel.setSound(ringURI,att); |
Здесь необходимо передать в метод setSound объекта NotificationChannel URI файла и соответствующие атрибуты воспроизведения (объект AudioAttributes).
В примере выше используется стандартный звуковой сигнал уведомления, но можно использовать и собственный файл. Нужно только знать его точный адрес в файловой системе.
1 |
val ringURI = Uri.parse(pathString); |
Собственные настройки вибрации
Для использования вибрации в приложении нужно получить соответствующие права. Добавляем в манифест:
1 |
<uses-permission android:name="android.permission.VIBRATE"/> |
После этого можно использовать вибрацию.
Рассмотрим пример, в котором вибрация сменяется паузой в течение трёх секунд.
1 2 |
val vibrate = longArrayOf(1000, 1000, 1000) notification.vibrate = vibrate |
Как мы видим длительность включения вибрации и паузы определяется массивом типа long. Данный массив передаётся свойству vibration объекта Notification и служит в качестве параметров настройки вибрации при уведомлении.
Приведённый выше пример, реализует уже устаревший способ настройки вибрации. В настоящее время рекомендуется использовать свойство vibrationPattern и метод enableVibration объекта NotificationChannell, как показано ниже:
1 2 |
notificationChannel.vibrationPattern = vibrate; notificationChannel.enableVibration(true) |
Важно
- Все настройки звука и вибрации следует выполнить до публикации уведомления (т.е. до вызова метода notify объекта NotificationManager);
- На некоторых устройствах могут работать только стандартные звуковые сигналы и вибрация. В этом случае Ваши собственные настройки будут заменены стандартными.
Добавить комментарий