MODE_STATIC模式AudioTrack的使用方法

来源:互联网 发布:网络监控用光纤方案图 编辑:程序博客网 时间:2024/05/03 04:39

使用MODE_STATIC模式的AudioTrack时,遇到了播放不正常的问题。

使用比较短的文件,发现开始几次,声音都没出来,到最后一次,感觉是把前面几次积累的声音一次播放出来了。


后来查了下资料,发现使用MODE_STATIC模式的AudioTrack的方法不对。


正确使用的方法如下:

...    if (NULL == mAudioOut) {  ...        mAudioOut = new AudioTrack(AudioSystem::TTS, VP_WAVEFILE_SAMPLERATE, AudioSystem::PCM_16_BIT, AudioSystem::CHANNEL_OUT_MONO,                                       minFrameCount > 4096 ? minFrameCount : 4096,                                       0, 0, 0, 0);        if (NULL == mAudioOut) {            return false;        }mAudioOut->write(m_bWaveBuf, dataSize);mAudioOut->start();    }    if (mAudioOut->stopped()) {mAudioOut->reload();                mAudioOut->start();    }else if (!mAudioOut->stopped()){mAudioOut->stop();mAudioOut->reload();mAudioOut->start();}........



参考了以下链接:

http://stackoverflow.com/questions/6049221/androids-audiotrack-mode-static-issues


其中的示例代码也展示一下:

public void play(){

    switch (super.getPlayState()) {    case AudioTrack.PLAYSTATE_PAUSED:    super.stop();        super.reloadStaticData();        super.play();        break;    case AudioTrack.PLAYSTATE_PLAYING:    super.stop();        super.reloadStaticData();        super.play();        break;    case AudioTrack.PLAYSTATE_STOPPED:        super.reloadStaticData();        super.play();        break;    }

}


    

原创粉丝点击