Par*_*han 57

这段代码对我有用,

MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);
mp.start();
Run Code Online (Sandbox Code Playgroud)

为了静音

mp.setVolume(0,0);
Run Code Online (Sandbox Code Playgroud)

&取消静音全音量

mp.setVolume(1,1);
Run Code Online (Sandbox Code Playgroud)

  • 两位数字表示L和R通道,因此取消静音应为mp.setvolume(1,1); (4认同)

Ram*_*ula 12

 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);
Run Code Online (Sandbox Code Playgroud)


Mic*_*ann 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;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)