我对CoreAudio AudioSession框架有几个与几个蓝牙任务相关的问题,我希望有人可以帮助我解决这些问题,或者至少可以确认我的最新发现. usecase是一个导航应用程序,希望连接支持蓝牙的无线电,支持HFP和A2DP.我已经阅读了整个AudioSession编程指南,但我还有一些未解决的问题,特别是通过蓝牙使用音频输出.

>蓝牙HFP音频输出(kAudioSessionOutputRoute_BluetoothHFP)仅在AudioSession设置kAudioSessionCategory_PlayAndRecord且您覆盖以下属性时才可用:kAudioSessionProperty_OverrideCategoryEnableBluetoothInput.这是真的?如果没有,我将如何通过mediaplayback会话作为示例路由到kAudioSessionOutputRoute_BluetoothHFP路由.
>类别为kAudioSessionCategory_PlayAndRecord时,无法在后台模式下输出音频.因此,如果我在后台,我无法通过蓝牙HFP路线播放声音.这是真的?如果app在后台,有没有办法通过蓝牙HFP协议发送音频?
>如果有可用的A2DP设备,我的音频路由将始终自动切换到kAudioSessionOutputRoute_BluetoothA2DP路由.如何防止此路线更改?另外,我如何指定我想要的输出路线.使用iOS5,可以通过kAudioSessionProperty_AudioRouteDescription标志查询所有这些路由目的地,但我不知道如何设置它,因为我想拥有它.是否有可能实现这一目标?

我希望你们中的一些人可以帮助我解决这些问题.这对我对CoreAudio的整体理解,特别是AudioSession框架,真的有帮助.

解决方法

AudioSession是一项棘手的业务.

1.Bluetooth HFP audio output (kAudioSessionOutputRoute_BluetoothHFP) is only possible in case of AudioSession kAudioSessionCategory_PlayAndRecord is set and you are overriding the following property: kAudioSessionProperty_OverrideCategoryEnableBluetoothInput. Is this true? If not,how I can route as an example with the mediaplayback session to kAudioSessionOutputRoute_BluetoothHFP route.

如果您连接了蓝牙耳机,那么确实如此.您将需要kAudioSessionCategory_PlayAndRecord音频会话集和kAudioSessionProperty_OverrideCategoryEnableBluetoothInput设置,以便从蓝牙耳机中播放音频. EnableBluetoothInput根据this影响输入和输出.另外请记住,由于蓝牙输入设备的限制,音频将以8000 Hz的频率播放.对于支持A2DP的已连接设备,您可以将其保留在音频会话kAudioSessionCategorymediaplayback中,它将以44100 Hz采样率播放.

2.Audio output in background mode is not possible with the category kAudioSessionCategory_PlayAndRecord. Therefore I can not play sound through an bluetooth HFP route if I am in background. Is this true? Is there a way how to send audio through the Bluetooth HFP protocol if app is in the background?

只要您在应用程序plist中设置了背景音频模式键,就可以在后台播放通过蓝牙HFP播放音频.查看更多here.

3.If there is an A2DP enabled device available my audio route will always switch automatically to the kAudioSessionOutputRoute_BluetoothA2DP route. How can I prevent this route change? In addition how can I specify the output route I wanna have at the moment. With iOS5 it is possible to query all those route destination through the kAudioSessionProperty_AudioRouteDescription flag,but I have no idea how I can set it as I wanna have it. Is it somehow possible to achieve this?

您希望音频在哪里?您可以尝试将音频会话设置为PlayAndRecord,以防止它进入A2DP.这可能不受您的控制,音频会话将使用它认为对用户直观的内容.如果他们刚刚连接了A2DP设备并且您只输出音频,则将使用A2DP设备.

