2012-02-17 61 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; 
}