Detección de conexión de auriculares Bluetooth - iOS

1. Los protocolos de audio Bluetooth se dividen habitualmente en dos tipos:

1. Protocolo de audio unidireccional de alta fidelidad (es decir, salida), su tipo común es BluetoothA2DPOutput, principalmente para escuchar música y ver videos;

2. Protocolo de audio bidireccional de baja fidelidad (es decir, salida, entrada), los tipos comunes son BluetoothHFP (es decir, perfil de manos libres) y BluetoothHSP (perfil de auriculares), tanto para escuchar como para hablar;

2. Obtener estado

1. Bluetooth está activado y los auriculares no están conectados - Altavoz

2. Protocolo de audio unidireccional de alta definición (salida) - BluetoothA2DPOutput

3. Protocolo de audio bidireccional de baja fidelidad (salida, entrada): BluetoothHFP, BluetoothHSP

3. Implementación del método

  1. Obtener estado de conexión

#pragma mark - ****************************** 蓝牙耳机是否链接 - 状态
+ (BOOL)isBluetoothHeadsetConnectedState {
    AVAudioSession *session = [AVAudioSession sharedInstance];
    AVAudioSessionRouteDescription *routeDescription = [session currentRoute];
    if (routeDescription) {
        NSArray *outputs = [routeDescription outputs];
        if (outputs && 0 < [outputs count]) {
            AVAudioSessionPortDescription *portDescription = [outputs objectAtIndex:0];
            NSString *portType = [portDescription portType];
            if (portType && [portType isEqualToString:@"BluetoothA2DPOutput"] && [portType isEqualToString:@"BluetoothHFP"] && [portType isEqualToString:@"BluetoothHSP"]) {
                return YES;
            }
        }
    }
    return NO;
}

2. Obtenga la entidad de conexión.

#pragma mark - ****************************** 蓝牙耳机是否链接 - 实体
+ (AVAudioSessionPortDescription *)isBluetoothHeadsetConnectedEntity {
    /*
     蓝牙开启未链接耳机:
     Speaker
     
     单向保真音频协议(输出):
     BluetoothA2DPOutput
     ...
     
     双向保真音频协议(输入 & 输入):
     BluetoothHFP - HFP(Hands-Free Profile)
     BluetoothHSP - HSP(HeadSet Profile)
     
     其它:
     Receiver
     */
    AVAudioSession *session = [AVAudioSession sharedInstance];
    AVAudioSessionRouteDescription *routeDescription = [session currentRoute];
//    NSLog(@"%@", routeDescription);
    if (routeDescription) {
        NSArray *outputs = [routeDescription outputs]; // 输入源
        if (outputs && 0 < [outputs count]) {
            AVAudioSessionPortDescription *portDescription = [outputs objectAtIndex:0];
            NSString *portType = [portDescription portType];
            NSLog(@"PortType: %@", portType); // 蓝牙开启未链接: Speaker && 链接耳机: BluetoothA2DPOutput BluetoothHFP BluetoothHSP
            if (portType && [portType isEqualToString:@"BluetoothA2DPOutput"]) {
                NSLog(@"[蓝牙检测] - 状态 - 输出 - %@", [portDescription portName]);
                return  portDescription;
            } else if (portType && [portType isEqualToString:@"BluetoothHFP"] && [portType isEqualToString:@"BluetoothHSP"]) {
                NSLog(@"[蓝牙检测] - 状态 - 输出 & 输入 - %@", [portDescription portName]);
                return portDescription;
            }
        }
    }
    return nil;
}

CoreBluetooth Detección en tiempo real del estado de conmutación de Bluetooth


Lo anterior es todo el contenido compartido esta vez, ¡espero que pueda ser de ayuda para todos!

Supongo que te gusta

Origin blog.csdn.net/survivorsfyh/article/details/129031314
Recomendado
Clasificación