MediaRecorder类是Android提供的用来录制音频的组件,其使用步骤基本如下 1 :

  • 创建MediaRecorder对象
  • 调用MediaRecorder对象的setAudioSource()方法来设置声音来源,一般传入MediaRecorder.AudioSource.MIC参数来指定录制来自麦克风的声音
  • 调用MediaRecorder对象的setOutputFormat()设置录制音频的格式
  • 调用MediaRecorder对象的setAudioEncoder()、setAudioEncodingBitRate(int bitRate)、setAudioSamplingRate(int samplingRate)设置所录声音的编码格式、编码位率、采样率等等,这些参数可以控制录制声音的品质。
  • 调用MediaRecorder的setOutputFile(String path)方法设置录制的音频文件的保存位置。
  • 调用MediaRecorder的prepare()方法准备录制
  • 调用MediaRecorder的start()方法开始录制
  • 调用MediaRecorder的stop()方法停止录制,并在结束后使用release()方法释放资源

我们创建一套布局

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
    <Button
        android:id="@+id/rRecorder"
        android:text="按下按钮录制" />
    <TextView
        android:text="0s"
        android:id="@+id/rTimer" />
</RelativeLayout>
class RecorderActivity : AppCompatActivity() {
    val directory: String = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).absolutePath
    val recorder = MediaRecorder()
    var isPause = true
    var time = 0
    val loop: ThreadUtils.Loop = ThreadUtils.Loop(1000).loop {
        if (!isPause) {
            rTimer.text = "${time++}"
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_recoder)
        rRecorder.setOnTouchListener { view, motionEvent ->
            when (motionEvent.action) {
                MotionEvent.ACTION_DOWN -> {
                    start()
                MotionEvent.ACTION_UP -> {
                    pause()
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC)
        recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB)
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB)
        if (Build.VERSION.SDK_INT >= 10) {
            recorder.setAudioSamplingRate(44100)
            recorder.setAudioEncodingBitRate(96000)
        } else {
            // older version of Android, use crappy sounding voice codec
            recorder.setAudioSamplingRate(8000)
            recorder.setAudioEncodingBitRate(12200)
        recorder.setOutputFile("$directory/${DateUtils.getTimeStamp()}.amr")
        recorder.prepare()
    fun start() {
        if (isPause) {
            isPause = false
            recorder.start()
            loop.start()
    fun pause() {
        if (!isPause) {
            isPause = true
            //recorder.pause() API 24
    fun stop() {
        loop.destroy()
        recorder.stop()
        recorder.release()
    override fun onDestroy() {
        stop()
        super.onDestroy()
 
  1. 李刚.疯狂安卓讲义.电子工业出版社.453-456
文章目录前言1 视频参数1.1 videosize——图像图像分辨率1.2 videoFrameRate——视频帧率1.3 videoBitRate——视频码率1.4 videoEncode——视频编码类型1.5 log2 音频参数2.1 audioChannels——声道数2.2 audioSampleRate——音频采样率2.3 audioBitRate——音频码率2.4 audioEncoder——音频编码类型 应用层设置音视频参数 videoFrameHeight videoFra 您将AudioEncodingBitRate设置得太低.我犯了同样的错误:-)这似乎有效:MediaRecorder recorder = new MediaRecorder();recorder.setAudioSource(MediaRecorder.AudioSource.MIC);if (Build.VERSION.SDK_INT >= 10) {recorder.setAudioS... 录制音频 文章目录录制音频1、AndroidMediaRecorder架构详解2、MediaRecorder状态图3、 使用MediaRecorder录制视频基本步骤如下:3.1.调用new MediaRecorder()创建MediaRecorder对象。3.2 调用MediaRecorder对象的setAudioSource()方法设置声音来源,3.3. 调用MediaRecorder对象的setOutputFormat()方法设置输出文件的格式。3.4. 设置所录制音频和视频的编码格式、编码位率等 转自:http://www.cnblogs.com/Amandaliu/archive/2013/02/04/2891604.html Android提供了两个API用于实现录音功能:android.media.AudioRecord、android.media.MediaRecorder。     网上有很多谈论这两个类的资料。现在大致总结下: 1、AudioRecord 1.简介MediaRecorder类是Android sdk提供的一个专门用于音视频录制,一般利用手机麦克风采集音频,摄像头采集图片信息。2.MediaRecorder主要方法2.1. 方法:setAudioChannels(int numChannels) 作用:设置录制音频通道数。2.2.方法:setAudioEncoder(int audio_encoder) 作用:设置audio的编码格... 在Android系统中,录像官方使用的是MediaRecorder,这也是录像的正确姿势.因为系统已经帮你控制了很多复杂流程,复杂的转码操作,总之…当然,矫情的你也可以使用MediaCodec录制,这样就可以单独控制音频和视频了. 您可以移步至:http://blog.csdn.net/angcyo/article/details/51043367 查看相关资料;竟然是官方的东西, 为什么文章标题 AudioRecord和MediaRecorder两种都可以录制音频MediaRecorder已实现大量的封装,操作起来更加简单,而AudioRecord使用起来更加灵活,能实现更多的功能。1.AudioRecord: 优点:可以实现语音的实时处理,进行边录边播,对音频的实时处理。 缺点:输出的是PCM的语音数据,如果保存成音频文件是不能被播放器播放的。要用到AudioTrack这个去进行处理 public void startRecord() {         mediarecorder = new MediaRecorder();// 创建mediarecorder对象         mCamera = getCameraInstance();         Parameters parameters = mCamera.getParameters();  一、问题代码private void initRecord() throws IOException { mMediaRecorder = new MediaRecorder(); mMediaRecorder.reset(); if (mCamera != null) mMediaRecorder.setCamera(mCam 为了在 Android 应用中录制声音,Android提供了 MediaRecorder 类,关于MediaRecorder的详解大家可以参考《Android开发之MediaRecorder类详解》。 使用MediaRecorder 录制声音的步骤: 1) 创建 MediaRecorder 对象。 2) 调用MediaRecorder对象的setAudioSource()方法设置声音来源,