onTouchListener和mediaplayer.setLooping中的音频问题

时间:2018-02-02 17:04:50

标签: android motionevent ontouch

我尝试为学校项目做一个Soundboard,但是当我按下按钮时遇到问题,如果我按下两次按钮,声音就不会再次重现,即使条件满了,音频也不会循环。我有不同的按钮,他们都调用一个方法(每个方法在调用中都有不同的参数

btn1.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                reproducir(mp1, motionEvent, btn1, colorin);
                return false;
            }

        });
public void reproducir(MediaPlayer mp, MotionEvent motionEvent, Button btn, String colorin ){
    switch(motionEvent.getAction()){
        case MotionEvent.ACTION_DOWN:
            mp.start();               
btn.setBackgroundColor(getResources().getColor(R.color.Blanco));
            if(instrumento.getText().equals("piano")) { 
                mp.setLooping(true);
            }
            break;
        case MotionEvent.ACTION_UP:
            mp.stop();

            ponerColor(colorin);
    }
}

最后一行调用一个方法再次放置按钮的原始颜色,非常感谢

1 个答案:

答案 0 :(得分:0)

你的守则只有一个小错误: 您应该将mp.stop();替换为mp.pause();

这就是全部。

最好是这样但是:

if (mp.isPlaying()){
mp.pause();
}


....


if (!mp.isPlaying()){
mp.start();
}

...


if (!mp.isLooping()){
mp.setLooping(true);
}

我还应该让你知道mp.stop()停止播放媒体,这很好,但只有当你想要整个MediaPlayer忘记正在播放的歌曲而我们只想改变音频时,才会使用停止,重置MEdia播放器并启动另一个音频。

希望你找到这个有用的