检测iOS5上何时禁用蓝牙

时间:2012-04-02 00:26:22

标签: iphone ios audio bluetooth audiosession

我正在开发博客演讲应用程序。

我希望像iPod应用程序一样禁用蓝牙时暂停音频。我认为在阅读此内容后不使用私有api是不可能的。 Check if Bluetooth is Enabled?

但是,我的客户告诉我Rhapsody和DI Radio应用程序都支持它。

然后我发现iOS5有Core蓝牙框架。 https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/CoreBluetooth_Framework/CoreBluetooth_Framework.pdf

CBCentralManagerStatePoweredOff状态似乎就是那个。

但是,描述说这个api只支持蓝牙4.0低功耗设备。 有没有人尝试做同样的事情?

我想支持当前流行的蓝牙耳机,或支持蓝牙的方向盘。我不知道它是否值得尝试,因为它只支持一些全新的蓝牙。

2 个答案:

答案 0 :(得分:2)

对于音频,专注于蓝牙听起来特别错误。

我认为你要找的是Handling Audio Hardware Route Changes

您会注意到以下所有情况导致内置iPod应用暂停:

  • 删除了蓝牙设备(可能是因为蓝牙已被禁用)。
  • 拔下耳机。
  • 设备已从扩展坞中移除。

使用音频会话API时,您将获得所有正确的行为。

答案 1 :(得分:1)

在BLE上,您将获得包含州的经理的更新:

 enum {
CBCentralManagerStateUnknown = 0, // State unknown,
update imminent.
CBCentralManagerStateResetting, // The connection with the system service was      momentarily lost,
update imminent.
CBCentralManagerStateUnsupported, // The platform doesn't support Bluetooth Low Energy.
CBCentralManagerStateUnauthorized, // The app is not authorized to use Bluetooth Low Energy.
CBCentralManagerStatePoweredOff, // Bluetooth is currently powered off.
CBCentralManagerStatePoweredOn, // Bluetooth is currently powered on and available to use.
};

您可以使用例如

检查强制回调
centralManager:didUpdateState...{
if ([manager state] == CBCentralManagerStatePoweredOff)
{
[musicPlayer pause]
}
}