gpt4 book ai didi

iPhone: 'endInterruption' 没有被 类调用

转载 作者:行者123 更新时间:2023-12-03 20:34:46 27 4
gpt4 key购买 nike

我有一个声音管理器类,它实现了 AVAudioSessionDelegate 协议(protocol),即 beginInterruption 和 endInterruption 方法。

但是,当我调用电话并返回应用程序时,这两种方法都不会被调用,并且应用程序随后将保持沉默。这是使用调试器和 NSLog 调用进行测试的。

声音管理器类使用 openAL。

-

我的类是这样声明的:

@interface CMOpenALSoundManager : NSObject <AVAudioPlayerDelegate, AVAudioSessionDelegate> 

委托(delegate)实现如下:

- (void)beginInterruption {
[self setActivated:NO];
}
- (void)audioPlayerBeginInterruption {
[self setActivated:NO];
}

- (void)endInterruption {
[self setActivated:YES];
}
- (void)audioPlayerEndInterruption {
[self setActivated:YES];
}

其中 setActivated:(BOOL)state 包含启动和停止声音管理器的代码。

-

我看不出有任何理由不调用委托(delegate)方法 - 也许当我启动声音管理器或设置音频属性等时我忘记执行某些操作?

或者我公然错过了一些更明显的东西:o

非常感谢任何想法!

最佳答案

这似乎是 iOS 中的一个错误。在多种情况下,endInterruption 回调不会被调用。我所做的是检查另一个应用程序当前是否正在我的 applicationWillEnterForeground 方法中播放音频(或者准确地说:我已经注册了相应的通知,因此我不必在应用程序委托(delegate))。您可以通过AudioSessionGetProperty查看和 kAudioSessionProperty_OtherAudioIsPlaying .

关于iPhone: 'endInterruption' 没有被 <AVAudioSessionDelegate> 类调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4792471/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com