macos - 如何在 Mac OS X 中检测蓝牙音频设备是否已连接?

标签 macos cocoa bluetooth core-audio

我正在开发一个在 OsX 上播放音频的应用程序。我可以使用 CodeAudio 列出可用的输出设备,但我在使用蓝牙耳机时遇到问题;即使设备已关闭且未连接,它仍然列在 OsX 声音首选项 Pane 中,因此被 CoreAudio 拾取为有效输出。 如果相应的设备尚未连接,我希望显示蓝牙输出。

我尝试检查 CoreAudio 属性,例如:

kAudioDevicePropertyDeviceIsAlive kAudioDevicePropertyDeviceIsRunning kAudioDevicePropertyDeviceIsRunningSomewhere

但默认输出和蓝牙输出没有区别。

Coreaudio 可以进行这种检测吗?

最佳答案

为了 future 搜索者的利益,我过去的做法是:

  • 枚举检测到的设备
  • 查询每个 AudioDeviceID 的 kAudioDevicePropertyTransportType 属性 这将返回一个传输类型 ID 常量。
  • 匹配 kAudioDeviceTransportTypeBluetoothkAudioDeviceTransportTypeBluetoothLE 类型

这样您就可以确定设备正在使用的连接类型(USB、Firewire 等)。您可以在 AudioHardwareBase.h

中找到传输类型的完整列表

关于macos - 如何在 Mac OS X 中检测蓝牙音频设备是否已连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8185378/

相关文章:

ios - iPhone 和 Mac 之间的通信

ios UIViewController 不调用 viewDidUnload

python - 我在哪里可以找到 PyBluez API

iOS kontakt.io 信标搜索

macos - 如何在 Github for Mac GUI 中选择多个文件

objective-c - 在 Cocoa View 层次结构中,什么决定了 subview 的位置?

objective-c - 使用 getBytes 扫描文件 :range:?

objective-c - cocoa QTMovieView keydown 不起作用

java - 蓝牙 SDP 在某些设备中失败

macos - 无法在 Mac OS X Mavericks 上安装 Fay