美文网首页
Android 录音工具类 MediaRecorder

Android 录音工具类 MediaRecorder

作者: JYangkai | 来源:发表于2019-04-01 20:51 被阅读0次

    正文

    今天我们来学习下如何使用Android的录音类MediaRecorder

    我们在开发一些软件,比如即时通信的软件,需要发送语音的功能,在发送之前我们需要把用户通过麦克风输入的声音录制下来,那么就需要借助Android自带的MediaRecorder进行开发,当然,Android还提供了一个更专业的类AudioRecord,它可以更加专业的帮助我们处理音频,但是AudioRecord使用起来比较麻烦,所有,为了方便,我们可以使用MediaRecorder进行开发,好了,废话不多说,直接开始

    创建一个录音工具类

    MyMediaRecorder.java

    public class MyMediaRecorder {
    
        private static MyMediaRecorder instance;
    
        private MediaRecorder mMediaRecorder;
    
        private String filePath;
    
        private MyMediaRecorder() {
    
        }
    
        public static synchronized MyMediaRecorder getInstance() {
            if (null == instance) {
                synchronized (MyMediaRecorder.class) {
                    if (null == instance) {
                        instance = new MyMediaRecorder();
                    }
                }
            }
            return instance;
        }
    }
    

    我们把这个工具类做成单例模式,方便我们调用相关的方法

    开始录音

    /**
     * 开始录音
     *
     * @param path
     */
    public void startRecord(String path) {
        if (null == mMediaRecorder) {
            mMediaRecorder = new MediaRecorder();
        }
        try {
            mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
            mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
            filePath = path;
            mMediaRecorder.setOutputFile(filePath);
            mMediaRecorder.prepare();
            mMediaRecorder.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    

    可以看到,开始录音比较容易理解,我们先获取mMediaRecorder的实例,然后对其进行一些配置,比如

    • 音频源(setAudioSource)
    • 输出格式(setOutputFormat)
    • 编码(setAudioEncoder)
    • 输出路径(setOutputFile)

    接着调用prepare()进行准备,最后调用start()方法开始录音,很简单不是吗

    停止录音

    /**
     * 结束录音
     */
    public void stopRecord() {
        try {
            mMediaRecorder.stop();
            mMediaRecorder.release();
            mMediaRecorder = null;
            filePath = "";
        } catch (RuntimeException e) {
            mMediaRecorder.reset();
            mMediaRecorder.release();
            mMediaRecorder = null;
            File file = new File(filePath);
            if (file.exists()) {
                file.delete();
            }
            filePath = "";
        }
    }
    

    结束录音也比较简单,我们只需要将相应的资源释放掉就可以了
    下面是完整的代码
    MyMediaRecorder.java

    package com.yk.jchat.utils;
    
    import android.media.MediaRecorder;
    
    import java.io.File;
    import java.io.IOException;
    
    public class MyMediaRecorder {
    
        private static MyMediaRecorder instance;
    
        private MediaRecorder mMediaRecorder;
    
        private String filePath;
    
        private MyMediaRecorder() {
    
        }
    
        public static synchronized MyMediaRecorder getInstance() {
            if (null == instance) {
                synchronized (MyMediaRecorder.class) {
                    if (null == instance) {
                        instance = new MyMediaRecorder();
                    }
                }
            }
            return instance;
        }
    
        /**
         * 开始录音
         *
         * @param path
         */
        public void startRecord(String path) {
            if (null == mMediaRecorder) {
                mMediaRecorder = new MediaRecorder();
            }
            try {
                mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
                mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
                filePath = path;
                mMediaRecorder.setOutputFile(filePath);
                mMediaRecorder.prepare();
                mMediaRecorder.start();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 结束录音
         */
        public void stopRecord() {
            try {
                mMediaRecorder.stop();
                mMediaRecorder.release();
                mMediaRecorder = null;
                filePath = "";
            } catch (RuntimeException e) {
                mMediaRecorder.reset();
                mMediaRecorder.release();
                mMediaRecorder = null;
    
                File file = new File(filePath);
                if (file.exists()) {
                    file.delete();
                }
                filePath = "";
            }
        }
    
    }
    

    好了,今天的录音工具类就到讲到这里,希望大家喜欢。

    相关文章

      网友评论

          本文标题:Android 录音工具类 MediaRecorder

          本文链接:https://www.haomeiwen.com/subject/tkbbbqtx.html