Java 如何将音频从一秒循环到另一秒
我正在用我想要循环的声音制作一个应用程序 问题是每次使用mediaPlayer播放时,音频都会有一种淡入淡出的现象;它们使循环听起来非常糟糕,因为当循环结束和再次开始时,你都能完美地听到它 我希望能够将这些音频从一秒播放到另一秒,例如能够从第二个00:00:04循环到第二个00:00:14,因此不会听到淡入和淡出 目前,我正在使用此代码播放音频。然后在按钮中,我打电话给你,你会看到下一个Java 如何将音频从一秒循环到另一秒,java,android,Java,Android,我正在用我想要循环的声音制作一个应用程序 问题是每次使用mediaPlayer播放时,音频都会有一种淡入淡出的现象;它们使循环听起来非常糟糕,因为当循环结束和再次开始时,你都能完美地听到它 我希望能够将这些音频从一秒播放到另一秒,例如能够从第二个00:00:04循环到第二个00:00:14,因此不会听到淡入和淡出 目前,我正在使用此代码播放音频。然后在按钮中,我打电话给你,你会看到下一个 public void playAudio(int audioId) { /
public void playAudio(int audioId)
{
// stop the previous playing audio
if(mMediaPlayer != null && mMediaPlayer.isPlaying())
{
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
mMediaPlayer = MediaPlayer.create(this, audioId);
mMediaPlayer.start();
mMediaPlayer.setLooping(true);
}
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
playAudio(R.raw.sound1);
}
});
创建一个名为
startPosition(int initialTime)
的方法,该方法将查找mediaPlayer
position before start()方法
在mmediplayer.start()方法之前调用此方法
现在创建一个线程,它将无休止地运行,并在达到上限时将您的mediaplayer位置恢复到初始位置。
编辑
将playAudio()方法替换为以下方法,并将upperTimerLimit
更改为特定值,例如14000(14秒)
在mmediplayer.start()之后创建线程
不需要mMediaPlayer.setLooping(true)在playAudio()方法中编写>代码
希望这能起作用。你能把线程代码写得更清楚些吗?提前感谢:)它工作得很好!非常感谢,你让我开心了:DIf成功了,然后接受答案,这样其他用户就会受益
private void startPosition(int initialTime){
mMediaPlayer.seekTo(initialTime); //time in millisecond, e.g 4sec = 4000
}
public void playAudio(int audioId)
{
// stop the previous playing audio
if(mMediaPlayer != null && mMediaPlayer.isPlaying())
{
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
mMediaPlayer = MediaPlayer.create(this, audioId);
mMediaPlayer.start();
new Thread(new Runnable() {
public void run(){
while(true){
if(mMediaPlayer.getCurrentPosition()-UpperTimeLimit >=0){ //UpperTimeLimit should be in milliseconds. UpperTimerLimit is the specific second after which player should start again the sound.
startPosition(initialTime); //Call the startPosition(int initialTime)
}
}
}).start();
}