我想弄清楚如何检测哪些音频设备连接在iphone/ipad/ipod上。我知道音频路由调用和路由改变回调的所有信息,但这些信息并没有告诉我有关附件的任何信息。他们只报告音频当前路由的位置。例如,我需要知道在音频通过扬声器路由时是否还连接了耳机和/或蓝牙。或者,例如,如果用户在使用蓝牙时插入耳机,然后决定断开蓝牙连接,则需要知道蓝牙已断开,即使音频仍然通过耳机路由。检测附加的音频设备iOS
7
A
回答
0
您可以从AudioSession属性中获取InputSources和OutputDestinations的列表。 看看这些会话属性:
kAudioSessionProperty_InputSources
kAudioSessionProperty_OutputDestinations
而且查询每个细节,你可以使用:
kAudioSessionProperty_InputSource
kAudioSessionProperty_OutputDestination
1
在iOS 5中的情况下,你应该使用:
CFStringRef newRoute;
size = sizeof(CFStringRef);
XThrowIfError(AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &size, &newRoute), "couldn't get new audio route");
if (newRoute)
{
CFShow(newRoute);
if (CFStringCompare(newRoute, CFSTR("HeadsetInOut"), NULL) == kCFCompareEqualTo) // headset plugged in
{
colorLevels[0] = .3;
colorLevels[5] = .5;
}
else if (CFStringCompare(newRoute, CFSTR("SpeakerAndMicrophone"), NULL) == kCFCompareEqualTo)
}
0
不幸,截至iOS11,似乎没有API可靠地获取当前连接的输出设备列表 - 只要当前路由发生变化,您只能通过AVAu看到1个设备(当前路由) dioSession的currentRoute.outputs
,尽管多个设备仍可能连接。
然而,对于输入,这包括与HFP协议的蓝牙设备,如果使用(例如AVAudioSessionModeVoiceChat
或AVAudioSessionModeVideoChat
)适当的音频会话模式,一个能获得通过AVAudioSession的availableInputs
,而那些可用的输入列表输入即使在该设备不是主动路由时也列在那里 - 例如,当用户通过MPVolumeView
从蓝牙到扬声器进行手动覆盖时,这非常有用,并且由于HFP是双向IO(同时具有两个输入和输出),您可以通过查看输入来判断输出HFP蓝牙是否仍然可用。
BOOL isBtInputAvailable = NO;
NSArray *inputs = [[AVAudioSession sharedInstance] availableInputs];
for (AVAudioSessionPortDescription* port in inputs) {
if ([port.portType isEqualToString:AVAudioSessionPortBluetoothHFP]) {
isBtInputAvailable = YES;
break;
}
}
相关问题
- 1. 检测的iOS设备11
- 2. 如何检测当前音频设备音量
- 3. android:附加音频
- 4. 检测iOS移动设备使用JavaScript比自动播放音频
- 5. 无法将音频文件附加到三星设备
- 6. 从iOS应用程序中检测附近的移动设备
- 7. iPhone - 检测附近的蓝牙设备
- 8. HSLab:null音频设备
- 9. 检测与Android设备的音符
- 10. 核心音频和从音频设备检索数据源
- 11. 检测iOS模拟器与iOS设备
- 12. 将音频从ios设备传输到dlna设备
- 13. 如何检测音频设备何时插入和拔出?
- 14. Xamarin Android:检测设备上是否正在播放音频
- 15. 如何从音频设备ID获取音频设备号?
- 16. 检测音频谱
- 17. iPad的HTML音频检测`加载`
- 18. 如何检测iOS设备是否下载了语音文件?
- 19. 检测Android/iOS设备是否已通过Unity3D播放音乐
- 20. 检测iOS设备上的CPU核心
- 21. iOS音频加速
- 22. 无法添加设备ios 4.2.1 xcode 4“未知ios检测到”
- 23. 在lync中检测音频设备并控制其音量sdk 2013
- 24. 使用RandomAccessFile附加音频
- 25. 关闭设备音量 - iOS设备
- 26. TravisCI没有音频设备
- 27. 扫描音频设备
- 28. 音乐音调类检测音频库
- 29. 检测音频中的特定声音
- 30. 检测ios设备a5芯片和up
我有我的应用程序类似的问题,我的应用程序正确地播放流,但如果我改变音频输出(耳机拔掉),它停止播放..没有üfigureout如何当音频输出被改变检测? –
是的,通过AudioSessionPropertyListener回调来检测路由改变。然后通过AudioSessionAddPropertyListener函数注册属性监听器。但是,这不是我上面想要做的。在我的应用程序中,我需要检测哪些设备连接正确地向用户显示可用的路由选项。 – Cliff