9

我正在开发应用程序,它将记录用户的声音并将文件保存在 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){




}
4

2 回答 2

8

Android 开发者文档中有一个如何使用 MediaRecorder 进行音频捕获的示例。

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

确保为您的应用程序提供所需的权限。至少它需要RECORD_AUDIOWRITE_EXTERNAL_STORAGE

您还必须查看这些教程:

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

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

于 2012-06-05T21:48:04.573 回答
2

如果你真的想通过语音识别 API 录制音频,那么你可以使用RecognitionService.Callback它有一个方法

void bufferReceived(byte[] buffer)

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

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

于 2012-06-06T16:38:41.720 回答