MediaRecorder录制音频文件
使用手机麦克风硬件和Android系统MediaRecorder类实现。
步骤:
- 在activity_main文件上添加两个按钮,分别为开始按钮和停止按钮。
//获取按钮
record = (Button)findViewById(R.id.record);
stop =(Button)findViewById(R.id.stop);
record.setOnClickListener(this);
stop.setOnClickListener(this);
2.创建MeidaRecorder对象并实例化。
MediaRecorder mRecorder;
mRecorder = new MediaRecorder();
3.创建音频文件
//创建音频文件
soundFile = new File(Environment.getExternalStorageDirectory().getCanonicalFile()+"/sound.mp3");
这里我将文件保存路径设为SD卡根目录下的sound.mp3文件
4.设置声音来源
//设置声音来源(麦克风) mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
声音来源为手机麦克风
5.设置音频输出格式
//设置音频输出格式 mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
6.设置编码模式
//设置编码模式 mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
7.设置保存文件路径
mRecorder.setOutputFile(soundFile.getAbsolutePath());
8.准备录制
mRecorder.prepare();
9.开始录制
//录音开始
mRecorder.start();
10.停止录音并释放资源。
//停止录音
mRecorder.stop();
mRecorder.release();
mRecorder=null;
11.设置AndroidMannifest.xml配置文件
<uses-permission android:name="android.permission.RECORD_AUDIO" />
授予录音权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
授予写入路径权限
成果展示
如题所示,这个sound.mp3文件就是录制完成的文件,可以直接通过手机播放器进行播放。
录音完成!
MediaRecorder参数设置
- setAudioChannels(int numChannels) 设置录制的音频通道数。
- setAudioEncoder(int audio_encoder) 设置audio的编码格式
- setAudioEncodingBitRate(int bitRate) 设置录制的音频编码比特率
- setAudioSamplingRate(int samplingRate) 设置录制的音频采样率。
- setAudioSource(int audio_source) 设置用于录制的音源。
- setAuxiliaryOutputFile(String path) 辅助时间的推移视频文件的路径传递。
- setAuxiliaryOutputFile(FileDescriptor fd)在文件描述符传递的辅助时间的推移视频
- setCamera(Camera c) 设置一个recording的摄像头
- setCaptureRate(double fps) 设置视频帧的捕获率
- setMaxDuration(int max_duration_ms) 设置记录会话的最大持续时间(毫秒)
- setMaxFileSize(long max_filesize_bytes) 设置记录会话的最大大小(以字节为单位)
- setOutputFile(FileDescriptor fd) 传递要写入的文件的文件描述符
- setOutputFile(String path) 设置输出文件的路径
- setOutputFormat(int output_format) 设置在录制过程中产生的输出文件的格式
- setPreviewDisplay(Surface sv) 表面设置显示记录媒体(视频)的预览
- setVideoEncoder(int video_encoder) 设置视频编码器,用于录制
- setVideoEncodingBitRate(int bitRate) 设置录制的视频编码比特率。
- setVideoFrameRate(int rate) 设置要捕获的视频帧速率
- setVideoSize(int width, int height) 设置要捕获的视频的宽度和高度
- setVideoSource(int video_source) 开始捕捉和编码数据到setOutputFile(指定的文件)
视频编码格式:default,H263,H264,MPEG_4_SP
获得视频资源:default,CAMERA
音频编码格式:default,AAC,AMR_NB,AMR_WB,
获得音频资源:defalut,camcorder,mic,voice_call,voice_communication,voice_downlink,voice_recognition, voice_uplink;
输出方式:amr_nb,amr_wb,default,mpeg_4,raw_amr,three_gpp.
下载地址
Android录音机
新手可以学习使用,这里按钮我用的是最原始的Button,觉得丑可以自行改成ImageButton。