蓝牙经典连接意识

时间:2015-02-24 12:53:53

标签: ios objective-c bluetooth bluetooth-lowenergy core-bluetooth

我有一个蓝牙应用程序,可以通过低能耗与外围设备通信。

此外围设备还具有与iOS设备的经典(HFP和/或A2DP)连接。碰巧经典连接有时会中断。

我需要的是能够在应用程序中通知用户经典连接已丢失。

如何让我的应用程序了解经典连接?

您希望以何种方式执行此操作?

2 个答案:

答案 0 :(得分:2)

虽然CoreBluetooth用于访问蓝牙LE或4.0设备,但您可以使用ExternalAccessory框架与其他蓝牙设备进行通信。

像这样:

- (void)registerForNotifications
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(accessoryDidConnect:) name:EAAccessoryDidConnectNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(accessoryDidDisconnect:) name:EAAccessoryDidDisconnectNotification object:nil];
    [[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications];
} 

- (void)accessoryDidConnect:(NSNotification *)notification
{
    // Weird thing with ExternalAccessory where this notification is called more than once per accessory...
    if ([[(EAAccessory *)[[(EAAccessoryManager *)notification.object connectedAccessories] lastObject] protocolStrings] count]) {
        // Valid call
        if ([[(EAAccessory *)[notification.userInfo valueForKey:EAAccessoryKey] protocolStrings] containsObject:/*Protocol string for the accessory*/]) {

        }
    }
}

- (void)accessoryDidDisconnect:(NSNotification *)notification
{
    if ([[(EAAccessory *)[notification.userInfo valueForKey:EAAccessoryKey] protocolStrings] containsObject:/*Protocol string for the accessory*/]) {
        // Disconnected
    }
}

要使其正常工作,您必须添加密钥'支持的外部附件协议'到您应用的info.plist,并列出该密钥下阵列中蓝牙设备的协议。

另请注意,要在App Store上发布,蓝牙设备必须在Apple MFi计划下注册,您必须是公认的开发人员(由设备制造商提供)。

答案 1 :(得分:0)

对于非MFI设备,我发现在连接的Bluetooth Classic设备上获取任何信息的唯一方法是(间接)通过AVAudioSession单例。 OpenRead

首先查看currentRoute属性。