Android:录音和保存音频

时间:2012-06-05 21:36:33

标签: android android-intent android-mediaplayer voice-recognition android-audiomanager

我正在开发应用程序,它将记录用户的声音并将文件保存在SD卡上,然后允许用户再次收听音频。

我能够允许用户使用RecognizerIntent录制他的声音,但我无法弄清楚如何保存音频文件并允许用户听到音频。如果有人可以帮助我,我将不胜感激。我在下面显示了我的代码:

    // Setting up the onClickListener for Audio Button
    attachVoice = (Button) findViewById(R.id.AttachVoice_questionandanswer);
    attachVoice.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
        Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        voiceIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        voiceIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Please Speak");
        startActivityForResult(voiceIntent, VOICE_REQUEST);
        }
    });

protected void onActivityResult(int requestCode, int resultCode, Intent data) {


  if(requestCode == VOICE_REQUEST && resultCode == RESULT_OK){




}

2 个答案:

答案 0 :(得分:8)

有一个如何使用Android Developer Documentation.

中的MediaRecorder进行音频捕获的示例

我建议将文件保存在SD卡上,然后让您的图库代码检查SD卡以查看要显示的文件。您可以使用Environment.getExternalStorageDirectory()方法获取SD卡的目录。最好将文件保存在SD卡根目录的子目录中。

确保为应用程序提供所需的Permissions。至少需要RECORD_AUDIOWRITE_EXTERNAL_STORAGE

此外,你必须看到这些教程:

http://www.androiddevblog.net/android/android-audio-recording-part-1

http://www.androiddevblog.net/android/android-audio-recording-part-2

答案 1 :(得分:2)

如果确实希望通过语音识别API录制音频,那么您可以使用具有方法的RecognitionService.Callback

void bufferReceived(byte[] buffer)

这使您可以在录制和识别语音时访问录制的音频缓冲区。 (但是没有提供有关采样率的信息。)然后,您可以将获得的缓冲区保存到文件中以供以后播放。我认为键盘应用程序使用此调用来显示录制语音的波形。你必须自己实现UI。

RecognizerIntent.ACTION_RECOGNIZE_SPEECH只返回一组没有任何音频的单词/短语。