android IM模块-语音-录制篇1

android IM模块-语音-录制篇1
https://www.jianshu.com/p/5cccb0a9e740
android IM模块-语音-录制篇2
https://www.jianshu.com/p/1527e6d4840d
android IM模块-语音-播放篇1
https://www.jianshu.com/p/214a433f3f40
android IM模块-语音-播放篇2
https://www.jianshu.com/p/66727521e2eb

现在做安卓IM可以说是软件常用功能,IM模块常用的有语音,视频,地图,消息,位置,文件等
我们一般选用三方SDK进行完成,我个人觉得用SDK可以,但是最基本的原理和实现代码我们得基本能坐到
从这篇开始我们从语音开始进行一篇篇详解,(我也是摸索学习,哪里不对请指正)
android端常用录音API有,AudioRecord 和MediaRecorder,其中MediaRecorder封装较好,可以很简单的就实现录音功能。我们就简单利用MediaRecorder做一个小案例。

MediaRecorder

在XML文件中写入权限


image.png

在android6.0以上,这两个权限是需要动态权限申请的,我们记得申请动态权限


获取录音权限

获取内存卡读写权限

我们写一个布局,开始录音和停止录音两个按钮


android IM模块-语音-录制篇1_第1张图片
布局页面

在主页面里开始写代码,录音完我们需要保存到SD卡里,我们先做一个File路径出来


android IM模块-语音-录制篇1_第2张图片
录音保存路径

新建一个MediaRecorder


iMediaRecorder

设置相关参数
android IM模块-语音-录制篇1_第3张图片
配置参数

开始录音


android IM模块-语音-录制篇1_第4张图片
开始录音

停止录音
android IM模块-语音-录制篇1_第5张图片
停止录音

运行一下,记住一定要给予权限哦,不然会报错,点击录音,说一段话,然后结束录音,去文件夹查找,
录音是一个JNI级别的方法只能单线程操作,而且涉及这种耗时操作,肯定需要放在线程里,

我建议大家在做的录音的时候,使用一个单线程进行操作,

这里只是简单展示各种常用参数配置,真正开发的时候一定要注意。

android IM模块-语音-录制篇1_第6张图片

android IM模块-语音-录制篇1_第7张图片
开始录音

android IM模块-语音-录制篇1_第8张图片
录音完成

android IM模块-语音-录制篇1_第9张图片
找到录音

点击播放
android IM模块-语音-录制篇1_第10张图片
录音播放

我们一个很简单的录音APP就完成了,好的,大家很好奇我们设置那堆参数是做什么的呢?我把查到的资料放在下面让大家看一看
大家可以关注一下两篇博客
https://blog.csdn.net/qq_32175491/article/details/78664821
https://www.2cto.com/kf/201408/326131.html
或者视频可以看这位老师的视频
https://www.imooc.com/learn/739

MediaRecorder.AudioSource.xxxx

MediaRecorder.AudioSource.CAMCORDER
1 设定录音来源于同方向的相机麦克风相同,若相机无内置相机或无法识别,则
使用预设的麦克风
2 MediaRecorder.AudioSource.DEFAULT
默认音频源
3 MediaRecorder.AudioSource.MIC
设定录音来源为主麦克风。
4 MediaRecorder.AudioSource.VOICE_CALL
设定录音来源为语音拨出的语音与对方说话的声音
5 MediaRecorder.AudioSource.VOICE_COMMUNICATION
摄像头旁边的麦克风
6 MediaRecorder.AudioSource.VOICE_DOWNLINK
下行声音
7 MediaRecorder.AudioSource.VOICE_RECOGNITION
语音识别
8 MediaRecorder.AudioSource.VOICE_UPLINK
上行声音

MediaRecorder.OutputFormat.xxxx

1 AAC_ADTS:ADTS的全称是Audio Data Transport Stream。是AAC音频的传
输流格式。是AAC的一种非常常见的传输格式
2 AMR_NB:编码的是无视频纯声音3gp文件就是amr,他的文件比AAC的小,他的音乐效果没ACC的好
3 AMR_WB:VMR-WB 是新型可变速率多模式宽带语音编解码器,专为无线
CDMA 2000标准而设计,目的在于在 50 至 7000 HZ 的频带上进行语音编码,
采样率为 16 KHZ。VMR-WB 基于 3GPP AMR-WB (G722.2) 编解码器,在每
秒速率12.65 Kbit 上可实现互操作。
4 DEFAULT:默认输出
5 MPEG_4:这将指定录制的文件为mpeg-4格式,可以保护Audio和Video
6 RAW_AMR:录制原始文件,这只支持音频录制,同时要求音频编码为
7 AMR_NB
8 THREE_GPP:录制后文件是一个3gp文件,支持音频和视频录制
9 WEBM: 编码为VP8/VORBIS的输出格式。

MediaRecorder.AudioEncoder.xxxx

1 default:默认值
2 AAC:高级音频编码,苹果用的就是这种音频格式,开发首选。
优点:相对于mp3,AAC格式的音质更佳,文件更小。
不足:AAC属于有损压缩的格式,与时下流行的APE、FLAC等无损格式相比音质
存在”本质上”的差距。加之,传输速度更快的USB3.0和16G以上大容量MP3正
在加速普及,也使得AAC头上”小巧”的光环不复存在。
3 HE_AAC:HE-AAC混合了AAC与SBR技术
4 AAC_ELD: 低延时的AAC音频编解码器
5 AMR_NB:编码的是无视频纯声音3gp文件就是amr,他的文件比AAC的小,他的
音乐效果没ACC的好
6 AMR_WB:VMR-WB 是新型可变速率多模式宽带语音编解码器,专为无线 CDMA 2000标准而设计,目的在于在 50 至 7000 HZ 的频带上进行语音编码,采样率为 16 KHZ。VMR-WB 基于 3GPP AMR-WB (G722.2) 编解码器,在每秒速率12.65 Kbit 上可实现互操作。
7 VORBIS:Vorbis是一种新的音频压缩格式,类似于MP3等现有的音乐格式。但有一点不同的是,它是完全免费、开放和没有专利限制的。OGG Vorbis有一个很出众的特点,就是支持多声道,随着它的流行,以后用随身听来听DTS编码的多声道作品将不会是梦想。

setAudioSamplingRate

设置所录制的声音的采样率。
采样频率越高,数据越大,音质越好,常用频率有11.025kHz,22.05kHz,16kHz,37.8kHz,44.1kHz,48kHz,96kHz,192kHz,其中44.1kHz所有安卓机都支持。

setAudioEncodingBitRate

设置所录制的声音的编码位率
码率越大,压缩越小,音质越好
AAC HE(High Effciency):32kbps-96kbps,码率低,质量一般
AAC LC( Low Complexity):96kbps-192kbps,平均低码率和高音质
android IM模块-语音-录制篇2
https://www.jianshu.com/p/1527e6d4840d

你可能感兴趣的:(android IM模块-语音-录制篇1)