2012-02-17 62 views
1

我试图去关注其他问题,但我不认为他们是我正在寻找的。试图一次只播放一个音频文件使用mediaPlayer和if/else

这里是我的java:http://pastie.org/private/psy2nnys8i0ajz4i8qfw

我知道我打开MP的多个实例,所以我尝试检测,如果一个正在播放,并停止它的线路34-39,但它仍然重叠

请指教。我试过单身的 - 但那不起作用,我也尝试使用一个mediaplayer实例并设置数据源,但无法弄清楚如何将R.raw.clipname传递给它。

谢谢!

+0

@Harry我正要写这个,所以+1的soundpool :) – keyser 2012-02-17 15:54:31

+0

@ keyser5053我认为soundpool将是一个问题,因为文件的大小 - 它们的范围从800kb到1mb,并且我读了最佳的soundpool较小的文件,然后我用什么? – dunivanb 2012-02-17 15:57:33

+0

我不知道。这可能是一个问题,但如果易于测试,请继续操作。否则,我所能建议的就是疯狂调试......(sry)。 – keyser 2012-02-17 16:31:18

回答

1

在某种程度上很难尝试和调试/跟踪你的代码。但我可以给你解决你的MediaPlayer打开原始资源,这也将让你的代码更健壮而简单:

MediaPlayer player=new MediaPlayer(); 
player.setDataSource(
    getResources().openRawResourceFd(R.raw.clip1).getFileDescriptor()); 
0

使用这一个:

@覆盖

public boolean onTouch(View v, MotionEvent event) { 
    switch (event.getAction()) { 
    case MotionEvent.ACTION_UP://int end 
     pv.stop(); 
     pv.reset(); 
     pv=MediaPlayer.create(MainActivity.this,R.raw.slot); 
     Toast.makeText(this,"stop",Toast.LENGTH_SHORT).show(); 
     break; 
    case MotionEvent.ACTION_DOWN://in start 
     pv.start(); 
     Toast.makeText(this,"play",Toast.LENGTH_SHORT).show(); 
     break; 
    default: 
     break; 
    } 
    return false; 
}