Следующий код (на самом деле не написанный мной) используется для записи данных файла wav через inputStream в AudioTrack
Android (неважно для моего вопроса ...)
int bytesread = 0, ret = 0;
int size = (int) file.length();
at.play();
while (bytesread < size) {
ret = in.read(byteData, 0, count);
if (ret != -1) { // Write the byte array to the track
at.write(byteData, 0, ret);
bytesread += ret;
}
}
Если вы используете класс Java File
, вы можете использовать File.length()
, чтобы проверить размер файла и увидеть, когда прекратить потоковую передачу / воспроизведение. Однако я сохранил свои аудиофайлы в андроиде Resources (R.raw.example)
, и чтобы открыть его, я использую:
in = mResources.openRawResource(ResId);
, что дает мне InputStream
. Это делает меня неспособным использовать что-либо подобное File.length()
, и поэтому я не знаю, когда файл был воспроизведен.
Кто-нибудь знает, как добиться чего-то похожего в первом примере?