使用刻录机录制音频,然后将其上传到服务器android

时间:2017-08-05 19:28:34

标签: android audio server audio-recording onactivityresult

我正在尝试在我的应用中录制音频 按下按钮

    Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION); 
    startActivityForResult(intent, ACTIVITY_RECORD_SOUND);

但它给了我错误

    android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.provider.MediaStore.RECORD_SOUND }

但是当我从Play商店安装任何录音机时,这个错误消失了,但在录制音频后它没有返回任何内容。它留在录音机窗口。

我还需要编写以获取该音频文件并将其上传到服务器

        @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

}

2 个答案:

答案 0 :(得分:0)

  

但它给了我错误

Android设备无需拥有响应该CanBuildFrom操作的活动。

  

当我从Play商店安装任何录音机时,此错误消失了,但在录制音频后,它不会返回任何内容。它留在录音机窗口。

该应用程序显然存在错误。

  

我还需要编写以获取该音频文件并将其上传到服务器

引用the documentation for RECORD_SOUND_ACTION,如果录制成功,则输出为"对存储在媒体库中的录制声音的uri;"。 IOW,在传递给Intent的{​​{1}}上拨打getData(),这应该是指向录制音频的Intent。请注意,这不必表示文件系统上的文件,更不用说可以访问的文件了。

答案 1 :(得分:0)

您可以使用以下代码。

MediaRecorder recorder = new MediaRecorder();
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        recorder.setOutputFile(path);
//            recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);         for mp3 audio
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.prepare();
recorder.start();

和path可以是文件存在的任何地方。例如。

path = Environment.getExternalStorageDirectory() + "/Android/data/" + context.getApplicationContext().getPackageName() + "/files/" + "myrecording.m4a";