首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将AVAudioSession配置为隐藏音乐和暂停语音?

如何将AVAudioSession配置为隐藏音乐和暂停语音?
EN

Stack Overflow用户
提问于 2018-10-31 14:28:21
回答 1查看 748关注 0票数 0

我正在开发一个导航应用程序,它使用AVSpeechSynthesizer来调用方向。如果我正在播放播客,我希望能够暂停音频时,一个方向被说出来,然后继续它。这是通过以下途径成功实现的:

代码语言:javascript
运行
AI代码解释
复制
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback
                               withOptions:AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers
                                       error:nil];

但是,如果我使用上述代码播放音乐,那么指令就会与音乐混在一起,而不会减少音乐的音量--因此很难听到指令。所以我试着:

代码语言:javascript
运行
AI代码解释
复制
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback
                                 withOptions:AVAudioSessionCategoryOptionDuckOthers
                                       error:nil]; 

现在背景音乐的音量减少了,这正是我想要的,但当我播放口语音频(即播客)时,它不再停顿,而是与指令混合--尽管音量变小了。

我真正想要的是: AVAudioSessionCategoryOptionInterruptSpokenAudioAndDuckWithOthers.然而,这并不存在。我知道这种组合是可能的,因为其他应用程序(比如Waze)也有这种行为。

我知道,当音频播放时,您可以使用:

代码语言:javascript
运行
AI代码解释
复制
BOOL isOtherAudioPlaying = [[AVAudioSession sharedInstance] isOtherAudioPlaying];

但是,我找不到一种方法来确定那个音频是否被说出来了。如果可以的话,我可以根据任何特定的时间来安排比赛。有人能帮忙吗,最好是在目标C中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-24 17:14:51

这是怎么做到的:

代码语言:javascript
运行
AI代码解释
复制
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback
                                 withOptions:AVAudioSessionCategoryOptionDuckOthers | AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers
                                       error:nil];

很有魅力!

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

https://stackoverflow.com/questions/53092824

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文