问题标签 [audiosession]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 如何更改或禁用 AudioSessionInterruptionListener
我需要一种在 AudioSession 初始化后更改或禁用 AudioSessionInterruptionListener 的方法。
原因如下:在某些用例中,我的应用程序必须在后台运行并进行录音,因此设置了音频背景模式 - 这很有效。当发生呼叫或其他中断时,我必须通知其他一些对象干净地停止录制 - 这很有效。然后,当应用程序使用我调用的 AudioSession 完成时AudioSessionSetActive(false);
- 这有效(如果应用程序在会话处于活动状态的情况下发送到后台,我会在顶部看到红色条,如果会话处于非活动状态,则不会出现红色条。虽然,我猜,从技术上讲,该应用程序仍处于“活动”后台模式)。
然而!如果我完成了录制,并且应用程序已经发送到后台并且音频会话已经被停用,如果有来电,或者如果 Siri 被激活,那么我的应用程序仍然会收到 AudioSessionInterruptionListener 回调。是的,我可以添加代码来测试我的应用程序当前是否应该响应中断。但是,我认为这是一个错误。如果我已停用 AudioSession,则应停止调用中断,实际上应停止调用所有音频会话/属性侦听器。
如何更改或禁用 AudioSessionInterruptionListener?或者用另一种方式来问这个问题,我怎样才能防止我的应用在不需要时“使用”后台模式?
附加信息
好的,似乎在 iOS 6 中现在有 NSNotifications for AudioSession interrupts:AVAudioSessionDidBeginInterruptionNotification
和AVAudioSessionDidEndInterruptionNotification
. 但是,我支持 iOS 5.1 及更高版本,所以这无济于事。我发现新通知的同一个文档说,Obj-C 接口 AVAudioSession 的委托属性已被贬低(在 IOS 6 中),所以我可能不应该使用它来设置/更改委托(并获取 Obj -C 中断回调)。
我想一个可能的解决方法是测试 iOS 版本并在 <6.0 中设置和取消设置委托,然后在 6.0+ 中侦听 NSNotifications(不会出现在 <6.0 中,因此不应该中断)。然而,这似乎是一个杂牌。
iphone - 使用 OpenAL 时是否可以“躲避”音频会话?
有人知道这是否可能吗?
我的音频会话和 OpenAL 设置如下:
我有这样的闪避设置:
然而,声音并没有回避。如果我注释掉以下几行,它只会躲避:
无论如何让 OpenAL 与音频闪避属性一起玩得很好?
ios - 如何在 iOS 中混合来自不同音频单元的声音?
我有一个具有 VoIP 的应用程序,同时它呈现海关声音。
VoIP 音频单元设置如下:
而呈现声音的是:
我在混合两种声音(语音和自定义声音)时遇到问题。当声音开始时,渲染的声音会以较低的音量播放(即使它当前是静音的)。比较单独播放的渲染声音和 VoIP 通话期间的相同声音,结果降低了 13 dB。
谢谢,狮子座。
ios - AVAudioPlayer 无法在后台开始播放
我正在使用AVAudioPlayer
和NSFileHandle
做音频流。基本思想是我将流音频数据保存到带有文件系统的设备中,然后用于AVAudioPlayer
播放刚刚保存的文件。 AVAudioPlayer
即使正在进行流式传输,仍然可以播放该文件。
我有一个UIButton
开始流式传输/下载。当下载的数据累积到特定数量的 Bytes 时,将自动播放(触发AVAudioPlayer
“播放”方法)。AVAudioPlayer
我的问题是:我点击按钮开始流式传输/下载,然后很快按下 iPhone 的主页按钮,让我的应用程序进入后台。下载继续在后台运行,但“播放”方法AVAudioPlayer
返回“否”,这意味着“播放”方法不播放音频。
我在音频播放器的 init 方法中添加了AVAudioSession
相关代码:
同样在 info.plist 中,我为键“必需的背景模式”添加了一个项目“应用程序播放音频”。但是,“播放”仍然没有在后台正确调用。我还错过了什么?提前非常感谢。
ios - iOS 音频仅输出到耳机插孔
是否可以仅将音频输出到 iOS 设备的耳机插孔而不能输出到其他地方?(例如不是扬声器或蓝牙)
我们正在试验一个硬件插件,它从音频插孔接收输入作为音调。我们可以尝试检测耳机插孔是否已连接,但这仍然存在连接蓝牙音频输出设备的情况——我们不希望在用户的蓝牙耳机或扬声器中听到声音。
ios - 我可以同时运行两个音频会话吗?
我使用 AVFoundation 框架中的 AVCamCaptureManager 类。同时我想用音量上键拍照。
据我了解,如今唯一可能的解决方案是使用音频会话(打开它并收听音量变化)。我从这里开始使用 RBVolumeButtons 类https://github.com/blladnar/RBVolumeButtons
当我的应用程序启动时, AVCamCaptureManager 会初始化音频会话。然后我需要开始监听音量的变化,所以 RBVolumeButtons 初始化一个新的音频会话,中断前一个。因此,相机停止,但我可以使用音量按钮。
如何避免这种中断,以及如何同时使用音量键和相机?也许我可以同时运行两个音频会话?或者也许有一种方法可以访问 AVCamCaptureManager 的音频会话并使用它?
非常感谢您考虑回答我的问题!
PS 我使用这一行在 RBVolumeButtons 类中添加属性侦听器:
iphone - 调用iOS睡眠定时器时如何停止音频
当 iOS 睡眠定时器被调用时,我想停止我的音频应用程序。
就像潘多拉应用程序一样。
http://help.pandora.com/customer/portal/articles/24324-ios-sleep-timer-with-pandora
点击时钟应用程序,点击计时器,选择时间,点击计时器结束时,点击停止播放
如果 Pandora 应用程序正在运行,这将使它进入睡眠状态。
我可以看到 inInterruptionState == kAudioSessionBeginInterruption 在 iOS 睡眠定时器结束时被调用,但是我如何检测它是睡眠定时器还是只是像电话呼叫这样的中断?
这是我的代码。目前,我的应用程序在 iOS 睡眠定时器结束后才重新开始播放。
core-audio - AudioSessionSetActive(false) 总是失败
我刚刚发现我AudioSessionSetActive(false)
在“关闭”代码中的调用永远不会返回 noErr。有一些未记录的代码,例如(OSStatus) 803204036
,不对应列出的返回代码:http:
//developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/AudioSessionServicesReference/Reference/reference.html
我浏览了所有列出的与相关的 Xcode 示例代码,AudioSessionSetActive()
发现绝对没有带有“false”参数的调用。所有示例都只是AudioSessionSetActive(true)
在各种场景下调用。样本是:
难道我们自己不应该AudioSessionSetActive()
用 false 打电话吗?是否隐式处理停用?
objective-c - 如何取消 [AVAudioSession sharedInstance];
目前我有一个音频会话,我使用
audioSession = [AVAudioSession sharedInstance];
覆盖铃声,但我想知道是否有一种方法可以撤消此操作,以便我的音频会话不会成为共享实例。
ios - 在没有麦克风权限的情况下在 iOS7 中使用蓝牙声音设备
在 iOS7 中,AudioSession 类别AVAudioSessionCategoryPlayAndRecord
要求麦克风权限。但是,如果我只需要支持外部音频的蓝牙,则该权限感觉不对。有些人和我现在的情况一样,但我找不到答案。
在 iOS6 中,我使用此代码将声音路由到蓝牙设备:
有没有什么方法可以支持蓝牙设备而不使用询问用户使用麦克风的权限的音频会话类别?
PS:我注意到谷歌对地图和 youtube 也是如此。是否有可能我们无法在 iOS7 上解决这个问题?