2

我正在开发博客扬声器应用程序。

我想在像 iPod 应用程序一样禁用蓝牙时暂停音频。读完这篇文章后,我认为不使用私有 api 是不可能的。 检查蓝牙是否启用?

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

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

CBCentralManagerStatePoweredOff 状态似乎是这样的。

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

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

4

2 回答 2

2

对于音频,特别关注蓝牙听起来像是错误的方法。

我认为您正在寻找的是处理音频硬件路由更改

您会注意到以下所有因素都会导致内置 iPod 应用程序暂停:

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

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

于 2012-06-25T22:24:21.673 回答
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]
}
}
于 2012-06-25T21:13:49.043 回答