Quero gravar voz humana no meu telefone Android. Percebi que o Android tem duas classes para fazer isso: AudioRecord e MediaRecorder . Alguém pode me dizer qual é a diferença entre os dois e quais são os casos de uso apropriados para cada um?
Quero ser capaz de analisar a fala humana em tempo real para medir a amplitude, etc. Estou correto em entender que AudioRecord é mais adequado para essa tarefa?
Notei na página oficial do guia Android para gravação de áudio , que eles usam MediaRecorder sem menção de AudioRecord.
fonte
Pelo que entendi,
MediaRecorder
é uma caixa preta que fornece um arquivo de áudio compactado na saída eAudioRecorder
fornece apenas um fluxo de som bruto e você tem que compactá-lo sozinho.MediaRecorder
dá a você a amplitude máxima da última chamada dogetMaxAmplitude()
método para que você possa implementar um visualizador de som, por exemplo.Portanto, na maioria dos casos,
MediaRecorder
é a melhor escolha, exceto aqueles em que você deve fazer algum processamento de som complicado e precisa de acesso ao fluxo de áudio bruto.fonte
AudioRecorderer primeiro salva os dados no minBuffer, em seguida, eles são copiados de lá para o buffer temporário, no MediaRecorder são copiados para os arquivos. No AudioRecorder, precisamos da api setRecordPosition () para copiar os dados salvos na posição necessária, enquanto no MediaRecorder o ponteiro do arquivo faz esse trabalho para definir a posição do marcador. AudioRecorder pode ser usado para aqueles aplicativos executados em um emulador, isso pode ser feito fornecendo uma taxa de amostragem baixa, como 8000, enquanto usando o MediaRecorder o áudio não pode ser gravado usando o emulador. No AudioRecord, a tela hiberna após algum tempo, enquanto no MediaRecorder a tela não hiberna.
fonte