• 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)。录音机录制时,每几毫秒会录制一次,新录制到的音频会添加至之前的音频文件末端,然后覆盖旧音频文件;如果没有文件读取权限,每次录制到的新音频只会覆盖旧音频文件回车。

  • 相关阅读:
    一个月速刷leetcodeHOT100 day13 二叉树结构 以及相关简单题
    linux/kali2023.1工具集合()
    ubuntu(23):ubuntu系统具有两个“系统盘”的说明:一个盘为系统盘,另一个为被系统文件占用的数据盘--可以格式化并重新分配卷类型和卷名称
    Vite 踩坑 —— require is not defined
    单个数据盘分区如何配置LVM
    类和对象2:继承
    煤焦油称重管理软件你了解吗
    Pytorch中 nn.Transformer的使用详解与Transformer的黑盒讲解
    kafka 3.0 跟着b站尚硅谷老师学习。(有需要zookeeper的配置(2.8之前)和Kraft(2.8之后))
    针对 DNS 监控的 Grafana Dashboard面板DeepFlow
  • 原文地址:https://blog.csdn.net/m0_57150356/article/details/133809414