我正在尝试在我的应用程序中录制音频 按下按钮
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) {
}
您可以使用以下代码。
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 = Environment.getExternalStorageDirectory() + "/Android/data/" + context.getApplicationContext().getPackageName() + "/files/" + "myrecording.m4a";
给了我错误
Android 设备不需要具有响应该Intent
操作的活动。
当我从Play商店安装任何录音机时,此错误消失了,但是录制音频后它不会返回任何内容。它停留在记录器窗口上。
显然,该应用程序有一个错误。
还有我必须写什么才能获取该音频文件并将其上传到服务器
引用RECORD_SOUND_ACTION
的文档,输出是"如果录制成功,则存储在媒体库中的录制声音的 uri"。IOW,在交付给onActivityResult()
的Intent
上呼叫getData()
,这应该是指向录制音频的Uri
。请注意,这不必表示文件系统上的文件,更不用说您可以访问的文件了。