AVAudioSession:某些蓝牙设备在我的应用程序上无法正常工作

2024-01-25

我正在使用 AVAudioSession 开发一个快速的音频/视频和文本聊天 iOS 应用程序。

每当我选择使用某些蓝牙设备时,设备上播放的声音不是应用程序音频流。每当发送/接收消息时,它们仅播放文本聊天库发送的系统声音。并非所有蓝牙设备都会发生这种情况,其中一些设备一切正常。在内置麦克风和扬声器上,该应用程序也可以正常工作。

以下是我的班级中管理设备的最重要的方法:

class MyAudioSession
{
    private var mAudioSession: AVAudioSession;

    init!()
    {
        self.mAudioSession = AVAudioSession.sharedInstance();

        do {
            try self.mAudioSession.setActive(false);

            try self.mAudioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: .AllowBluetooth);
            try self.mAudioSession.setMode(AVAudioSessionModeVideoChat);
            try self.mAudioSession.setActive(true);
        }
        catch {
            return nil;
        }
    }

    func switchToDevice(device: AVAudioSessionPortDescription!) -> Bool
    {
        var ret = false;

        if (device != nil) {
            do {
                try self.mAudioSession.setPreferredInput(device);

                ret = true;
            }
            catch {
                self.logSwitch(device, error: error);
            }
        }

        return ret;
    }
}

我想了解为什么我的应用程序仅在某些蓝牙设备上无法正常工作。这些相同的设备在我的 Cel 上的其他应用程序上正常工作。

我做了另一个测试:我为 MPVolumeView 更改了所有这些,并且发生了完全相同的问题,因此问题似乎出在音频播放器上。

有人能给我一个解决这个问题的建议吗?

Thx.


约格, 虽然这可能不是最好的答案,但我已经能够克服奇怪的蓝牙问题。我的问题似乎与你的类似,因为我也正在使用:

AVAudioSessionCategoryPlayAndRecord

这导致我在某些蓝牙设备(不是全部,而是某些)上出现问题。

我最后做的是将类别设置为:

AVAudioSessionCategoryPlayback

然后,当我需要录制时,我会将类别切换为:

AVAudioSessionCategoryRecord

完成录音后返回播放。

这是此时我可以通过在不同输出(扬声器、耳机、蓝牙)之间切换获得一致结果的唯一方法。

