Невозможно получить медиа-рекордер для записи на высокой частоте дискретизации - PullRequest
0 голосов
/ 05 февраля 2019

Для проекта мне нужно сделать приложение для Android, чтобы записывать амплитуду звука с высокой частотой дискретизации (например, 10 выборок в миллисекунду). По какой-то причине выходные данные приложения возвращают выборку только каждые 10 миллисекунд или меньше.

mediaRecorder=new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setAudioEncodingBitRate(128000);
mediaRecorder.setAudioSamplingRate(96000);
mediaRecorder.setOutputFile(AudioSavePathInDevice);

Я определил это, сохранив данные о времени и амплитуде.

Я сохранил свои данные амплитуды и свои временные данные

final Runnable updateSoundLevel = new Runnable() {
@Override
public void run() {
    if (SoundRecording==true){
    handler.postDelayed(this, 0);

    Amplitude = mediaRecorder.getMaxAmplitude();
    longTime= (System.nanoTime()-startTime)/1000000;
    int intTime=(int) longTime;
    listAmplitude.add(Amplitude);
    listTime.add(intTime);
    addEntry(intTime,Amplitude); // adding entry to graph
    ... rest of program

1 Ответ

0 голосов
/ 05 февраля 2019

Я нашел ошибку,

Процесс добавления записи в мой график был слишком долгим.

...