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

Отключить глобальный звук в Android

Есть ли способ, который можно использовать для отключения глобального звука с помощью кнопки приложения?

4b9b3361

Ответ 1

Они делают это более сложным, чем это должно быть. Вы можете просто использовать AudioManager.setStreamMute(). Не стесняйтесь использовать приведенный ниже код.

//mute audio
AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
             amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
             amanager.setStreamMute(AudioManager.STREAM_ALARM, true);
             amanager.setStreamMute(AudioManager.STREAM_MUSIC, true);
             amanager.setStreamMute(AudioManager.STREAM_RING, true);
             amanager.setStreamMute(AudioManager.STREAM_SYSTEM, true);


//unmute audio
AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
             amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
             amanager.setStreamMute(AudioManager.STREAM_ALARM, false);
             amanager.setStreamMute(AudioManager.STREAM_MUSIC, false);
             amanager.setStreamMute(AudioManager.STREAM_RING, false);
             amanager.setStreamMute(AudioManager.STREAM_SYSTEM, false);

Ответ 2

В Android есть четыре типа звуковых настроек:

  • Тревога
  • Музыка
  • Мелодия
  • Уведомление

Сначала создайте объект класса AudioManager:

AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);

Если вы хотите установить том, используйте следующие:

Для уведомлений

amanager.setStreamVolume(AudioManager.STREAM_NOTIFICATION,
    AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);

Для аварийного сигнала

amanager.setStreamVolume(AudioManager.STREAM_ALARM,
    AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);

Для музыки

amanager.setStreamVolume(AudioManager.STREAM_MUSIC,
    AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);

Для мелодии звонка

amanager.setStreamVolume(AudioManager.STREAM_RING,
    AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);

Ответ 3

Предоставленный ответ кажется устаревшим из android M (API 23), поэтому это альтернативное решение

public void MuteAudio(){
    AudioManager mAlramMAnager = (AudioManager) aActivity.getSystemService(aContext.AUDIO_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_NOTIFICATION, AudioManager.ADJUST_MUTE, 0);
        mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_ALARM, AudioManager.ADJUST_MUTE, 0);
        mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_MUTE, 0);
        mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_RING, AudioManager.ADJUST_MUTE, 0);
        mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_SYSTEM, AudioManager.ADJUST_MUTE, 0);
    } else {
        mAlramMAnager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
        mAlramMAnager.setStreamMute(AudioManager.STREAM_ALARM, true);
        mAlramMAnager.setStreamMute(AudioManager.STREAM_MUSIC, true);
        mAlramMAnager.setStreamMute(AudioManager.STREAM_RING, true);
        mAlramMAnager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
    }
}

public void UnMuteAudio(){
    AudioManager mAlramMAnager = (AudioManager) aActivity.getSystemService(aContext.AUDIO_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_NOTIFICATION, AudioManager.ADJUST_UNMUTE, 0);
        mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_ALARM, AudioManager.ADJUST_UNMUTE, 0);
        mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_UNMUTE,0);
        mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_RING, AudioManager.ADJUST_UNMUTE, 0);
        mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_SYSTEM, AudioManager.ADJUST_UNMUTE, 0);
    } else {
        mAlramMAnager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
        mAlramMAnager.setStreamMute(AudioManager.STREAM_ALARM, false);
        mAlramMAnager.setStreamMute(AudioManager.STREAM_MUSIC, false);
        mAlramMAnager.setStreamMute(AudioManager.STREAM_RING, false);
        mAlramMAnager.setStreamMute(AudioManager.STREAM_SYSTEM, false);
    }
}

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

Ответ 4

Для этого можно использовать метод setRingerMode()

AudioManager audioManager=(AudioManager)getSystemService(AUDIO_SERVICE);
audioManager.setRingerMode(audioManager.RINGER_MODE_SILENT);

отключить и вибрировать флаг RINGER_MODE_VIBRATE

unmute: RINGER_MODE_NORMAL

Ответ 5

Технически нет такой вещи, как глобальный том. Ответ Бхаргава должен поставить вас на правильный путь. Существует много разных "потоков", которые могут контролироваться классом AudioManager, а именно Music, Ringer, In-Call, Alarm, Notification, System и DMTF. Вы должны установить том для всех этих отдельных потоков на 0, что является невероятно простым процессом, как показано на рисунке Bhargav.

Просто создайте объект Audiomanager: -

AudioManager audioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);

И затем используйте его для изменения громкости для всех потоков: -

audioManager.setStreamVolume(AudioManager.Stream, Extra Flags or null);

Вместо ввода AudioManager.Stream введите "AudioManager". и нажмите Ctrl + Space Bar, чтобы увидеть все различные потоки, которые вы можете использовать. Проверьте документацию на различные типы флагов, которые могут добавить звук или вибрацию, или поднять уровень громкости при изменении громкости.

Каждый поток может иметь разный максимальный объем, поэтому обязательно используйте getMaxStreamVolume для получения максимальных значений и установите громкость соответственно, если вы используете одно значение для редактирования всех потоков. Поэтому, если пользователь хочет установить глобальный объем на 50%, получите максимальный объем для каждого потока, умножьте их на 0,5 и установите в соответствующие потоки.

Ответ 6

mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_NOTIFICATION, AudioManager.ADJUST_TOGGLE_MUTE, 0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_ALARM, AudioManager.ADJUST_TOGGLE_MUTE, 0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_TOGGLE_MUTE,0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_RING, AudioManager.ADJUST_TOGGLE_MUTE, 0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_SYSTEM, AudioManager.ADJUST_TOGGLE_MUTE, 0);