Как упоминал @Michael, он блокируется, пока данные не будут помещены в очередь.Это то же значение, что и в описании для WRITE_BLOCKING
;он блокируется до тех пор, пока данные не будут записаны во внутренний буфер (тот, для которого вы указали размер во время построения).
write( ..., 2048, WRITE_BLOCKING )
будет блокироваться приблизительно на 2048 * (1000,0 /44100) секунд, если буфер уже заполнен (данные еще не воспроизводились).Если write()
блокируется на любой промежуток времени, как только он вернется, вы можете быть уверены, что внутренний буфер максимально заполнен.При отсутствии каких-либо дальнейших действий write()s
, AudioTrack
будет продолжать снабжать микшер звуковым выходом до тех пор, пока не будет исчерпан внутренний буфер.
Предполагается, что этот дизайн (внутренний буфер) поможет вам избежать буфераопустошения.Чем больше ваш буфер, тем дольше вы можете обходиться без write()
.