Chr*_*ton 16 streaming android audiotrack
我创建了一个简单的应用程序,它生成一个给定频率的方波,并在STREAM模式下使用AudioTrack播放它(STREAM_MUSIC).一切似乎工作正常,声音播放正常,但是当流完成后,我在日志中收到消息:
W/AudioTrack(7579):gainBuffer()轨道0x14c228禁用,重启......
即使在调用stop()函数后,我仍然会得到这些.我相信我根据AudioTrack所需的最小尺寸(在我的情况下为6x1024)正确设置了AudioTrack缓冲区大小.我用1024个短裤的较小缓冲区喂它.
我可以得到这些,我应该这样离开吗?
Chr*_*ton 15
好的,我认为问题已经解决了.当缓冲区未完全填充数据时(缓冲区欠载),将生成错误.我不知道超时是什么,但如果您遇到这种情况,请确保:
在缓冲区中有一些数据之前,不要调用play方法.
您可以足够快地生成数据以超过超时.
在使用数据为缓冲区提供数据之后,在调用stop()方法之前,请确保"last"缓冲区在超时之前完全填充了数据.
我通过总是等待一点(直到超时)然后发送1个充满零的缓冲区并最终调用stop()函数来处理最后一个问题.
请记住,即使您已准备好大块,也必须始终以较小的块发送缓冲区.它仍然困扰我一点,我不是100%肯定,如果这是正确的方式但错误消失所以我想我可以忍受:)
| 归档时间: |
|
| 查看次数: |
13236 次 |
| 最近记录: |