FAQ_zh - aopacloud/aopa-rtc GitHub Wiki
为什么通过系统音量无法调节背景音乐
问题描述在移动设备中,用户在后台播放背景音乐,加入 RTC 频道后,用户无法通过调节系统音量去改变背景音乐的音量。
问题原因移动设备的音量类型分为通话音量和媒体音量。一般而言,音视频通话时使用通话音量,播放背景音乐时使用媒体音量。
用户加入 RTC 频道后,声网 RTC SDK 控制的音量类型决定了系统音量控制的音量类型。当 SDK 控制通话音量,背景音乐使用媒体音量时,系统音量只能控制通话音量,无法调节背景音乐的音量。
解决方案
方案一用 startAudioMixing
播放背景音乐,让 SDK 同时控制背景音乐和通话声音。不论 SDK 使用的是通话音量还是媒体音量,用户都可以通过系统音量同时调节背景音乐和通话声音的音量。
方案二通过 setAudioScenario
方法,将 scenario
参数设为 GAME_STREAMING
/AgoraAudioScenarioGameStreaming
,即将 SDK 使用的音量类型设置为媒体音量。成功设置后,用户可以通过系统音量同时调节背景音乐和通话声音的音量。
方案三如何处理音频卡顿问题
卡顿的问题可能涉及到网络,设备,物理环境等原因。比较常见的是客户端的网络较差导致。
步骤 1:自检操作检查网络状况是否良好。可以换到 4G 或更稳定的 Wi-Fi 环境下再尝试。 也可通过声网提供的水晶球服务,确认用户的网络、设备 CPU 使用是否正常。
步骤 2:联系技术支持如果问题仍旧存在,请联系技术支持,并提供以下信息,方便快速定位问题:
信息 | 详情 |
---|---|
必要信息 | 用户听到语音卡顿的频道名,哪些用户听到了语音卡顿,提供他们的用户 ID,哪些用户造成了语音卡顿,提供他们的用户 ID ,录音文件(如果有的话) |
可选信息 | 如果是直播场景,卡顿是否来自于主播 ,如果频道内显示了视频,检查视频播放是否流畅、清晰 |
步骤 3:管理后台监控通话质量
如何避免直播上下麦音量变化
为了保证不同场景下都有较好的音质体验,默认情况下,用户上下麦时,SDK 会调整底层音频的设置:
- 非连麦模式下会使用媒体音量控制。
- 连麦模式下会使用通话音量控制。
媒体音量和通话音量各有独立的音量控制机制。
如果想避免上下麦时音量变化,声网推荐使用 AUDIO_SCENARIO_CHATROOM
。不同情况下 SDK 使用的音量类型不同
为什么iOS或Android设备连接蓝牙设备后不能通过蓝牙设备接电话
问题描述iOS 或 Android 设备连接蓝牙设备后,通话时出现不能通过蓝牙设备出声的现象。具体现象如下:
- 连接蓝牙耳机后,接听电话无法通过蓝牙耳机出声。
- 连接蓝牙音箱后,通话中无法通过蓝牙音箱录音或播放声音。
iOS 设备
问题原因上述问题可能由以下三种原因造成:
-
iOS 系统会为系统通话和 VoIP 通话选择音频路由。系统通话包括使用电话、FaceTime 和 CallKit 框架的 App 进行的通话。
系统通话的系统默认设置
连接蓝牙设备后:
- 如果用户在 iPhone 设备上按接听键,则默认使用 iPhone 听筒接听电话;
- 如果用户在蓝牙设备上按接听键,则默认使用蓝牙设备接听电话。
VoIP 通话的系统默认设置
连接蓝牙设备后:
- 如果进行过系统通话或 VoIP 通话,则默认使用最后一次系统通话或 VoIP 通话使用的音频路由接听电话。
- 如果没有进行过系统通话,则默认使用蓝牙设备接听电话。
-
iOS 设备上输入和输出的音频路由必须相同。只有当用户或 App 指定蓝牙设备为输入或输出的音频路由时,系统才会默认把输出或输入的音频路由也设置为蓝牙设备。
-
蓝牙音箱的录音功能只有在进行系统通话时才可以使用。如果 App 未使用 CallKit 框架,则频道内发流的用户无法使用蓝牙音箱录音或播放声音,不发流的用户仅可使用蓝牙音箱播放声音。
解决方案你可以根据实际通话场景,使用对应的方法,来设置语音播放路由。
系统通话
-
在开始系统通话前,在 iPhone 的设置中修改音频通话方式:向下滑动以显示搜索栏,搜索音频通话方式,并将音频通话方式设为蓝牙耳机。这样系统来电时即使按手机上的接听键,也会默认使用蓝牙耳机接听电话。
-
在进行系统通话过程中,用户也可以通过通话界面的外放按钮自行切换蓝牙、听筒或外放。
-
如果通话时连接的蓝牙设备为蓝牙音箱,请确保 App 使用 CallKit 框架,方可使用上述方法设置语音播放路由。
VoIP 通话
- 在开始 VoIP 通话前,用户可以通过系统控制中心自行切换音频路由为蓝牙设备。app 则可以调用 iOS 原生 API
setPreferredInput
方法切换音频路由为蓝牙设备。 - 当使用蓝牙耳机进行 VoIP 通话时,收到了系统来电,则点蓝牙耳机上的接听按钮接听系统来电,系统通话结束后再切回 App 就能保持使用蓝牙耳机进行通话。
Android 设备
问题原因- 如果你使用的是 v4.1.0 之前版本的 SDK,需要在
AndroidManifest.xml
文件中添加使用蓝牙设备的权限。 - 只有支持 SCO 协议的蓝牙设备,才支持录制和播放音频。如果蓝牙设备只支持 A2DP 协议,则无法录制音频,那么用户就无法使用该蓝牙设备通话。
- 只有 Android 设备支持在未进行系统通话时使用蓝牙 SCO,才能将语音路由切换为蓝牙设备。
解决方案-
在
AndroidManifest.xml
文件中添加如下行,获取使用蓝牙设备的权限:Java
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 如果你使用的是 Android 12.0 及以上设备,还需要添加如下权限: --><uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
-
确认蓝牙设备是否支持 SCO 协议。如果不支持,切换支持 SCO 协议的蓝牙设备。
-
调用 Android 原生 API
AudioManmager.isBluetoothScoAvailableOffCall
方法判断该 Android 设备是否支持在没有系统通话时使用蓝牙 SCO。如果设备不支持该功能,则无法将音频路由切换为蓝牙设备,只能使用系统默认的路由接听电话。