задержка записи - PullRequest
       14

задержка записи

0 голосов
/ 07 июня 2018

Я пишу приложение в 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;

^ эта часть происходит, когда время достигает установленного значения.

...