音频会话:在 iOS 7.1 中使用测量模式会导致音量过低/没有声音

2024-01-28

将 AVAudioSessionModeMeasurement 与 AVAudioSessionCategoryPlayAndRecord 一起使用过去可以在 iOS 5.x、6.x 和 7.0 下正常工作,但现在在 iOS 7.1 下的某些(不是全部)设备上会导致扬声器音量较低/没有声音。这是代码:

NSError* error = nil;
// Set Aduio Session category
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord
              withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker
                    error:&error];
if( error ) ...

// Set Audio Session mode
[audioSession setMode:AVAudioSessionModeMeasurement error:&error];
if( error ) ...

旁注:旧版本的代码使用 AudioSessionSetProperty 函数来设置 kAudioSessionProperty_OverrideCategoryDe​​faultToSpeaker,但在 iOS 7.1 下仍然存在相同的问题。

到目前为止,音量低(或没有声音)问题似乎仅发生在 iPad 4 设备上。我不知道这种情况是发生在所有 iPad 4 上还是仅发生在部分 iPad 4 上,但只有使用 iPad 4 的客户在升级到 iOS 7.1 后就此问题与我们联系。删除将模式设置为 AVAudioSessionModeMeasurement 的代码可修复该问题;可以正常音量听到音频。但是,不使用测量模式会影响我们对录制的音频进行的信号处理,因此绝对不可取。

音频如何播放似乎并不重要。设置测量模式时,AVAudioPlayer 和音频队列服务都表现出相同的低音量/无声音问题。

因为这个问题似乎只影响 iPad,所以我尝试删除 AVAudioSessionCategoryOptionDefaultToSpeaker 选项(iPhone 通常需要该选项)以查看是否有帮助,但这并没有带来任何改变。

插入耳机即可解决该问题;通过耳机以正常音量听到音频。

假设这是一个 iOS 7.1 错误,我已经将其作为错误报告给 Apple。不过,我想请你们看看我是否错过了 iPad 4 的一些特别之处,或者我的音频会话设置中的其他内容。如果您有一个播放音频的应用程序(通过 AVAudioPlayer 或音频队列服务),即使您让我知道在您将类别更改为 AVAudioSessionCategoryPlayAndRecord 并将模式更改为 AVAudioSessionModeMeasurement 后,音频是否仍然可以在您的 iPad 4 上正常播放,这也会有所帮助极大地。您的应用程序不需要实际录制任何音频;无论是否正在录制音频,都会出现此问题。

预先感谢您的任何帮助。


我自己在 iOS 7 的 iPad 上确实遇到过这个问题。

录制时,AVAudioSessionModeMeasurement 会改变 iOS 7 上的播放音量。

苹果的文档指出: 如果您的应用程序正在执行音频输入或输出的测量,请指定此模式。 ...如果在具有多个内置麦克风的设备上录音,则使用主麦克风。

在有两个扬声器和两个麦克风的 iPhone 上,这种方式有点有意义。当从手机底部的麦克风录音时,它会从耳机扬声器中播放音频,以防止干扰。在免提模式下使用时,它使用大声的底部扬声器和听筒中的麦克风。

在 iOS 7 的 iPad 上,它似乎通过单方面降低播放音量来复制这种行为。

直接回答你的问题:是的,我相信这是一个错误,或者至少是一个非常未记录的功能。

完成录音和测量后,您可以使用以下命令重置静音音频:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&err];
if(err) NSLog(@"AudioSession reset category error at %s:%d", __FILE__, __LINE__);

[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeDefault error:&err];
if(err) NSLog(@"AudioSession reset mode error at %s:%d", __FILE__, __LINE__);

尽管这不一定有帮助,但我确认的发现同样表明不使用 AVAudioSessionModeMeasurement 可以解决问题。

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

音频会话:在 iOS 7.1 中使用测量模式会导致音量过低/没有声音 的相关文章

