问题描述
- 关于android 中RingtoneManager点击多个铃声多个铃声一起响
-
RingtoneManager rm=new RingtoneManager(AlarmClock_setting.this); rm.setType(RingtoneManager.TYPE_ALARM); rm.getCursor(); rm.getRingtone(position-1).play();
运行后,点击listview中的相应的铃声,点击多个,这几个铃声一直响。除非杀掉程序才行。请问怎样才能实现点击一个铃声时,stop上一个铃声再开始响这个铃声?
解决方案
点击listview的时候首先判断rm是不是正在播放,正在播放的话,就让rm停掉,播放另外 铃声,否则就让他播放
解决方案二:
定义一个 MediaPlayer
``` MediaPlayer myPlaryer = new MediaPlayer();
然后在listview的onItemClick中
我这里封装了一个播放的函数,直接放到activity中或放到包里面都是可以的
主要就是判断是否正在播放,播放就先stop,
audio_play(myPlaryer, Ring_Url);
protected void audio_play(MediaPlayer myPlaryer, Uri play_ring_Url) {
// TODO Auto-generated method stub
if (myPlaryer.isPlaying()) {
myPlaryer.stop();
}
try {
myPlaryer.reset();
myPlaryer.setDataSource(ChoiceRingSource2.this, play_ring_Url);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException 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();
}
try {
myPlaryer.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
myPlaryer.start();
}