Вопрос по android, audio – Отключить звук в Android

20

Error: User Rate Limit Exceeded

Что такое глобальный звук? Shrikant

Ваш Ответ

6   ответов
4

Ты можешь использоватьsetRingerMode() способ сделать это

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

отключение звука вибрироватьRINGER_MODE_VIBRATE флаг

приглушение:RINGER_MODE_NORMAL

13

Представленный ответ устарел с 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);
    }
}

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

Идеальное решение !! и было бы лучше, если бы вы держали одиночный метод mute / unmute flag args, но это необязательно :).
2
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);
3

Технически нет такой вещи как глобальный объем. Ответ Bhargav должен поставить вас на правильный путь. Существует много разных «потоков». это может управляться классом AudioManager, а именно: музыка, звонок, входящий вызов, будильник, уведомление, система и DMTF. Вы должны установить громкость для всех этих отдельных потоков на 0, что является невероятно простым процессом, как Bhargav, как показано.

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

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

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

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

Вместо ввода AudioManager.Stream введите & quot; AudioManager. & Quot; и нажмите Ctrl + пробел, чтобы увидеть все различные потоки, которые вы можете использовать. Проверьте документацию на наличие множества различных типов флагов, которые могут добавить звук или вибрацию или вызвать пользовательский интерфейс громкости при изменении громкости.

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

39

Они делают это сложнее, чем должно быть. Вы можете просто использовать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);
К сожалению, устарел с 22 уровня API.
@ Endzeit: см. Ответ @ Lokanath. Для недавнего Android просто замените вadjustStreamVolume() позвонить сADJUST_MUTE.
11

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

  • Alarm
  • Music
  • Ring tone
  • Notification

Во-первых, создайте объектAudioManager учебный класс:

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

Если вы хотите установить громкость, используйте эти:

For notification

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

For alarm

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

For music

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

For ringtone

amanager.setStreamVolume(AudioManager.STREAM_RING,
    AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);
Там нет никакого метода, как указано в этом ответе
Нет ли на самом деле БОЛЬШЕ потоков (система, голосовой вызов)? Я видел те, которые используются в реальных устройствах. Также нет метода AudioManager # setStreamVolume (int, int), существует только один, который принимает три параметра (один из которых является громкостью для установки). Вы могли бы передать 0, но это не принято для всех потоков.

Похожие вопросы