希望对一些人有所帮助。猜测这是“AVAudioSessionCategoryPlayAndRecord”中的错误

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AVAudioSession:某些蓝牙设备在我的应用程序上无法正常工作 的相关文章

  • 如何在 Firebase 控制台中使用 Apple 新的 APN .p8 证书

    随着最近 Apple 开发者帐户的升级 我面临着一个困难 在尝试创建推送通知证书时 它为我提供了 p8 证书 而不是可以导出到 p12 的 APNs 证书 Firebase 控制台仅接受 p12 证书 那么我如何从这些新的 p8 证书中获取
  • iPhone 的电子书框架

    我有一本书想作为 iPhone 应用程序发布 有谁知道我可以使用免费 或便宜 的框架来实现这一目标 换句话说 我想为我的书创建一个独立的 XCODE 项目 其中包含 iPhone 用户将本书作为独立应用程序阅读所需的所有代码 我见过 O R
  • 在横向中自动调整 UITableCells 内容的大小

    在 UITableView 中 我通过 UILabels 将内容添加到单元格中 定义最佳尺寸 与单元格宽度允许的一样大 我注意到只有tableView contentSize width是可靠的 因为cell contentView bou
  • 使用完成处理程序在 Swift 中调用连续动画

    我正在制作一个可以显示化学反应动画的应用程序 每个原子都是一个 SCNSphere 并通过 SCNActions 进行动画处理 我尝试使用 runAction 中的完成处理程序在当前操作完成后调用下一个动画 因为每个原子必须做出很多不同的运
  • GeoFire Swift 3 - 保存和更新坐标

    我正在尝试使用 GeoFire 将坐标存储到 Firebase 数据库中 我不确定如何更新新坐标 因为它们每秒都会更改 更新 随着childByAutoId 它正在为每辆自行车生成一个新的唯一 ID 如何引用这个唯一的自行车 ID 例如 用
  • 如何获取CATransition/Animation的结束事件?

    我的代码如下所示 CATransition transition CATransition animation transition duration duration 我希望得到CATransition Animation的结束事件 是否
  • 在 Swift 中从 UIScrollView 创建 PDF 文件

    我想从 UIScrollView 的内容创建一个 PDF 文件 func createPdfFromView aView UIView saveToDocumentsWithFileName fileName String let pdfD
  • AudioTrack、SoundPool 或 MediaPlayer,我应该使用哪个?

    如果我需要能够 播放多个音频文件 具有不同的持续时间 例如 5 到 30 秒 独立设置右 左声道的音量 应用声音效果 如混响 失真 那么 我应该使用哪个 API 另外 我在 AudioTrack API 上找不到太多文档 有谁知道在哪里可以
  • 在 iOS 上将 NSString 转换为 NSDate 的正确方法?

    我一直在使用此方法将常规 NSString 对象转换为 NSDate 但尝试向 Apple 提交更新 但遭到拒绝 在 iOS 中还有什么其他方法可以做到这一点 NSString date str 2011 08 12T12 20 00Z N
  • 在 XCode 中链接静态 ObjC 库的过程

    我正在尝试链接到静态库 但不断收到链接器错误 我发现了一些发布示例的网站 但我无法看到我做错了什么 首先 我创建一个链接到我的库的项目 添加 gt 现有文件找到我的 xcodeproj 文件选择 将项目复制到目标组文件夹 选择我的宿主项目作
  • 如何使用 Swift 使用 TouchID?

    Apple 为 iOS 8 的 TouchID 实现提供的文档采用 Objective C 语言 有 Swift 版本吗 Objective C IBAction touchIDAvailable UIButton touchIDAvail
  • 如何获得蓝牙低功耗设备的实际名称?

    我需要从 ble 传感器获取友好的设备名称 例如 我想找到该设备并告诉用户他们已连接到 我的家庭传感器 我可以找到该设备 但我不知道如何找到该数据 在常规蓝牙中 我相信我可以使用BLUETOOTH DEVICE INFO或winsock 是
  • 忽略触摸事件,让其下面的视图处理触摸?

    我有一个用户可以触摸的可拖动视图 但它的某些矩形将没有图像 alpha 0 当用户单击透明区域时 我能够在没有 alpha 信息的情况下构造透明区域 我希望透明区域下方的视图 同一类 来检测触摸 我的策略是当用户触摸透明区域时让视图忽略触摸
  • Firebase 身份验证问题 - 通过电子邮件地址检查用户是否存在

    我在 Firebase 上创建了一个帐户 它有效 但现在我想阻止人们使用已存在的电子邮件地址创建帐户 这是代码 DatabaseManager shared userExists with email completion weak sel
  • 推送动画,没有阴影和停电

    我有一个简单的iOS NavigationController基于应用程序 二UICollectionViews 相继 如果元素打开 第一个合集 被点击时 第二集 将被打开 非常简单 重要的提示 Both UICollectionViews
  • 以编程方式使用 Stack Overflow 进行身份验证

    我想在我的 iPhone 应用程序中添加赞成和反对投票 MyStacks http itunes apple com gb app mystacks id360030953 mt 8 为此 我需要能够使用 Stack Overflow 对用
  • AVAssetExportSession 为零 iPhone 7 - Plus 模拟器

    AVAssetExportSession在 iPhone 6 及以下版本上运行良好 但在 iPhone 7 iPhone 7 Plus 模拟器上运行不佳 Xcode 8 0 这段代码return nil在exportSession中 当在i
  • 如何阻止 UITableView moveRowAt IndexPath 在重新排序时留下空白行

    我遇到一个问题 在重新排序 UITableViewCells 时 tableView 不随单元格滚动 仅出现一个空白行 任何后续滚动都会出现数组越界错误 堆栈跟踪中没有我的任何代码 这是该问题的快速视频 http www screencas
  • UIImageJPEGRepresentation 在视网膜显示屏上提供 2x 图像

    我有这段代码 它创建一个图像 然后向其添加一些效果并缩小其大小以使其largeThumbnail UIImage originalImage UIImage imageWithData self originalImage thumbnai
  • iOS - UITableViewCell 使文本加粗

    我有一个字符串 NSString userInfo James Johnson james 我想做的就是大胆James Johnson并保留 james正常字体 所以我尝试过的是使用NSAttributedString但为了完成这个过程 我

