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

  • 相关阅读:
    使用Charles和iPhone进行微信小程序抓包详解
    lambda表达式介绍
    Python大数据之PySpark(一)SparkBase
    zlMediaKit 1 task模块--怎么用异步做到同步,怎么基于任务而非基于线程管理
    openssl 生成自签名证书
    java编程培训学习的就业前景好不好
    KMP算法 → 计算nextval数组
    开源报表工具Limereport交叉编译及使用
    JAVA如何处理各种批量数据入库(BlockingQueue)
    PyTorch与向量化计算
  • 原文地址:https://blog.csdn.net/m0_57150356/article/details/133809414