如何在android中静音MediaPlayer

如何在android中静音MediaPlayer

这段代码对我有用,

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

为了静音

 mp.setVolume(0,0); 

取消静音全音量

 mp.setVolume(1,1); 
  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); 

您可能希望淡出/声音,而不是立即将其设置为完整(1.0f)或零(0.0f)音量。

这有点棘手,因为您需要一个异步任务来保持您的应用程序响应:

mpMain是我播放循环背景音乐的MediaPlayer实例。 我也关心OnPause()和OnResume()。

方法playBackgroundMusic用于打开音乐,fadeOutBackgroundMusic关闭音乐,但通过淡出音量0.5秒(10 * 50,见while和Thread.sleep)。

我的基本卷是0.8f,您可能希望将其作为异步任务的参数或使用静态全局variables。

 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 { @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; } } } 

不推荐使用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); } 

尝试这个…

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

它将使完整媒体音量静音以静音

尝试这个

 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