MediaRecorder媒体录音机

news/2024/11/8 15:13:11/

权限:

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

代码:

MediaRecorder mediaRecorder=new MediaRecorder();  //创建MediaRecorder
mediaRecorder.reset();  //重置MediaRecorder参数
mediaRecorder.setAudioSource( MediaRecorder.AudioSource.MIC );  //设置音频来源,MediaRecorder.AudioSource.MIC表示麦克风 
mediaRecorder.setOutputFile( file );  //设置输出文件
mediaRecorder.setOutputFormat( MediaRecorder.OutputFormat.RAW_AMR );  //设置输出格式,MediaRecorder.OutputFormat.RAW_AMR表示 .arm文件格式
mediaRecorder.setAudioEncoder( MediaRecorder.AudioEncoder.AMR_NB );  //设置音频编码(方式),MediaRecorder.AudioEncoder.AMR_NB表示 .arm编码器
mediaRecorder.prepare();  //媒体录音机进入准备状态mediaRecorder.start();  //开始录音
mediaRecorder.pause();  //暂停
mediaRecorder.resume();  //继续
mediaRecorder.stop();  //中止录音,此时生成文件完成
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)。录音机录制时,每几毫秒会录制一次,新录制到的音频会添加至之前的音频文件末端,然后覆盖旧音频文件;如果没有文件读取权限,每次录制到的新音频只会覆盖旧音频文件回车。


http://www.ppmy.cn/news/1158954.html

相关文章

协同办公系统OA实施过程中需要注意的细节

随着企业对于高效、便捷的办公方式的需求增加&#xff0c;协同办公系统OA正逐渐成为企业信息化建设的热门选择。然而&#xff0c;协同办公系统OA的实施并非一蹴而就&#xff0c;需要企业在实施过程中注意一系列的细节。 一、规划与需求分析 企业应根据自身的业务需求和发展战略…

成绩查询页面和自助查询方式

科技发展让我们有更多的方式来发布和查询学生成绩。今天&#xff0c;我想向大家介绍什么是成绩查询页面&#xff0c;并分享如何通过各种代码和Excel来实现让学生自助查询成绩。 成绩查询页面是一个专门用来发布和查询学生成绩的网络页面。这个页面具有发布、查询、统计成绩等功…

现货黄金操作建议

如果您想得到更好的现货黄金操作建议&#xff0c;那就应该读读Jack Schwager的经典交易著作是《市场奇才&#xff1a;顶级交易者访谈》。这本书1989年首次出版&#xff0c;当中收录了对美国一些传奇交易者的访谈&#xff0c;当中的一些建议不但有用&#xff0c;而且经得起的时间…

Android versionCode会变成指定数值加001、002、003等后缀

“活久见”—今天遇到个奇怪的问题&#xff0c;指定的versionCode最终在打包出来的apk中,versionCode变成&#xff08;指定数值 00X的形式&#xff09; 如下所示&#xff1a; 注&#xff1a;当前build.gradle中的versionCode为26 后来搜索代码&#xff0c;发现原来是这个配置导…

设备上使用 Wi-Fi Settings 设置代理

在 Android 设备上使用 Wi-Fi Settings 设置代理的详细教程&#xff1a; 首先&#xff0c;打开您的 Android 设备的 "设置" 应用。 在设置菜单中&#xff0c;点击 "Wi-Fi" 选项。 确保您已经连接到一个 Wi-Fi 网络。如果没有连接&#xff0c;请点击 &quo…

微信查分,原来这么简单,老师必看攻略

哈喽&#xff0c;亲爱的老师们&#xff01;是不是经常为了查找学生的成绩而烦恼呢&#xff1f;别担心&#xff0c;今天我就来给大家分享一个超级实用的教程——在微信里查分&#xff01;快来一起了解一下吧&#xff01; 首先&#xff0c;我们要清楚成绩查询页面是什么。一般来说…

value too long for type character varying报错处理

瀚高数据库 目录 环境 症状 问题原因 解决方案 环境 系统平台&#xff1a;N/A 版本&#xff1a;4.5 症状 使用insert into插入数据时出现报错value too long for type character varying 问题原因 458新增NLS_LENGTH_SEMANTICS参数&#xff0c;默认设置为byte。之前版本默认为…

没有前端如何测试后端跨域问题

一、问题 前段时间对项目中的跨域做了相关的处理&#xff0c;网上有很多跨域的解决方案。前端解决&#xff0c;后端解决&#xff0c;nginx代理解决。我采用的是在后端中使用Cors来解决跨域的问题。但是前端项目还没有搭建起来&#xff0c;并不知道Cors的解决方案是否会生效&am…