PlaySystemSound с включенным отключением звука
Я знаю, я должен установить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: следуя совету Джонатана Ватмофа, я установил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);