随机推荐

  • KSQL查询线程数

    有没有办法指定在 KSQL Server 上运行的 KSQL 查询应消耗的线程数 换句话说就是查询的并行性 KSQL Server 上可以运行的应用程序数量有限制吗 何时或如何决定横向扩展 是的 您可以指定ksql streams num
  • Linux 上的编译器支持 Objective-C 块吗?

    如何在Linux上编译以下代码 使用 Ubuntu 10 10 Maverick Meerkat include
  • 单点登录、同一服务器上的多个域、Ruby on Rails

    如果我有一台具有多个域的服务器 那么在同一域上实现单点登录解决方案的首选方法是什么 我目前正在使用该设备 在不同的域上放置了几百万个 cookie 但我陷入了困境 除了实现 SSO 之外 我还需要将各种 cookie 迁移到中央域 对于各种
  • MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA 不会调用 onActivityResult

    我试图用意图 MediaStore INTENT ACTION STILL IMAGE CAMERA 来调用相机 然而 使用StartActivityForResult不打电话onActivityResult 我该如何解决这个问题 get
  • 当 getBluetoothLeAdvertiser 返回一个对象时,为什么 isMultipleAdvertisementSupported() 返回 false?

    我正在尝试在我的设备上使用 BLE 传输 这是我使用的代码和输出 check BLE support Log i TAG BLE supported getPackageManager hasSystemFeature PackageMan
  • Numpy *.npz 内部文件结构

    任何人都可以分享一些有关 npz 中内部数据组织的信息吗 一些文档等 就是找不到东西 这是文档 npz 文件的格式 http docs scipy org doc numpy reference generated numpy savez
  • kubernetes 节点关闭/崩溃恢复?

    我们有一个带有主节点 foo 1 和两个工作节点 foo 2 和 foo 3 的集群 我们有一个在 foo 3 上运行的 pod 由 Kubernetes 决定 我们特意关闭 foo 3 作为实验 我的期望是 Kubernetes 会 看到
  • SocksSocketImpl Finalize 方法内存泄漏

    我们的 Web 应用程序之一出现了内存不足的情况 此应用程序在弹性负载均衡器后面的 Aamzon EC2 上的 Tomcat 上运行 从堆转储来看 大部分内存被 SocksSocketImpl 对象消耗 Yourkit 显示 99 的对象处
  • UITableView didSelectRow 返回错误的行索引值[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 当我选择一行时 它会返回更大或更小的行索引值 但永远不会返回正确的值 如图所示 我选择了14 返回了16 这是我使用的代码 IBO
  • 使用 data.table 包重新编码变量

    如果我想使用 R 重新编码变量data table 语法是什么 我看到了一些 ans 但发现它们不合适 例如如果我有一个名为gender 我想将性别 0 重新编码为未知 1 为男性 2 为女性 这是我尝试的方法 Name lt c John
  • 应用程序购买推荐链接[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有什么方法可以创建指向 App Store 的引用链接 并在链接中添加一些设备 ID 例如 b7a
  • 区分注册和使用 Meteor.loginWithExternalService() 登录

    Meteor 提供了一组loginWithExternalService 方法 例如loginWithTwitter 允许用户创建帐户或通过这些第三方身份验证提供商重新登录 但有没有办法区分这两种行为呢 即让人们sign in与 Twitt
  • 不为特定列更改创建修订

    我有一个经过审核的模型 其中有一列我必须定期更新 我不想为此专栏的每次更改创建修订版 即使属性 X 已更改 是否有任何配置不创建修订版 执行您要求的操作的唯一开箱即用的方法是实施有条件审计 文档中描述的条件审核方法要求用户提供自己的事件侦听
  • 来自基于 OWIN 的 WebAPI 的飞行前选项 CORS 令牌请求出现 400 错误

    确实很奇怪 我尝试向 WebAPI2 基于 OWIN 发出 CORS 请求以获取身份验证令牌 每隔一段时间它总是失败 就像第一个请求失败 但第二个请求将通过 第三个失败了 但第四个会成功 我不明白为什么它有一半的时间有效 我检查浏览器请求
  • Kivy:如何创建透明背景/画布,使按钮看起来漂浮在桌面上

    我正在尝试创建一个在单板计算机 特别是使用 armbian 的 OrangePi One PC 上运行的视频播放应用程序 我在使用 ffpyplayer kivy 使用的视频播放器 创建流畅的视频时遇到问题 因此 我决定简单地运行在视频前面
  • DateTime AddMinutes 方法不起作用

    我的方法的目的是获取 currentTime 并将其设置回 20 分钟 据我所知 我的方法是正确的 但输出显示了其他内容 这是我的代码 DateTime currentTime DateTime Now double minuts 20 c
  • Shell编程:同时执行两个应用程序

    我有两个应用程序 我们称它们为 APP1 和 APP2 我想要那些 两个在我的机器上并行执行 它们没有必要完全从 同一时间 但应该大致在同一时间开始 最初的想法是有一个外壳 脚本如下所示 APP1 APP2 这是技巧还是我需要插入等待语句以
  • 为什么 std::ranges::view_interface 使用 CRTP

    根据cppreference 定义视图的辅助类模板view interface https en cppreference com w cpp ranges view interface使用奇怪的重复模板模式 CRTP 技术 它们背后的设计
  • Vim:重新映射键以切换行编号

    I added set number nnoremap
  • 音频会话:在 iOS 7.1 中使用测量模式会导致音量过低/没有声音

    将 AVAudioSessionModeMeasurement 与 AVAudioSessionCategoryPlayAndRecord 一起使用过去可以在 iOS 5 x 6 x 和 7 0 下正常工作 但现在在 iOS 7 1 下的某