Я пытаюсь записать звук с микрофона на эмуляторе Android с помощью этого кода:
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(Environment.getExternalStorageDirectory() + "/test/test.3gp");
try {
recorder.prepare();
}
catch (IOException io) {
Log.v(LOG_TAG, "Could not prepare the audio " + io.getMessage());
}
recorder.start();
Для остановки звука это код:
recorder.stop();
recorder.reset();
recorder.release();
Процесс записи работает нормально, но в результате получается искаженный звук. Когда я записываю звук продолжительностью 60 секунд и проигрываю его, его продолжительность отображается как 120 секунд. Измерение неточное, но это просто для того, чтобы дать вам представление.
На моем эмуляторе работает только кодировщик AMR_NB. Я пробовал разные форматы вывода, но результат всегда был одинаковым.
Это ограничение эмулятора или я тут что-то не так делаю?
Изменить 1: Я тоже пробовал класс AudioRecord, и результат был таким же перетаскиванием звука.
Спасибо.