У меня есть (android) AudioRecord
объект.Я хочу узнать продолжительность записи звука - после звонка AudioRecord#startRecording
.
Конечно, я мог бы сделать:
Instant start = Instant.now();
recorder.startRecording();
Duration duration = Duration.between(start, Instant.now());
Однако, это просто грязно.На самом деле это не измерение длительности собранного звука.
Похоже, в классе нет метода для получения этой продолжительности.
Следующий лучший - не хакерский- решение, которое я могу придумать, - это подсчитать количество прочитанных фрагментов (используя AudioRecord#read(byte[], int, int
).Прежде чем использовать частоту дискретизации - или какой-то другой фрагмент метаданных - для интерполяции длительности.
Я думаю, что я мог бы также собрать звук, который я прочитал до сих пор, используя тот же read
метод, в буфер в памяти.Преобразуйте это в AudioTrack
, а затем получите длительность этой звуковой дорожки - однако, это кажется намного дороже, чем предыдущее решение
Какое наиболее выполнимое решение?