Androidでボタンが押されたときにループ音を再生する
-
29-09-2019 - |
質問
私の問題は単純なものです。ボタンが押されたときにのみ、ループサウンドを再生したいです。以下はスイッチステートメントであり、他のアプローチが私が試した場合です。せいぜい、私はサウンドを再生できますが、ボタンが押されなくなっても一時停止しません。
public boolean onTouch(View v, MotionEvent event) {
MediaPlayer mp = MediaPlayer.create(getBaseContext(), R.raw.clash);
if (v.getId() == R.id.clash && event.getAction() == MotionEvent.ACTION_DOWN){
mp.setLooping(true);
mp.start();
}else if (v.getId() == R.id.clash && event.getAction() == MotionEvent.ACTION_UP)
{mp.pause();
}
}
public boolean onTouch(View v, MotionEvent event) {
MediaPlayer mp = MediaPlayer.create(getBaseContext(), R.raw.clash);
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
mp.setLooping(true);
mp.start();
case MotionEvent.ACTION_UP:
mp.pause();
}
return false;
}
解決
戻ってみてください true
それ以外の false
の終わりに onTouch
.
今起こっているのは今起こっていることです ACTION_DOWN
あなたの音を始めるイベント。戻ることによって false
あなたはあなたをフレームワークに伝えます しませんでした アクションを消費します。これは、将来の行動も消費しないことを意味します。したがって、ビューにタッチイベントの送信を停止します。
関連する引用から Android-Developers:
Action_Downイベントを取得すると、Trueを返していますか?そうでない場合、これはおそらく問題です。フレームワークは、将来のタッチイベント(Action_MovesとAction_up)をそのビューに配信します。タッチリスナーまたはOntoucheventがtrueを返します。
他のヒント
MPをOntouch Handlerの外に移動してください!
MediaPlayer mp;
public boolean onTouch(View v, MotionEvent event) {
mp = MediaPlayer.create(getBaseContext(), R.raw.clash);
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
mp.setLooping(true);
mp.start();
case MotionEvent.ACTION_UP:
mp.pause();
}
所属していません StackOverflow