iOS:使用蓝牙音频输出(kAudioSessionProperty_OverrideCategoryEnableBluetoothInput)AudioSession的更多相关文章

  1. IOS 7中的外部蓝牙键盘集成

    解决方法使用新的UIKeyCommand类和UIResponder链,iOS7中的蓝牙键盘上有100%支持的键盘快捷键处理方式.Ididblogaboutthis,但这是要点:在Responder链中的某处为keyCommands添加一个返回UIKeyCommand对象数组的方法:然后,当按下F时,Responder链将查找该handleCommandF方法.如果有多个定义,它将使用最严格的定义.请注意,这仅在输入是第一响应者时才有效.如果你想在你的应用程序中使用“全局”快捷方式,你可以在屏幕上隐藏UIT

  2. iOS蓝牙BLE安全性和“Just works”关联模型

    根据thisdocument和thiswhitepaper,有一些安全措施旨在防止被动窃听蓝牙BLE连接.有没有办法在iOS中央管理器和外围设备之间实现安全连接?

  3. 通过蓝牙HID加密狗将数据从ios设备发送到Windows PC

    >如果可以使用BLE4.0使用蓝牙到HID键盘仿真器加密狗,是否可以将支持BLE4.0的iOS设备与它配对?>有没有人尝试任何特定的HID键盘模拟器加密狗支持BLE4.0?

  4. ios – 如何使用iphone使用蓝牙或wifi与OBD II进行通信

    我想为iOS创建一个简单的应用程序,它通过ODBIIWifi/蓝牙设备从汽车读取数据并在iPhone屏幕上显示.但我不知道从哪里开始.请有人帮我实现以下结果.我有蓝牙和wifi加密狗.第1步:配对蓝牙或Wifi加密狗和iPhone.第2步:通过加密狗阅读详细信息请参阅我能够轻松理解的任何教程或示例代码.我想深入了解这些过程,并希望自己编写代码.所以请帮忙.提前致谢.解决方法正如David所说,在i

  5. iOS核心蓝牙状态保存和恢复问题

    我还在Apple开发者论坛上看了一篇文章,自从iOS7以来,如果用户手动杀死我正在做的应用程序,操作系统现在永远不会以任何理由重新启动应用程序.任何有关这方面的帮助将非常感谢!

  6. ios – Arduino和iPhone与蓝牙3.0的连接

    我想构建一个需要蓝牙连接的应用程序.蓝牙HC05模块连接到Arduino.我想知道构建可连接到此蓝牙模块的应用程序所需的框架.仍然不知道如何开始.有人可以帮忙吗?

  7. iOS BLE蓝牙 – 发送/接收HEX数据

    我正在创建一个应该连接到自定义BLE设备的iOS应用程序.我需要iOS应用程序发送2个HEX命令,一个用于启用设备的一部分,另一个用于请求数据.iOS中是否有任何方式发送/接收自定义HEX数据,除了使用服务&特点?

  8. 关闭iOS原生MPVolumeView音频路由菜单

    我正在使用MPVolumeView允许用户在使用我的应用程序时控制他喜欢的音频路径.该代码显示了该视图:当用户点击音频路由按钮时,会出现一个带有可用选项的菜单.问题:显示音量视图的屏幕可能需要隐藏,因为我的应用程序处理各种事件,我想同时隐藏音频路由菜单我的问题:有没有人知道是否可以手动关闭MPVolumeView的音频路由选择菜单而无需用户按下取消按钮?解决方法在iOS8上,您可以使用以下使用私有API的代码

  9. 可以通过iOS中的蓝牙PAN与系留设备进行通信

    我有一个设备,我通过蓝牙从iOS设备分享我的连接.我想知道是否可以访问在PAN网络上的iPhone上创建服务器并从设备访问它或在设备上创建服务器并从iPhone访问它.有没有人有这种经历?

  10. ios – iPhone中的蓝牙编程

    我打算开发一个iPhone应用程序,使用蓝牙将文件/数据传输到Windows桌面或从我的Windows桌面传输.请告知我iPhoneSDK中是否有用于此目的的编程接口.在WindowsMobile中,我可以使用FTP配置文件或在串行端口配置文件上编写应用程序来传输文件.任何人都可以通过编写适当的应用程序告诉我,这是否可以通过iPhone实现.如果没有,请让我知道通过蓝牙从iPhone传输文件/数据到Windows桌面PC的替代方法.解决方法不,FTP或SPP蓝牙配置文件在iPhone中没有打开…

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部