我知道,我必须将其设置AudioSession
为“播放”类别,即使在静音开关打开时也允许音频。这就是我所做的,但是当开关打开时声音仍然会静音。
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(sessionCategory), &sessionCategory);
SystemSoundID soundID;
NSString *path = [[NSBundle mainBundle] pathForResource:soundString ofType:@"wav"];
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID);
AudioServicesPlaySystemSound (soundID);
编辑:顺便说一句,该应用程序是一个音板。播放声音是应用程序的唯一目的。以下是 Apple Doc 对此的评价:
将此类别用于音频播放至关重要的应用程序。即使屏幕锁定且响铃/静音开关设置为静音,您的音频也能播放。
编辑 2:打开静音开关,声音甚至不会通过耳机播放。我知道用户为王。我知道静音开关有它的用途。那不是问题。我试图得到一个关于将AudioSession
类别设置为kAudioSessionCategory_MediaPlayback
没有预期结果的答案。
编辑 3:按照 Jonathan Watmough 的建议,我设置了AudioServices
kAudioServicesPropertyIsUISound
属性,但仍然没有运气。我错过了什么吗?
// set the session property
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(sessionCategory), &sessionCategory);
// creates soundID
SystemSoundID soundID;
NSString *path = [[NSBundle mainBundle] pathForResource:soundString ofType:@"wav"];
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID);
// Jonathan Watmough suggestion
UInt32 flag = 0;
AudioServicesSetProperty(kAudioServicesPropertyIsUISound, sizeof(UInt32), &soundID, sizeof(UInt32), &flag);
AudioServicesPlaySystemSound (soundID);