Включить звук в трансляции в беззвучном режиме

Пишу приложение, которое должно воспроизводить звуковое уведомление даже в беззвучном режиме. Я не хочу временно отключать Беззвучный режим и поздно откатывать его. Сейчас я использую для этого поток ALARM. Обычно это работает правильно, потому что по умолчанию поток ALARM не отключен в тишине. Но иногда бывает.

Как я могу понять, что поток в данный момент отключен (в беззвучном режиме)? Как мне его включить (не переходя в нормальный режим)?


person nickkadrov    schedule 04.09.2013    source источник


Ответы (1)


Отвечая на свой вопрос:

Решение было найдено в исходниках ОС Android (в стандартном приложении Alarm).

Я нашел способ проверить и установить опцию «Тревога в тишине»:

private static final int ALARM_STREAM_TYPE_BIT =
        1 << AudioManager.STREAM_ALARM;

public static void setAlarmInSilent(boolean on) {
    int ringerModeStreamTypes = Settings.System.getInt(
            context.getContentResolver(),
            Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0);

    if (on) {
        ringerModeStreamTypes &= ~ALARM_STREAM_TYPE_BIT;
    } else {
        ringerModeStreamTypes |= ALARM_STREAM_TYPE_BIT;
    }

    Settings.System.putInt(context.getContentResolver(),
            Settings.System.MODE_RINGER_STREAMS_AFFECTED,
            ringerModeStreamTypes );
}

Ссылка на src Android: https://android.googlesource.com/platform/packages/apps/AlarmClock/+/donut-release2/src/com/android/alarmclock/SettingsActivity.java

person nickkadrov    schedule 12.10.2013
comment
Спасибо, у меня такая же проблема. Это общесистемная настройка? Значит, я должен вернуть его после проигрывания звука? Как вы это решили? - person chrisonline; 01.01.2014
comment
Да, это общесистемные настройки. Итак, восстанавливаю после. - person nickkadrov; 02.01.2014
comment
Но когда? После вызова notificationManager.notify ()? - person chrisonline; 02.01.2014
comment
Правильный ответ - сделай это, когда он больше не нужен. В моих случаях я откатываюсь после того, как закончится ночной профиль (я разработал приложение DND). И имейте в виду, что вам следует восстановить предыдущее значение, а не отключать его навсегда. В противном случае пользователь может пропустить утренний будильник в беззвучном режиме, когда он этого ожидает. - person nickkadrov; 04.01.2014