首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone:未为<AVAudioSessionDelegate>类调用“endInterruption”

iPhone:未为<AVAudioSessionDelegate>类调用“endInterruption”
EN

Stack Overflow用户
提问于 2011-01-25 18:40:31
回答 1查看 1.7K关注 0票数 2

我有一个实现AVAudioSessionDelegate协议的声音管理器类,即beginInterruption和endInterruption方法。

但是,当我按响电话并返回到应用程序时,这两个方法都不会被调用,然后应用程序就会静默。这是使用调试器和NSLog调用进行测试的。

声音管理器类使用openAL。

-

我的类是这样声明的:

代码语言:javascript
复制
@interface CMOpenALSoundManager : NSObject <AVAudioPlayerDelegate, AVAudioSessionDelegate> 

委托实现如下:

代码语言:javascript
复制
- (void)beginInterruption {
    [self setActivated:NO];
}
- (void)audioPlayerBeginInterruption {
    [self setActivated:NO];
}

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

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

-

我看不到委托方法不被调用的任何理由--也许是我在启动声音管理器或设置音频属性等时忘记了做什么?

或者我明目张胆地遗漏了一些更明显的东西:o

任何想法都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-25 18:50:35

这似乎是iOS中的一个错误。在各种情况下,不会调用endInterruption回调。我所做的是检查另一个应用程序是否正在我的applicationWillEnterForeground方法中播放音频(或者更准确地说:我已经注册了相应的通知,所以我不需要在应用程序委托中做这件事)。你可以通过AudioSessionGetPropertykAudioSessionProperty_OtherAudioIsPlaying查看。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4792471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档