我制作了一个poject,其中两个音频使用触摸来播放两个不同的文本视图。下面是一个文本视图的简单代码
tv.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
if( v == findViewById( R.id.CustomFontText ))
{
if (mp != null && mp.isPlaying()) {
mp.stop();
}
else
{
mp.start();
}
if (mp1 != null && mp1.isPlaying()) {
mp1.pause();
}
mp.start();
}
}
return false;
}这里mp和mp1是两个媒体播放器。tv=textview .When tv触摸mp play。和当tv再次触摸它停止,,,停止后,如果我再次触摸tv它不播放的音频again.But我想使它在每一次触摸这在这个过程中.Play -->Stop-->Play-->Stop....continuous...Where我需要修复它或实现它?
发布于 2012-05-08 14:15:28
首先去掉这段代码……
if (mp1 != null && mp1.isPlaying()) {
mp1.pause();
}
mp.start();然后,每次启动mp之前,释放前一个和setDataSource到音乐播放器对象,准备它…
像这样修改你的代码...
if (mp != null && mp.isPlaying()) {
mp.stop();
}
else
{
mp.release(); // this will bring mp to idle state
mp.setDataSource(MEDIA_PATH + File.separator + songs.get(position));
mp.prepare();
mp.start();
}我想现在它肯定能工作了..。
发布于 2012-05-08 14:10:41
请看一下MediaPlayer的State Diagram。
请注意:
一旦处于停止状态,将无法开始播放,直到再次调用
prepare()或prepareAsync()将MediaPlayer对象设置为准备好的状态。
您的代码中似乎也有一个bug,您调用了两次mp.start(),而mp1.start()从未被调用过。
https://stackoverflow.com/questions/10493333
复制相似问题