Android: запись звука с помощью MediaRecorder — файл не воспроизводится

Я внедрил пример кода прямо из Google с помощью MediaRecorder.

Также я добавил некоторые свойства и установил тип файла «.mp3» (я знаю, что он не создает настоящий mp3, но «.3gp» тоже не имеет для меня смысла, я записываю аудио, а не видео ..)

Теперь моя проблема в том, что если я хочу воспроизвести файл, он ничего не делает (0:00 сек). Я проверил свойства файла, он занимает место в хранилище.

ДОПОЛНИТЕЛЬНЫЙ:

В любом случае я хочу реализовать визуальную обратную связь во время записи. Horizon кажется единственной красивой библиотекой. Но используя Horizon, вы должны кормить его буфером от Audiorecorder, что невозможно с MediaRecoder. Кто-нибудь знает красивую библиотеку, которая визуализирует текущую запись звука с помощью MediaRecorder?

Большое тебе спасибо

private void startRecording() {
    if(this.mRecorder != null)
        return;

    String fileToWrite = this.ProjectDirPath + File.separator + GetToday() + this.fileTpye;

    mRecorder = new MediaRecorder();
    mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mRecorder.setOutputFile(fileToWrite);
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
    mRecorder.setAudioSamplingRate(16000);
    mRecorder.setAudioEncodingBitRate(44100);
    mRecorder.setAudioChannels(1);

    try {
        mRecorder.prepare();
    }catch (IOException e) {
        Log.e("startRecording()", "prepare() failed");
    }

    initRecorder();
    mRecorder.start();
    isRecording = true;
}



private void stopRecording() {
    if(this.mRecorder == null)
        return;
    else{
        try{
            mRecorder.stop();
            mRecorder.release();
            mRecorder = null;
            isRecording = false;
            this.updateListView();
        } catch(Exception e){
            mRecorder = null;
            isRecording = false;
        }
    }
}

public static String GetToday(){
    Date presentTime_Date = Calendar.getInstance().getTime();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    return dateFormat.format(presentTime_Date);
}

Разрешения устанавливаются в манифесте и во время выполнения.


person nixn    schedule 10.11.2017    source источник


Ответы (1)


Наконец нашел себе одну хорошую библиотеку.

https://github.com/adrielcafe/AndroidAudioRecorder?utm_source=android-arsenal.com&utm_medium=referral&utm_campaign=4099

person nixn    schedule 10.11.2017