ios – App无法找到AVAudio BluetoothHFP免提端口Swift

在我的应用程序中,我想检查已连接到手机的AVAudio portTypes.下面的代码适用于BluetoothA2DP和耳机,但是当我将手机连接到我的汽车免提装置时,它不适用于BluetoothHFP.谁能帮我?!我认为已经通过免提/ AV /蓝牙以及许多其他人的所有SO帖子,但无法解决为什么它没有识别BluetoothHFP输出portType.
import AVFoundation

func startCheckAVConnection() {

    // set the AVAudioSession to allow bluetooth. This do/try/catch doesn't seem to make a difference if it is here or not.
    do{
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord,with: AVAudioSessionCategoryOptions.allowBluetooth)
    } catch{
        print(error)
    }

    // Check possible outputs for handsfree
    let outputs = AVAudioSession.sharedInstance().currentRoute.outputs

    if outputs.count != 0 {
        for output in outputs {
            if output.portType == AVAudioSessionPortBluetoothA2DP {
                peripheralLabel.text = "connected to BluetoothA2DP"
            } else if output.portType == AVAudioSessionPortBluetoothHFP { // NOT RECOGNISED
                peripheralLabel.text = "connected to BluetoothHFP"
            } else if output.portType == AVAudioSessionPortHeadphones {
                peripheralLabel.text = "connected to Headphones"
            }
        }
    } else {
        peripheralLabel.text = "Please connect handsfree"
    }

    // Add observer for audioRoutechangelistener
    NotificationCenter.default.addobserver(
        self,selector: #selector(TopVC.audioRoutechangelistener(_:)),name: NSNotification.Name.AVAudioSessionRouteChange,object: nil)
}

解决方法

尝试将您的类别设置更改为:
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord,with: AVAudioSessionCategoryOptions.allowBluetooth)

HFP不适用于多路径类别AFAICT.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...