正如问题所述,有没有办法查询状态栏中的当前图标,以及他们使用的是哪个?如果我能这样做,我将能够测试BlueTooth是否打开,以及是否连接了设备。我想要注意,这与使用EAAccessory不同,后者是一种不同的连接。在这种情况下,我只是想确定是否连接了耳机,无论EAAccessory状态如何。
答案 0 :(得分:2)
您可以使用私有API路线,但这很可能会导致您的应用被拒绝。我之前有过一些私人API偷偷过去Apple,但在更新中被拒绝了,所以要注意这一点。
与普遍看法相反,这是可能的。您可以使用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;
}