• MediaRecorder媒体录音机


    权限:

    1. <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    3. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    RECORD_AUDIO  录音
    WRITE_EXTERNAL_STORAGE  不加无法写入
    READ_EXTERNAL_STORAGE  不加录不全 

    代码:

    1. MediaRecorder mediaRecorder=new MediaRecorder(); //创建MediaRecorder
    2. mediaRecorder.reset(); //重置MediaRecorder参数
    3. mediaRecorder.setAudioSource( MediaRecorder.AudioSource.MIC ); //设置音频来源,MediaRecorder.AudioSource.MIC表示麦克风
    4. mediaRecorder.setOutputFile( file ); //设置输出文件
    5. mediaRecorder.setOutputFormat( MediaRecorder.OutputFormat.RAW_AMR ); //设置输出格式,MediaRecorder.OutputFormat.RAW_AMR表示 .arm文件格式
    6. mediaRecorder.setAudioEncoder( MediaRecorder.AudioEncoder.AMR_NB ); //设置音频编码(方式),MediaRecorder.AudioEncoder.AMR_NB表示 .arm编码器
    7. mediaRecorder.prepare(); //媒体录音机进入准备状态
    8. mediaRecorder.start(); //开始录音
    9. mediaRecorder.pause(); //暂停
    10. mediaRecorder.resume(); //继续
    11. mediaRecorder.stop(); //中止录音,此时生成文件完成
    12. mediaRecorder.release(); //释放资源,防止占用内存

    注意:

    1. 要在各项参数设置前重置MediaRecorder(参数)  .reset()

    2. 不设置音频来源会导致生成的文件无音轨  .setAudioSource()

    参数使用MediaRecorder.AudioSource.MIC表示麦克风输入

    3. 不设置输出文件将无法生成文件  .setOutputFile( ~ )

    4. 设置输出格式用于设置文件类型  .setOutputFormat( ~ )

    参数使用MediaRecorder.OutputFormat.RAW_AMR表示 .amr文件格式     

    5. 需要设置音频编码(方式) .setAudioEncoder( ~ )

    参数使用MediaRecorder.AudioEncoder.AMR_NB表示 .amr编码器

    6. 要在各项参数设置后使媒体录音机进入准备状态 .prepare()

    7. MediaRecorder的使用

    开始录音.start()   

    暂停.pause()     

    继续.resume()   

    中止录音.stop()此时文件生成完成     

    释放资源.release()防止占用资源

    8. 权限三项都要

    RECORD_AUDIO 录音
    WRITE_EXTERNAL_STORAGE 不加无法写入文件
    READ_EXTERNAL_STORAGE 不加录音只会有一小段(几秒),因录音机是不断在之前文件添加新音频并覆盖,无读取权限则只会进行覆盖

    常见问题:

     1.  Android媒体录音机MediaRecorder录制出的文件只有几秒甚至几毫秒,原因可能是未添加文件读取权限(READ_EXTERNAL_STORAGE)。录音机录制时,每几毫秒会录制一次,新录制到的音频会添加至之前的音频文件末端,然后覆盖旧音频文件;如果没有文件读取权限,每次录制到的新音频只会覆盖旧音频文件回车。

  • 相关阅读:
    遗传算法(GA)学习 || 原理、本质、代码、例题
    DVWA靶场通关实战
    python线性回归实现
    CHS寻址
    面向对象三大特征之一:继承
    计算机毕业设计ssm创新实践学分管理系统08a30系统+程序+源码+lw+远程部署
    logback-spring.xml配置文件标签(超详解)
    ElasticSearch 安装(单机版本)
    安装sourcetree并操作Git
    C#的DataGridView数据控件(直接访问SQL vs 通过EF实体模型访问SQL)
  • 原文地址:https://blog.csdn.net/m0_57150356/article/details/133809414