iOS 更改设备扬声器

Posted

技术标签:

【中文标题】iOS 更改设备扬声器【英文标题】:iOS Change device speaker 【发布时间】:2017-08-30 07:42:39 【问题描述】:

我需要在音频通话期间实现 iPhone 扬声器(耳朵和底部)更改(使用 TwilioVideo SDK 进行连接) 我的代码:

let audiosession = AVAudioSession.sharedInstance()

do 
    if isSpeaker == false 
        try audioSession.overrideOutputAudioPort(.speaker)
        isSpeaker = true
     else 
        try audioSession.overrideOutputAudioPort(.none)
        isSpeaker = false
    

    try audioSession.setActive(true)
 catch 
    handleError(error.localizedDescription)

正常工作,但不要更改音频输出扬声器

【问题讨论】:

【参考方案1】:

这里是 Twilio 开发者宣传员。

您不应将AVAudioSession API 直接用于 Twilio Video。相反,您应该将TVIAudioController and set the audioOutput property 用于TVIAudioOutput 中列举的选项之一。

TVIAudioController.sharedController().audioOutput = .TVIAudioOutputVideoChatSpeaker

如果有帮助,请告诉我。

【讨论】:

效果很好,谢谢。但是有没有办法在 Twilio lib 中将类别设置为 audioSession? 四种可用的输出设置是:TVIAudioOutputVideoChatDefault、TVIAudioOutputVideoChatSpeaker、TVIAudioOutputVoiceChatDefault 和 TVIAudioOutputVoiceChatSpeaker。 我的意思是 AVAudioSessionCategoryPlayAndRecord 类别。我需要显示绿色的通话状态栏,根据***.com/a/31704318/4899912,我只需将此类别设置为AVAudioSession。将其设置为 sharedInstance 没有帮助 哦,视频 SDK 自动将类别设置为AVAudioSessionCategoryPlayAndRecord,这里说:media.twiliocdn.com/sdk/ios/video/releases/1.3.2/docs/Constants/…。该答案建议您还需要添加一些其他设置,例如在 info.plist 中将 UIBackgroundMode 设置为 voip 我的错 - 只设置 'voip',当同时需要 'audio' 和 'voip' 键时。但它显示为红色(正在录制)状态。是否有机会将其更改为绿色(通话中)?

以上是关于iOS 更改设备扬声器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 设备上检测耳机(扬声器)的可用性?

更改 Windows Media Player 的目标扬声器

检测连接的音频设备 iOS

解决iOS 设备声音/音量自动变最大的问题

iOS 判断听筒还是扬声器

是否可以将音乐从 Android/iOS 设备流式传输到桌面设备?