如何在Android中隐藏MediaPlayer
答案 0 :(得分:54)
这段代码对我有用,
MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);
mp.start();
静音
mp.setVolume(0,0);
&安培; 取消静音或完整音量
mp.setVolume(1,1);
答案 1 :(得分: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);
答案 2 :(得分: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;
}
}
}
答案 3 :(得分:3)
filter_select("owner", "Car owner:", shared_df1, ~ owner)
filter_select("owner", "Car owner:", shared_df2, ~ owner)
已弃用。
使用下面的替代代码。
AudioManger.setStreamMute
答案 4 :(得分:1)
试试这个......
AudioManager manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
manager.setStreamMute(AudioManager.STREAM_MUSIC, true);
将静音完成媒体音量静音
答案 5 :(得分: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
答案 6 :(得分:1)
我们可以使用以下方法进行静音/取消静音或检查音频播放器是否处于静音状态
/**
* 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