Отключить звук в Android

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

 Shrikant05 июн. 2012 г., 12:52
Что такое глобальный звук?

Ответы на вопрос(6)

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

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

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

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

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

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

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

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

Технически нет такой вещи как глобальный объем. Ответ 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 и установите для соответствующих потоков.

В 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);
 09 янв. 2015 г., 12:08
Там нет никакого метода, как указано в этом ответе
 01 окт. 2014 г., 00:44
Нет ли на самом деле БОЛЬШЕ потоков (система, голосовой вызов)? Я видел те, которые используются в реальных устройствах. Также нет метода AudioManager # setStreamVolume (int, int), существует только один, который принимает три параметра (один из которых является громкостью для установки). Вы могли бы передать 0, но это не принято для всех потоков.

Ваш ответ на вопрос