我刚按下按钮就播放完声音
但我的声音很短,例如“哔哔”,短于1秒
如何按下按钮才能播放声音,直到按下按钮?
bt = (Button)findViewById(R.id.clickme);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.beep);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mp.start();
}
});
最佳答案
您可以使用以下代码:
bt.setOnTouchListener(this);
@Override
public boolean onTouch(View arg0, MotionEvent event) {
switch (event.getAction() ) {
case MotionEvent.ACTION_DOWN:
System.out.println("touch");
mp.setLooping(true);
mp.start();
break;
case MotionEvent.ACTION_UP:
System.out.println("up");
mp.pause();
break;
}
return true;
}
我进行了一些研究,发现Android
Mediaplayer
在循环播放无间隙声音时存在问题。看到这个:Gapless Playback with android MediaPlayer
我也找到一些解决方案:
您也可以使用以下类:查看其是否有效。
public class LoopMediaPlayer {
public static final String TAG = LoopMediaPlayer.class.getSimpleName();
private Context mContext = null;
private int mResId = 0;
private int mCounter = 1;
private MediaPlayer mCurrentPlayer = null;
private MediaPlayer mNextPlayer = null;
public static LoopMediaPlayer create(Context context, int resId) {
return new LoopMediaPlayer(context, resId);
}
private LoopMediaPlayer(Context context, int resId) {
mContext = context;
mResId = resId;
mCurrentPlayer = MediaPlayer.create(mContext, mResId);
mCurrentPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mCurrentPlayer.start();
}
});
createNextMediaPlayer();
}
private void createNextMediaPlayer() {
mNextPlayer = MediaPlayer.create(mContext, mResId);
mCurrentPlayer.setNextMediaPlayer(mNextPlayer);
mCurrentPlayer.setOnCompletionListener(onCompletionListener);
}
private MediaPlayer.OnCompletionListener onCompletionListener = new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.release();
mCurrentPlayer = mNextPlayer;
createNextMediaPlayer();
Log.d(TAG, String.format("Loop #%d", ++mCounter));
}
};
}
使用它只是调用
LoopMediaPlayer.create(context, R.raw.sound_file_name);
mp.setLooping(true);
的含义
关于android - Android按下按钮可长时间播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41311860/