Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AVAudioSession.RouteChangeReason未检测到连接的蓝牙耳机/耳机_Ios_Swift_Avfoundation_Avaudiosession_Airpods - Fatal编程技术网

AVAudioSession.RouteChangeReason未检测到连接的蓝牙耳机/耳机

AVAudioSession.RouteChangeReason未检测到连接的蓝牙耳机/耳机,ios,swift,avfoundation,avaudiosession,airpods,Ios,Swift,Avfoundation,Avaudiosession,Airpods,我正在使用Swift为iOS开发语音通话应用程序,我需要启用无线(蓝牙)耳机/耳机的自动检测和自动连接 我正在使用AVAudioSession RouteChangeReason,但它无法检测airpods或其他无线耳机何时通过蓝牙连接。连接设备后,我甚至可以在蓝牙设置中看到它已连接,但该设备未在MPVolumeView中列出,正如您在中看到的 我一直在寻找一个关于如何在互联网上解决这个问题的答案,尽管在StackOverFlow上有很多类似的问题,但没有一个与我的案例相关,所以请告诉我如何解决

我正在使用Swift为iOS开发语音通话应用程序,我需要启用无线(蓝牙)耳机/耳机的自动检测和自动连接

我正在使用AVAudioSession RouteChangeReason,但它无法检测airpods或其他无线耳机何时通过蓝牙连接。连接设备后,我甚至可以在蓝牙设置中看到它已连接,但该设备未在MPVolumeView中列出,正如您在中看到的



我一直在寻找一个关于如何在互联网上解决这个问题的答案,尽管在StackOverFlow上有很多类似的问题,但没有一个与我的案例相关,所以请告诉我如何解决这个问题。

。allowBluetoothA2DP
对于
播放和录制
无效。你不能记录超过2分钟。把那个拿走。请注意,当您这样做时,如果用户正在听音乐,质量将急剧下降(可能AirPods对此有专有的解决方案;我没有在这种模式下使用它们)。为了通过蓝牙进行录制,您必须使用HFP,它基本上提供“电话”质量的音频。

。allowBluetoothA2DP
播放和录制无效。你不能记录超过2分钟。把那个拿走。请注意,当您这样做时,如果用户正在听音乐,质量将急剧下降(可能AirPods对此有专有的解决方案;我没有在这种模式下使用它们)。为了通过蓝牙进行录制,您必须使用HFP,它基本上提供“电话”质量的音频。

我刚刚阅读了代码,最后发现了问题所在。问题是我不止一次地设置了类别,因此出于某种原因,这导致无线耳机/耳机不能直接连接到应用程序。

我只是阅读了代码,最终发现了它的问题所在。问题是我不止一次设置了该类别,因此出于某种原因,这导致无线耳机/耳机不能直接连接到应用程序。

您可能正在运行一个禁止该设备的AVAudioSession。你启动了音频会话吗?你通过了哪些选择?(你这里所说的“自动检测和自动连接”是什么意思还不太清楚。对于非MFi设备来说,这一领域的大多数事情都是不可能的,甚至对MFi设备来说也有一定的限制。)@RobNapier是的,我做到了。使用选项
[.allowBluetooth、.allowBluetoothA2DP、.allowAirPlay]
。我的意思不是说当我将蓝牙耳机连接到iPhone时,我需要蓝牙耳机来连接我的应用程序。你使用的是哪一类耳机?这些选项有些矛盾,不能适用于所有类别。设置名称中的“允许”具有误导性。你可能认为你让事情变得更加灵活,但这不是AVAudioSession的工作方式。如果您传递了没有意义的选项,您可以排除您想要允许的输入源。(我真的犯了这个错误,把我的应用程序搞砸了吗?是的,我犯了。)@RobNapier我正在使用Play和Record。你可能正在运行一个禁止该设备的音频会话。你启动了音频会话吗?你通过了哪些选择?(你这里所说的“自动检测和自动连接”是什么意思还不太清楚。对于非MFi设备来说,这一领域的大多数事情都是不可能的,甚至对MFi设备来说也有一定的限制。)@RobNapier是的,我做到了。使用选项
[.allowBluetooth、.allowBluetoothA2DP、.allowAirPlay]
。我的意思不是说当我将蓝牙耳机连接到iPhone时,我需要蓝牙耳机来连接我的应用程序。你使用的是哪一类耳机?这些选项有些矛盾,不能适用于所有类别。设置名称中的“允许”具有误导性。你可能认为你让事情变得更加灵活,但这不是AVAudioSession的工作方式。如果您传递了没有意义的选项,您可以排除您想要允许的输入源。(我真的犯了这个错误,把我的应用搞砸了吗?是的,我真的搞砸了。)@RobNapier我在用play和cord谢谢。但这与我的问题无关,我的问题是airpods即使通过蓝牙连接到iPhone,也没有连接到应用程序。你试过删除该选项吗?“当前路线”是音频会话的一部分,而不是手机。设备通过蓝牙连接并不意味着它对您的音频会话有效,因此不会被选择。仅连接不会使设备成为有效路由或当前路由(您可以同时连接多个蓝牙音频设备)。如果你关闭音频线路,我希望AirPods会再次出现,如果我理解你在这里所做的。是的,我尝试过,但没有成功。我理解,但即使它不会自动连接,它至少应该可用或列在currentRoute.outputs上,不是吗?如果它不是当前音频会话的有效路由,则不会。我不太清楚为什么“аааааimk_”会与“iPhone”分开出现。那只是内置扬声器,对吗?(但是,当您的选项无效时,您将看到的行为正是仅使用内置扬声器作为路由。我还将删除
.allowAirPlay
,并且只传递
.allowBluetooth
(这实际上意味着HFP,而不是蓝牙)。如果这样做有效,从那里开始构建。我没有玩过AirPlay,但这正是我在通过
.allowBluetooth
.allowBluetooth A2DP
时在我的应用程序中看到的症状。嗯,我也在使用WebRTC。实际上,我正在使用AVAudioSession设置的是RTCAdioSession。但是感谢你的建议,我实际上已经在使用了正在考虑这样做。谢谢。但这与我的问题无关,我的问题是airpods没有连接到应用程序,甚至认为他们是通过蓝牙连接到iPhone的。你是否尝试删除该选项?当前路径是音频会话的一部分,而不是手机。事实上