如何检测iPhone状态栏中蓝牙图标的状态?

时间:2010-12-15 21:13:33

标签: iphone bluetooth statusbar

正如问题所述,有没有办法查询状态栏中的当前图标,以及他们使用的是哪个?如果我能这样做,我将能够测试BlueTooth是否打开,以及是否连接了设备。我想要注意,这与使用EAAccessory不同,后者是一种不同的连接。在这种情况下,我只是想确定是否连接了耳机,无论EAAccessory状态如何。

1 个答案:

答案 0 :(得分:2)

您可以使用私有API路线,但这很可能会导致您的应用被拒绝。我之前有过一些私人API偷偷过去Apple,但在更新中被拒绝了,所以要注意这一点。

CoreBluetooth

与普遍看法相反,这是可能的。您可以使用CoreBluetooth库。我敢肯定,如果你的应用程序没有证明蓝牙外围设备的使用,它可能会被拒绝。

但是,这是我在我的一个使用蓝牙外围设备的应用中检测蓝牙状态的方法。请注意,这不是确定蓝牙状态的最佳方式,但可能适用于某人。

- (BOOL)isBluetoothEnabled
{
    if ( ! _centralManager ) {
           _centralManager = [[CBCentralManager alloc]
                              initWithDelegate:self
                              queue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
                              options:@{
                                        CBCentralManagerOptionShowPowerAlertKey:[NSNumber numberWithBool:NO]
                                        }];
    }
    switch ( _centralManager.state )
    {
        case CBCentralManagerStateUnknown: {
            _bluetoothEnabled = NO;
            break;
        }
        case CBCentralManagerStateResetting: {
            _bluetoothEnabled = NO;
            break;
        }
        case CBCentralManagerStateUnsupported: {
            _bluetoothEnabled = NO;
            break;
        }
        case CBCentralManagerStateUnauthorized: {
            _bluetoothEnabled = NO;
            break;
        }
        case CBCentralManagerStatePoweredOff: {
            _bluetoothEnabled = NO;
            break;
        }
        case CBCentralManagerStatePoweredOn: {
            _bluetoothEnabled = YES;
            break;
        }
        default: { // Unknown
            _bluetoothEnabled = NO;
            break;
        }
    }
    return _bluetoothEnabled;
}