我正在Android Studio中编写应用程序,我需要在两个不同的设备上同步开始录制音频。我的程序必须根据声源的距离检测两台设备之间的延迟。
不幸的是,即使我的程序有一个非常精确的计时器并在给定时间发送recorder.start(),在时间和实际开始录音之前会有一段延迟(小于0.5秒)。 / p>
有没有办法测量延迟,提前开始录音? 如果没有,有什么方法可以消除延迟吗?
我已经看到了关于延迟的问题,但解决方法是简单地确保录制已开始,然后开始发出声音,但它对我没有帮助,因为我必须开始录制确切同时在两个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;
^当时间达到设定值时,会发生此部分。