Альтернатива для 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)
Надеюсь, что это поможет.