当另一个mediaPlayer启动时,如何让mediaPlayer停止,这样它们就不会彼此重叠?
我有两个播放mp3的按钮。当第一首歌曲正在播放时,我想点击第二首歌曲来停止第一首歌曲,然后开始点击歌曲。如果第一个按钮被按下两次,第二次按下则复位歌曲。当另一个mediaPlayer启动时,如何让mediaPlayer停止,这样它们就不会彼此重叠?
基本上我不希望歌曲在按下多个按钮时相互播放。
@Override public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.placeyouknow: 
    String url = "http://www.katastro.com/audio/facts/01%20That%20Place%20You%20Know.mp3"; 
    mp = new MediaPlayer(); 
try { 
    mp.setDataSource(url); 
    mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    mp.prepare(); 
    mp.start(); 
    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    case R.id.fallen: 
    String url1 = "http://www.katastro.com/audio/fallen/01%20Fallen.mp3"; 
    mp = new MediaPlayer(); 
try { 
    mp.setDataSource(url1); 
    mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    mp.prepare(); 
    mp.start(); 
    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
回答:
好像你需要实现一个状态机来管理您的播放器(开始 - 停止 - 启动),而不是每一个按钮被按下
回答:
这里的时间创建一个新的播放器是一个样本声音辅助类我用于简单的应用程序。我用它在我的应用程序中一次最多播放一个资源,但您可以修改它以从某个网址播放音频。
public class Sound { 
private static MediaPlayer mp = null; 
/** Stop old sound and start new one */ 
public static void play(Context context, int resource) 
{ 
    stop(context); 
    mp = MediaPlayer.create(context, resource); 
    mp.setLooping(false); 
    mp.start(); 
} 
/** Stop the music */ 
public static void stop(Context context) 
{ 
    if (mp != null) 
    { 
     mp.stop(); 
     mp.release(); 
     mp = null; 
    } 
} 
} 
回答:
Whoooaaaaa,就失去了手柄MediaPlayer的左右。
首先,这个特殊的活动,你应该只把
mp = new MediaPlayer(); 在活动onCreate()方法。删除onClick()方法中调用的两个方法,并将其移至onCreate()方法。
从那里开始,您只需致电mp.setDataSource()即可拨打mp.reset(),它应该像您想要的一样工作!
干杯
以上是 当另一个mediaPlayer启动时,如何让mediaPlayer停止,这样它们就不会彼此重叠? 的全部内容, 来源链接: utcz.com/qa/264863.html







