Android 录音没有声音,设置AudioSource.VOICE_CALL直接MediaRecorder.start异常等系列问题

一、我的需求:来电后,我的三方应用主动开启录音,挂断后结束录音,查验音频

我遇到的问题:录制的音频没有声音。

通过各种尝试,结果如下 :设置不同的录音来源的效果

MediaRecorder API\创建MediaRecorder

正常情况创建

两个应用同时创建

来电时创建

备注

MediaRecorder.AudioSource.DEFAULT

音频有声音

后者start异常

音频无声音

默认音频源 

MediaRecorder.AudioSource.MIC 

音频有声音

后者start异常

音频无声音

设定录音来源为主麦克风

MediaRecorder.AudioSource.VOICE_CALL 

start异常

start异常

start异常

设定录音来源为语音拨出的语音与对方说话的声音

二、暂时的结论是:录制来电语音.音频来源于VOICE_CALL ,而该来源需要CAPTURE_AUDIO_OUTPUT权限,该权限仅授予系统应用程序,而不授予第三方应用程序

三、试错过程中遇到的问题以及解说

1.未申请权限,动态申请或者权限标签用错了,permission 改成 uses-permission

<!--    <permission android:name="android.permission.RECORD_AUDIO"/>-->
<!--    <uses-permission android:name="android.Manifest.permission.READ_EXTERNAL_STORAGE" />-->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2.音频来源设置

MediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC)

以上方法参数就是选择录音源的,其可选参数如下:

MediaRecorder.AudioSource.CAMCORDER
设定录音来源于同方向的相机麦克风相同,若相机无内置相机或无法识别,则使用预设的麦克风

MediaRecorder.AudioSource.DEFAULT  默认音频源

MediaRecorder.AudioSource.MIC
设定录音来源为主麦克风。

MediaRecorder.AudioSource.VOICE_CALL
设定录音来源为语音拨出的语音与对方说话的声音

MediaRecorder.AudioSource.VOICE_COMMUNICATION
摄像头旁边的麦克风

MediaRecorder.AudioSource.VOICE_DOWNLINK
下行声音

MediaRecorder.AudioSource.VOICE_RECOGNITION
语音识别

MediaRecorder.AudioSource.VOICE_UPLINK
上行声音

3.设置MediaRecorder.AudioSource.VOICE_CALL异常,尝试直接CAPTURE_AUDIO_OUTPUT权限申请不通过

MediaRecorder.AudioSource.VOICE_CALL 源需要CAPTURE_AUDIO_OUTPUT权限,该权限仅授予系统应用程序,而不授予第三方应用程序 .

4.同一时间只看开启一个MediaRecorder

实验证明,一台手机同一时间不能创建两个MediaRecoder,一个应用先创建MediaRecorder,另一个应用创建就会异常

当我的应用提前创建了MediaRecorder并且start后,系统通话录音应用也会有影响,

以小米手机为例,miui12.0.6 系统,先开启我的应用录音,系统电话界面的录音我们手动开启,显示可以录音,但打完电话后,查看实际录音文件,录音时长只有一秒,且没声音。

5.当开启电话,使用MediaRecorder设置任何录音source,音频都没有什么声音

应该是来电音频来源在Voice_call上, 但三方应用又没有设置该来源Voice_call的权限、

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值