2012-10-04 54 views
0

我試圖設置setLooping爲true,沒有任何結果。我希望在檢測到事件時重複播放音效,並在播放時停止重複播放。如何重複聲音效果MotionEvent.ACTION_DOWN

public class MainActivity extends Activity implements SurfaceHolder.Callback { 
    MediaPlayer player; 
    public void onCreate(Bundle savedInstanceState) { 
    player = MediaPlayer.create(this, R.raw.rifle); 
    player.setLooping(true); 
    } 
    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    int height = metrics.heightPixels; 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     int ey = (int) event.getY(); 
     if (ey > height/2) { 
     player.start(); 
     } 
    } 
    return super.onTouchEvent(event); 
    } 
} 

回答

0
if (event.getAction() == MotionEvent.ACTION_DOWN) { 
    // start music 
} 
else if (event.getAction() == MotionEvent.ACTION_UP) { 
    // stop music 
} 
+0

我試過這個,看起來實現這個,導致聲音效果排隊;所以當按住屏幕約5秒鐘時,儘管我不再按下屏幕,但聲音重複約15分鐘。我試圖完成的是當按下屏幕時,聲音快速重複(如槍聲),當我停止觸摸屏幕時,它將當前正在播放的聲音效果播放到最後,然後停止播放。 – user1712484

+1

嘗試在播放器上使用setOnCompletionListener方法,在實際聲音結束時,您可以告訴播放器該做什麼:重新開始播放聲音,或者什麼也不做。 –

+0

謝謝Berrigeák,我會試試! – user1712484

0

你沒有準備的球員。

您不允許給無準備的玩家打電話開始。