gpt4 book ai didi

ios - 检测连接的音频设备 iOS

转载 作者:可可西里 更新时间:2023-11-01 03:33:19 28 4
gpt4 key购买 nike

我正在尝试弄清楚如何检测 iphone/ipad/ipod 上连接了哪些音频设备。我知道所有关于音频路由调用和路由更改回调的信息,但这些并没有告诉我任何关于附加内容的信息。他们只报告音频当前路由的位置。例如,我需要知道在通过扬声器传送音频时是否仍连接着耳机和/或蓝牙。或者,例如,如果用户在使用蓝牙时插入耳机然后决定断开蓝牙,我需要知道蓝牙已断开,即使音频仍在通过耳机路由。

最佳答案

不幸的是,从 iOS11 开始,似乎没有 API 可以可靠地获取当前连接的输出设备列表——一旦当前路由发生变化,您只能通过 AVAudioSession 的 看到 1 个设备(当前路由) currentRoute.outputs,即使可能仍连接有多个设备。

但是,对于输入,包括具有 HFP 配置文件的蓝牙设备,如果使用适当的 Audio Session 模式(例如 AVAudioSessionModeVoiceChatAVAudioSessionModeVideoChat),可以通过 AVAudioSession 的 availableInputs 获取可用输入的列表,即使该设备不是事件路由,这些输入也会列在那里 - 这在用户通过 进行手动覆盖时非常有用以MPVolumeView从蓝牙到音箱为例,由于HFP是2路IO(既有输入也有输出),可以通过查看输入来判断输出HFP蓝牙是否仍然可用。

BOOL isBtInputAvailable = NO;
NSArray *inputs = [[AVAudioSession sharedInstance] availableInputs];
for (AVAudioSessionPortDescription* port in inputs) {
if ([port.portType isEqualToString:AVAudioSessionPortBluetoothHFP]) {
isBtInputAvailable = YES;
break;
}
}

关于ios - 检测连接的音频设备 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7355312/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com