随机推荐

  • nodejs - 如何比较 bcrypt 的两个哈希密码

    您好 在我搜索解决方案后 我需要一些关于这个问题的帮助 但我还没有找到 我想将2个哈希密码与相同密码的bcrypt进行比较 我该怎么做 例如 我有这 2 个哈希密码 它们来自 bcrypt 中的相同密码 var password E Js
  • 有没有办法保证Java中的接口扩展类?

    假设我有以下情况 public abstract class Vehicle public void turnOn public interface Flier public void fly 有没有一种方法可以保证任何实现的类Flier还
  • 如何将文件从旧文件夹结构移动到新文件夹结构?

    我想修改现有的文件夹结构 我有一个按以下方式组织的文件树 Client Name State Province City Order Number 但我对其进行了修改 在订单号之前添加一个地址 并用连字符分隔 如下所示 Client Nam
  • 变址寻址方式和隐式寻址方式

    索引寻址模式通常用于访问数组 因为数组是连续存储的 我们有一个索引寄存器 它在每次迭代中都会递增 当添加到基地址时 它会给出数组元素地址 我不明白这种寻址模式的实际需要 为什么我们不能通过直接寻址来做到这一点 我们有了基地址 每次访问的时候
  • document.createElement("script") 同步

    是否可以调用 js同步文件然后立即使用
  • XmlAttribute/XmlText 不能用于编码复杂类型

    我在下面的类中收到以下错误 无法序列化 DataObjects Ingredient 类型的成员 Ingredient XmlAttribute XmlText 不能用于对复杂类型进行编码 有什么想法吗 DataContract Seria
  • Exchange Web 服务创建会议请求工作示例

    是否有关于如何使用 C 使用 EWS for Exchange 2007 创建会议请求的工作示例 需要哪些属性 我添加了一个 Web 服务引用 并且可以连接以创建和发送各种项目 但不断收到错误 设置操作对属性无效 关于响应消息 它从来没有说
  • 在 Visual Studio 2008 中更改字体大小和样式

    Visual Studio 2008 中更改字体大小和字体类型的设置在哪里 使用菜单Tools gt Options gt 内部环境 gt 字体和颜色
  • iFrame:如何使用 javascript 将服务器响应(HTML)直接显示到 iFrame 中?

    我收到一个简单的服务器响应 它是一个 html 文件 我想在 iFrame 中显示相同的内容 而不将该文件保存到我的工作区或计算机中 我正在进行 ajax 调用 如下所示 Ext Ajax request url url method PO
  • 字符识别(OCR算法)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在开发一个项目 其中我必须开发 OCR 算法 我必须从图像中读取文本 然后将其转换为不同的语言 所以我的第一个任务是从图像中获取文
  • Android编程打开DataUsage设置页面

    在 Android 5 0 中 移动数据设置可在数据使用设置中使用 我想在android中打开数据使用设置页面 但我没有找到任何打开它的意图 为什么要打开数据使用设置页面 你尝试过这种方法吗 final Intent intent new
  • MIN 和 MAX 宏的 Swift 等效项

    在 C Objective C 中 可以使用 MIN 和 MAX 宏找到两个数字之间的最小值和最大值 Swift 不支持宏 并且语言 基础库中似乎没有等效的宏 是否应该采用自定义解决方案 也许基于这样的泛型one http www cplu
  • 未捕获的语法错误:意外的标记 e

    I am getting Uncaught Syntax Error newly the only addition is sending retrieve json data from server to client How to in
  • 通过 Bash Shell 脚本从 url 列表中提取父域名

    我有一个像这样的网址列表 http noto zrobimystrone pl pucenter images NGdocs http visionwebmkt com unsubscribe php M 879552 C b744d324
  • 列出给定库模块中的谓词

    有没有办法列出 SICStus Prolog 给定库模块中定义的所有谓词 例如如果我加载列表模块 use module library lists 我可以从提示符中运行另一个谓词来告诉我刚刚导入了哪些谓词吗 这适用于 SWI Prolog
  • 哪种 pyspark 抽象适合我的大型矩阵乘法?

    我想执行大型矩阵乘法 C A B T然后通过应用严格的阈值来过滤 C 收集形式为 行索引 列索引 值 的列表 A 和 B 很稀疏 条目大多为零 它们最初表示为稀疏 scipy csr 矩阵 矩阵的大小 当它们是密集格式时 答 9G 900
  • 有关构建 RDBMS 的资源 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在考虑实施 RDBMS 有没有关于数据库内部工作原理以及在开始构建自己的数据库时需要了解哪些内容的
  • JavaScript 选择/范围框架

    我一直在使用选择 范围对象 并且由于浏览器之间对于特定选择 范围内容 甚至超过 DOM 存在大量不一致 我想知道是否有一个框架可以帮助我解决这些问题 我编写了一个新的范围 选择库 名为Rangy http code google com p
  • 将字符串转换为带时区的日期

    我有一个格式为 yyyy MM dd hh mm a 的字符串 我可以单独获取时区对象 其中上面的字符串代表日期 我想将其转换为以下格式 yyyy MM dd HH mm ss Z 我怎样才能做到这一点 您可以使用简单日期格式 http d
  • AVAudioSession:某些蓝牙设备在我的应用程序上无法正常工作

    我正在使用 AVAudioSession 开发一个快速的音频 视频和文本聊天 iOS 应用程序 每当我选择使用某些蓝牙设备时 设备上播放的声音不是应用程序音频流 每当发送 接收消息时 它们仅播放文本聊天库发送的系统声音 并非所有蓝牙设备都会