我正在开发一款iPad应用程序,可与播放声音的配件连接 . 当iPad连接到配件时,我想将所有系统声音静音但允许其他声音(iPod) .
造成这种情况的部分原因是附件是在现场演出期间使用的 . 显然,让电子邮件,警报或任何其他系统声音通过并放大(疯狂大声)会很烦人 .
我已经看过使用AVAudioSession(阅读Audio Sessions了解更多)并尝试了所有的AudioSessionCategories . 这些类别都不会使系统声音静音,而是只允许您静音应用程序声音(iPod) - 对我的目的无用 .
我还在“System Sound Services”上找到了文档,但这只允许你播放系统声音 . 这里没有api可以在你的应用程序运行时禁用系统声音 .
最后一点,我们通过包含MPVolumeView轻松调整iPad级别(音量),但我们希望用户想要播放iPod音乐 . 如果在播放iPod音乐(或来自其他应用程序的音乐)和电子邮件时,您会惊讶地发现,当通过我们的配件时,电子邮件突然变成了LOUD / ANNOYING . 甚至可能会损坏设备 . :d
3 回答
使用AVSystemController可以改变系统声音,结果是铃声btw . 但是,AVSystemController存在于私有Celestial框架中 . 由于UIKit引用了这个框架,因此仍然可以在不直接引用它的情况下使用该类 .
Apple禁止使用私有API,因此仅此一点就是个坏主意 . 鉴于我的情况,我认为他们可能会例外,但我可能会放弃这个课程,因为我认为它没有解决我的问题 . 它确实使声音静音,但是当我插入我的配件时,即使振铃音量设置为0,系统也会以最大音量发出声音 . 这让我相信解决问题的答案就在于MFI文件 .
无论如何,这里是如何使用私有框架/ api更改铃声(这将使你的应用程序在没有某种特殊许可的情况下被拒绝) .
简答:
无需直接引用Celestial frameork / AVSystemController.h即可回答:
使用MediaPlayer框架,我们可以设置SYSTEM声音的级别
您可以做的最好是鼓励您的用户进入飞行模式 .