Я пишу приложение в Android Studio, где мне нужно синхронно начать запись звука на 2 разных устройствах.Моя программа должна будет определить задержку между двумя устройствами на основе расстояния до источника звука.
К сожалению, даже несмотря на то, что моя программа имеет очень точный таймер и отправляет Recorder.start () в указанное время,есть задержка (менее 0,5 секунды) до времени и фактического начала аудиозаписи.
Есть ли способ измерить задержку, чтобы начать запись немного раньше?Если нет, есть ли способ устранить задержку?
Я видел вопрос о задержке, но решением было просто убедиться, что запись началась, а затем начать издавать звуки, но это не так.Это мне не поможет, поскольку я должен начать запись одновременно с точного 1008 * на двух устройствах Android.Буду очень признателен за любую помощь или предложения.
Вот мой код:
int i = 0;
while((wavFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/JavaApps/"+"output" + i + ".mp4")).isFile())
i++;
finalName = Environment.getExternalStorageDirectory().getAbsolutePath()+"/JavaApps/"+"output" + i + ".mp4";
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
recorder.setOutputFile(wavFile.getAbsolutePath());
try {
recorder.prepare();
} catch (Exception e) {
e.printStackTrace();
}
^ все это происходит как подготовка, до начала записи
recorder.start();
try {
Thread.sleep(duration*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
recorder.stop();
recorder.release();
recorder = null;
^ эта часть происходит, когда время достигает установленного значения.