Я делаю приложение для Android, которое записывает звук с наушника Bluetooth. Все работает нормально, и приложение может записывать звук через динамик.
Однако мне понадобится точная (или очень близкая к точной) миллисекунда, когда был записан первый аудиосигнал, если аудиозаписи будут мне полезны. Я попытался получить метку времени с помощью System.currentTimeMillis();
сразу после вызова .start()
в MediaRecorder, как упоминалось в этом вопросе SO < /а>.
К сожалению, когда я использую этот метод для получения времени начала моей аудиозаписи, он часто сильно отличается (даже на 100 мс или более).
Получая время до вызова MediaRecorder.start()
и после вызова, например:
audioStartTime1 = System.currentTimeMillis();
recorder.start();
audioStartTime2 = System.currentTimeMillis();
Я вижу, что между audioStartTime1
и audioStartTime2
проходит где-то от 50 до 150 мс. Кажется, запуск MediaRecorder занимает довольно много времени. Это не было бы проблемой, если бы запись началась сразу после возвращения recorder.start()
, однако запись не начинается сразу после возвращения recorder.start()
, но все же требуется некоторое время, пока наушник Bluetooth действительно не начнет запись. Эта задержка каждый раз разная и может составлять более 100 мс.
Есть ли способ получить более точную временную метку для первого аудиосэмпла?
Возможно, сохраните время, когда MediaRecorder получает первый пакет данных через Bluetooth. Как бы я это сделал?
Я действительно ценю некоторую помощь.
Спасибо.
.start()
, но просто записывает тишину, пока ничего не поступает от наушника Bluetooth? - person ChocolatNugget   schedule 15.05.2020