32

AndroidでMediaPlayerをミュートする方法

4

8 に答える 8

69

このコードは私のために働いた、

MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);
mp.start();

ミュート

mp.setVolume(0,0);

ミュート解除またはフルボリューム

mp.setVolume(1,1);
于 2011-01-03T07:26:42.700 に答える
13
 AudioManager   mAudioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);

    int current_volume =mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
    //If you want to player is mute ,then set_volume variable is zero.Otherwise you may supply some value.
    int set_volume=0;
    mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,set_volume, 0);
于 2011-10-03T12:12:04.840 に答える
8

サウンドをすぐにフル (1.0f) またはゼロ (0.0f) のボリュームに設定するのではなく、サウンドをフェードアウト/フェードインしたい場合があります。

アプリの応答性を維持するために非同期タスクが必要なため、少し注意が必要です。

mpMain は、ループするバックグラウンド ミュージックを再生する MediaPlayer インスタンスです。OnPause() と OnResume() でも気にします。

メソッド playBackgroundMusic を使用して音楽をオンにし、fadeOutBackgroundMusic を使用して音楽をオフにしますが、音量を 0.5 秒間フェードアウトします (10*50、while および Thread.sleep を参照)。

私のベース ボリュームは 0.8f です。これを非同期タスクのパラメーターにするか、静的グローバル変数を使用することをお勧めします。

public void playBackgroundMusic( Boolean isOn ){
  if(isOn){
    // prevent conflics with async fade-out task
    if(mtask_fadeout_music!=null){
      mtask_fadeout_music.cancel(true);
      mtask_fadeout_music=null;
    }
    if(mpMain==null){
      mpMain = MediaPlayer.create(this, R.raw.zin___piano_2_140bpm_32158);
      mpMain.setLooping(true);
      mpMain.setVolume(0.8f,0.8f);
      mpMain.start();                         
    }
  }
  else{
    if(mtask_fadeout_music==null){
      fadeOutBackgroundMusic();
    }
  }
}

public void fadeOutBackgroundMusic(){
  mtask_fadeout_music = (FadeOutMusic)new FadeOutMusic( ).execute( );
}


//
//  background processing ... fade out music stream
//
public class FadeOutMusic extends AsyncTask<String,Integer,String> {

  @Override
  protected String doInBackground(String... args) {
    float level = 0.8f;
    int i = 1;

    while(i<50){
        i++;
        if(mpMain != null){
          level=level*0.9f;
          mpMain.setVolume(level, level);         
        }
        try {
          Thread.sleep(10);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
    }
    return "dummy";
  }

  @Override
  protected void onPostExecute( String dummy ) {
    if(mpMain != null){
      mpMain.setVolume(0,0);         
      mpMain.release();
      mpMain = null;  
    }
    if(mtask_fadeout_music!=null){
      mtask_fadeout_music = null;
    }
  }       

  @Override
  public void onCancelled() {
    if(mpMain != null){
      mpMain.setVolume(0,0);         
      mpMain.release();
      mpMain = null;  
    }
    if(mtask_fadeout_music!=null){
      mtask_fadeout_music = null;
    }
  }
}
于 2011-07-25T22:55:26.937 に答える
3

AudioManger.setStreamMute廃止されました。以下の代替コードを使用してください。

AudioManager am = getSystemService(Context.AUDIO_SERVICE);
// Change the stream to your stream of choice. 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
       am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_MUTE, 0);
    } else {
       am.setStreamMute(AudioManager.STREAM_MUSIC, true);
    }
于 2018-02-02T11:19:53.340 に答える
2

以下のメソッドを使用して、ミュート/ミュート解除に使用したり、オーディオ プレーヤーがミュート状態かどうかを確認したりできます。

/**
 * To Mute or Un-mute using Audio Manager
 */
private fun updateMuteState(mute: Boolean) {
    activity?.let {
        getAudioManager(it).adjustStreamVolume(
            AudioManager.STREAM_MUSIC,
            if (mute) -100 else 100,
            0
        )
    }
}

/**
 * Return true -> audio player is in mute state, false otherwise
 */
private fun isMute(): Boolean {
    activity?.let {
        getAudioManager(it).getStreamVolume(AudioManager.STREAM_MUSIC).let { volume ->
            return volume == 0
        }
    }
    return false
}

/**
 * To Get the Audio Manager
 */
private fun getAudioManager(context: Context) =
    context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
于 2019-10-15T09:15:21.450 に答える
1

これを試して

AudioManager am = getSystemService(Context.AUDIO_SERVICE);
// Request audio focus.
am.requestAudioFocus(listener, AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN);

http://developer.android.com/training/managing-audio/audio-focus.html

于 2014-12-13T00:51:46.127 に答える
1

これを試して...

   AudioManager manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
manager.setStreamMute(AudioManager.STREAM_MUSIC, true);

ミュートする完全なメディア ボリュームをミュートします

于 2014-01-17T07:29:17.537 に答える