web-dev-qa-db-ja.com

Androidでグローバルサウンドをミュートします

アプリケーションボタンからグローバルサウンドをミュートするために使用できる方法はありますか?

24
Yuen Tong

彼らはそれを必要以上に複雑にします。 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);
44

提供された答えは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);
    }
}

お役に立てれば...

18
Lokanath

Androidには4種類のサウンド設定があります。

  • 警報
  • 音楽
  • 着信音
  • 通知

まず、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);
11
Bhargav Panchal

setRingerMode()メソッドを使用してこれを行うことができます

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

ミュートとバイブレーションRINGER_MODE_VIBRATEフラグ

ミュート解除:RINGER_MODE_NORMAL

4
CodeNinja

技術的には、グローバルボリュームなどはありません。バルガブの答えはあなたを正しい軌道に乗せるはずです。 AudioManagerクラスで制御できるさまざまな「ストリーム」、つまり、ミュージック、リンガー、インコール、アラーム、通知、システム、DMTFがあります。これらの個々のストリームすべてのボリュームを0に設定する必要があります。これは、図に示すように、Bhargavのように非常に単純なプロセスです。

Audiomanagerオブジェクトを作成するだけです:-

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

そして、それを使用してすべてのストリームの音量を変更します:-

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

AudioManager.Streamと入力する代わりに、「AudioManager」と入力します。 Ctrl +スペースバーを押して、使用できるさまざまなストリームをすべて表示します。音量を変更したときに音やバイブレーションを追加したり、音量UIを表示したりできるさまざまな種類のフラグについては、ドキュメントを確認してください。

ストリームごとに最大ボリュームが異なる場合があるため、単一の値を使用してすべてのストリームを編集する場合は、必ずgetMaxStreamVolumeを使用して最大値を取得し、それに応じてボリュームを設定してください。したがって、ユーザーがグローバルボリュームを50%に設定する場合は、各ストリームの最大ボリュームを取得し、0.5を掛けて、対応するストリームに設定します。

3
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);
2
amr osama