Android系统的录音功能MediaRecorder
MediaRecorder是Android系统自带的一种非常强大的音频录制的控件,可以录制声音,也可以通过调用Camera达到录制视频的效果。MediaRecorder包含了Audio和video的记录功能,在Android的界面上,Music和Video两个应用程序都是调用MediaRecorder实现的。MediaRecorder在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaRecorder程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Binder机制。
1.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(指定的文件) |
2、MediaRecorder中音视频编码格式和资源说明:
- 视频编码格式: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_gp
3、常用的一些设置和说明:
例如:
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //设置音频源为麦克风 recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置声音格式为3gp recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //设置编码为AMR recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //设置视频源为Camera recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); //设置视频输出格式为MP4 recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);//设置视频编码 recorder.setOutputFile(filePath); //设置视频输出路径
4、音频文件的录制:
1、在Mainfest中添加权限:
<!--网络权限 --> <uses-permission android:name="android.permission.INTERNET"/> <!--网sdcard卡写入权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!--录音权限 --> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <!--在SDCard中创建与删除权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
2、Xml文件的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:context="com.example.wls.mediarecoder.MainActivity"> <Button android:id="@+id/start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="开始录音" android:onClick="btnClick"/> <Button android:id="@+id/stop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="暂停录音" android:onClick="btnClick"/> <Button android:id="@+id/palyer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="播放录音" android:onClick="btnClick"/> </LinearLayout>
3、程序的实现:
public class MainActivity extends AppCompatActivity {private MediaRecorder mRecoder; private MediaPlayer mMediaPlayer; private String FileName = null; private Button mButtonPlayer; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); getWindow().setFormat(PixelFormat.TRANSLUCENT);//让界面横屏 requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉界面标题 //重新设置界面大小 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_main); //设置sdcard的路径 FileName = Environment.getExternalStorageDirectory().getAbsolutePath(); FileName += "/audiorecordtest.3gp"; init(); }private void init() {//new出录音对象 mRecoder = new MediaRecorder(); //设置Audio的音频源为麦克风 mRecoder.setAudioSource(MediaRecorder.AudioSource.MIC); //设置Audio录音的音频模式(输出格式) // mRecoder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); // mRecoder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); mRecoder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); //设置Audio录制音频的编码为AMR mRecoder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //设置录制的音频的存储路径 mRecoder.setOutputFile(FileName); mMediaPlayer = new MediaPlayer(); mButtonPlayer = (Button) findViewById(R.id.palyer); mButtonPlayer.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View v) {try {mMediaPlayer.setDataSource(FileName); mMediaPlayer.prepare(); mMediaPlayer.start(); } catch (IOException e) {e.printStackTrace(); }}}); }public void btnClick(View view){switch (view.getId()){case R.id.start:try {mRecoder.prepare(); mRecoder.start(); } catch (IOException e) {e.printStackTrace(); }break; case R.id.stop:mRecoder.stop();//停止录制 mRecoder.release();//释放资源 break; }} }
这样只要点击播放按钮就可以播放刚刚录制的声音文件了。
Android系统的录音功能MediaRecorder相关推荐
- 为android系统添加USB AUDIO设备的放音和录音功能
转载请注明出处:http://blog.csdn.net/adits/article/details/8242146 开发环境简介 1. 主机系统: Unbuntu10.10 2. android系统 ...
- 为android系统添加USB AUDIO设备的放音和录音功能(转载)
开发环境简介 1. 主机系统: Unbuntu10.10 2. android系统版本: 4.0.3(Linux kernel 3.0.8) 综述 android的音频系统非常庞大复杂:涉及到java ...
- android中实现录音功能,Android实现录音功能及播放语音功能
Android中实现录音功能其实很简单,直接调用的系统的就ok了,这里就不写实现的原理了,直接部署代码:所谓的实现就是用的MediaRecorder.服务器 录音功能代码:ide //开始录制 pri ...
- android 系统 ---(1) 框架的代码组织介绍
1.Android系统的层次如下: 2.项目目录简单分析如下: 3.telphony目录 文件 描述 CellIdentityCdma //描述电信通信标识 CellIdentityGsm 描述移动通 ...
- Android系统Audio框架介绍(一)
原址 音频基础知识 声音有哪些重要属性呢? 响度(Loudness) 响度就是人类可以感知到的各种声音的大小,也就是音量.响度与声波的振幅有直接关系. 音调(Pitch) 音调与声音的频率有关系,当声 ...
- Android系统Camera录像过程分析
最近调试系统Camera,遇到如下问题:在录像过程中,拔掉Camera:会出现应用程序卡死现象. 先说说之前的设计架构: 当用户拔掉Camera时,会给应用程序发送广播:当应用程序收到广播后调用A ...
- Android系统Audio框架介绍
音频基础知识 声音有哪些重要属性呢? 响度(Loudness) 响度就是人类可以感知到的各种声音的大小,也就是音量.响度与声波的振幅有直接关系. 音调(Pitch) 音调与声音的频率有关系,当声音的频 ...
- android 录音的格式转换,Android仿微信录音功能(录音后的raw文件转mp3文件)
现在很多时候需要用到录音,然后如果我们的App是ios和android两端的话,就要考虑录音的文件在两端都能使用,这个时候就需要适配,两端的录音文件都要是mp3文件,这样才能保证两边都能播放. 针对这 ...
- Android多媒体四:MediaRecorder录制视频短片
Android多媒体四:MediaRecorder录制视频短片 MediaRecorder除了可用于录制音频之外,还可用于录制视频,使用MediaRecorder录制视频与录制音频的步骤基本相同. 只 ...
最新文章
- mysql5.7 rmp_linux MySQL5.7 rpm安装(转)
- Android之关于Intent的Flag属性的讲解
- 069:ORM查询条件详解-isnull和regex
- bzoj 1827: [Usaco2010 Mar]gather 奶牛大集会【树形dp】
- 使用numba要注意的越界问题
- keil lib 只调用自己的函数_C语言学习篇(28)——函数库
- 基于Vue和axios的音乐播放器——悦听音乐效果展示及代码分享
- webscoket绑定php uid,Think-Swoole之WebSocket客户端消息解析与使用SocketIO处理用户UID与fd关联...
- boost::statechart模块自定义反应测试相关的测试程序
- spark运行时加载hive,hdfs配置文件
- 前端学习(510):多列布局
- redis 安装配置
- WinCE5.0下直接写屏操作与函数 CreateDIBSection() 的使用(转)
- 后端同同不肯给我算好的时间差给我,只好自己写了:
- 支持 RISC-V 芯片的 Android 系统来了!
- 在VC中使用Windows管道技术编程
- 计量笔记(三) | 线性模型的拟合优度检验
- 我所理解的协方差矩阵
- OpenShift 4 - 从 1.3G 到 50M,以最小化的可执行程序运行 Quarkus 微服务
- Python面向对象——矩形面积