gpt4 book ai didi

java - 如何将音频从一秒循环到另一秒

转载 作者:行者123 更新时间:2023-12-02 00:42:12 26 4
gpt4 key购买 nike

我正在制作一个带有我想要循环播放的声音的应用程序。

问题在于,每次使用 mediaPlayer.setLooping(true); 播放音频时,音频都会有一种淡入和淡出的现象;它们使循环听起来非常糟糕,因为当它结束和再次开始时你听得非常清楚。

我希望能够从特定的一秒播放到另一秒,例如能够从第二个 00:00:04 循环到第二个 00:00:14,从而听不到淡入的声音并淡出。

目前我正在使用此代码来播放音频。然后在按钮中,我调用您接下来看到的电话

    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) 的方法,它将在 start() 方法之前寻找 mediaPlayer 位置

private void startPosition(int initialTime){
mMediaPlayer.seekTo(initialTime); //time in millisecond, e.g 4sec = 4000
}

mMediaPlayer.start()方法之前调用此方法。

现在创建一个将无限运行的线程,并在达到上限时将您的媒体播放器位置返回到初始位置。编辑将您的 playAudio() 方法替换为以下内容,并将 upperTimerLimit 更改为特定值,例如 14000(14 秒)。

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();
}

Create the thread right after mMediaPlayer.start() There is no need of mMediaPlayer.setLooping(true); in your playAudio() method.

希望这会起作用。

关于java - 如何将音频从一秒循环到另一秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57926607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com