1

我有一个应用程序(我不会将此应用程序提交到苹果应用商店),我想使用它来检查蓝牙是否打开。如果它已打开,那么我必须显示警报。

    - (void)centralManagerDidUpdateState:(CBCentralManager *)central{
  switch (central.state) {
    case CBCentralManagerStatePoweredOn:{
      //alert view
      break;
    }
  }

viewdidload我确实喜欢这个

  CBCentralManager * manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];

但这不适用于带有 ios 5.1 的 ipad2。

问题central.state总是空的。

我希望从 ios 3.0 到 ios 6 beta 的情况相同。是否有任何用于检查蓝牙状态的通用代码。

欢迎任何可能的代码,甚至是带有私有 api 的代码。

4

3 回答 3

3

CBCentralManager用于使用蓝牙智能(蓝牙 4.0 中的低功耗部分)。这是一项最近才在 iOS / OS X 设备中引入的新技术。当前支持在 iPhone 4s 和新 iPad 中。iPad 2 不支持该技术。此外,CBCentralManager仅适用于 iOS 5 及更高版本。

如果你想检查传统的蓝牙状态,你将不得不找到另一种方法来做到这一点。

在您的情况下central.state,实际上应该等于CBCentralManagerStateUnsupported.

于 2012-08-29T08:10:52.880 回答
2

您想查看BluetoothManagerAPI。BluetoothManager.framework是此 API 所在的私有框架。您可以从 Xcode 项目中链接到它,或使用dlopen它来动态打开它 ( "/System/Library/PrivateFrameworks/BluetoothManager.framework/BluetoothManager")。

重要的电话是

- (BOOL)powered;
- (BOOL)enabled;
- (BOOL)setPowered:(BOOL)arg1;
- (BOOL)setEnabled:(BOOL)arg1;

要获取 的实例BluetoothManager,请使用以下命令:

BluetoothManager* mgr = [BluetoothManager sharedInstance];
于 2012-09-22T08:23:55.390 回答
1

我也没有在运行 iOS7 的 iPhone 4 上获得 CBCentralManagerStateUnsupported。我向 Apple 开了一张 bug 票。

http://openradar.appspot.com/15564675是雷达

https://github.com/deadfalkon/btLeState存储库

于 2013-12-02T15:28:19.110 回答