我正在尝试在我的应用中录制音频 按下按钮
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) {
}
答案 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";