Android: запись голоса и сохранение звука

Я работаю над приложением, которое записывает голос пользователя и сохраняет файл на 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){ } 

Пример использования аудиозахвата с использованием MediaRecorder в документации для разработчиков Android.

Я бы рекомендовал сохранить файлы на SD-карте, а затем проверить код вашей галереи на SD-карте, чтобы посмотреть, какие файлы будут отображаться. Вы можете получить каталог SD-карты, используя метод Environment.getExternalStorageDirectory () . Лучше всего сохранить ваши файлы в подкаталоге корневого каталога SD Card.

Убедитесь, что вы предоставили своим приложениям необходимые разрешения . По крайней мере, для этого потребуется RECORD_AUDIO и WRITE_EXTERNAL_STORAGE .

Также вы должны увидеть эти учебники:

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

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

Если вы действительно хотите записать звук через API распознавания речи, вы можете использовать RecognitionService.Callback, который имеет метод

 void bufferReceived(byte[] buffer) 

Это дает вам доступ к записанному звуковому буферу, когда речь записывается и распознается. (Однако информация о частоте выборки не предоставляется). Затем вы можете сохранить полученные буферы в файл для последующего воспроизведения. Я думаю, что приложения для клавиатуры используют этот вызов для отображения формы записанной речи. Вы должны сами реализовать пользовательский интерфейс.

Голый RecognizerIntent.ACTION_RECOGNIZE_SPEECH просто возвращает набор слов / фраз без звука.