亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將音頻從一秒循環到另一秒

如何將音頻從一秒循環到另一秒

隔江千里 2023-07-28 16:19:35
我正在制作一個帶有我想要循環播放的聲音的應用程序。問題是音頻有一種淡入和淡出的效果,每次使用 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);            }        });
查看完整描述

1 回答

?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

創建一個調用的方法,該方法將在 start() 方法之前startPosition(int initialTime)尋找位置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();

}

在 playAudio() 方法中mMediaPlayer.start() 不需要立即創建線程。mMediaPlayer.setLooping(true);


希望這會起作用。


查看完整回答
反對 回復 2023-07-28
  • 1 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號