Альтернатива для AudioManager.setRingerMode() в Android 5.0 (API 21)

Я использовал AudioManager.setRingerMode() для обработки тома устройства в своем приложении, используя:

  • AudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT), чтобы отключить вибрацию и звук.
  • AudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE), чтобы выключить звук и включить вибрацию.
  • AudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL), чтобы включить звук и включить вибрацию.

Другими словами, я смог получить контроль над объемом устройства и достичь всех "режимов".

Но невозможно управлять всеми режимами громкости устройства в Android 5.0, используя только AudioManager.setRingerMode.

В соответствии с документация:

Настройка устройства на RINGER_MODE_SILENT заставляет устройство перейти в новый режим приоритета. Устройство выходит из режима приоритета, если вы установили его в RINGER_MODE_NORMAL или RINGER_MODE_VIBRATE.

Как я могу обрабатывать все режимы (нет, вибрация в приоритете, звук в приоритете, вибрация во всем, звук во всех) объема устройства в Android 5.0?

Ответы

Ответ 1

В новом API 5.0 есть множество методов, которые могут использоваться для установки звонка/вибровызова.

setVibrate (long[] pattern)

Этот метод контролирует вибрацию устройства. Занимает много времени, в течение которого первое значение указывает количество milliseconds для ожидания перед включением vibrator. Подробнее:

http://developer.android.com/reference/android/os/Vibrator.html#vibrate(long[], int)

http://developer.android.com/reference/android/app/Notification.Builder.html#setVibrate(long[])

setDefaults (int defaults)

Это устанавливает свойства уведомлений, т.е. SOUND, VIBRATE, ALL и т.д. и т.д.

Из документов:

Значение должно быть одним или несколькими из следующих полей в сочетании с бит- или: DEFAULT_SOUND, DEFAULT_VIBRATE, DEFAULT_LIGHTS.

http://developer.android.com/reference/android/app/Notification.Builder.html#setDefaults (int defaults)

Надеюсь, что это поможет.