我使用AudioTrack
在Android上播放一些音频。有时我会得到' -4
'的返回值。来自write方法。
文档说它会返回
写入的短路数或ERROR_INVALID_OPERATION if 对象没有正确初始化,如果是,则为ERROR_BAD_VALUE 参数不能解析为有效的数据和索引。
" ERROR"的值AudioTrack中的常量是:
那么-4是什么意思?
这是代码......粗略
int bufferSize = AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioEncoding);
audioTrack = new AudioTrack(streamType, sampleRate, channelConfig, audioEncoding, bufferSize, audioMode);
if(audioTrack.getState() != AudioTrack.STATE_UNINITIALIZED){
audioTrack.play();
int response = audioTrack.write(data, 0, size);
}
答案 0 :(得分:2)
AudioTrack::write
调用obtainBuffer
的原生实现,如果obtainBuffer
返回错误,write
会返回相同的错误。
obtainBuffer
返回-EINTR
,以防AudioTrack
状态为STATE_STOPPING
且-EINTR
恰好为-4
时被调用所以我最好的猜测是你在赛道(由于某些原因)停止的时候进行了写作。