gpt4 book ai didi

iphone - PlaySystemSound 静音开关打开

转载 作者:行者123 更新时间:2023-12-03 18:36:20 24 4
gpt4 key购买 nike

我知道,我必须将 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 对此的说法:

Use this category for an application whose audio playback is of primary importance. Your audio plays even with the screen locked and with the Ring/Silent switch set to silent.


编辑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);

最佳答案

好吧,补充一下 Jonathan Watmough 的答案,实际上似乎不可能让 AudioServicesSystemSound 覆盖静音开关。我最终做的是使用 OpenAL 来播放声音,它将按照您指定的 Audio Session 类别正常播放。以下是我设置 Audio Session 的方法:

AudioSessionInitialize(NULL, NULL, NULL, NULL);
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(sessionCategory), &sessionCategory);
AudioSessionSetActive(YES);

为了播放声音,我使用了 Finch ,一个简单的基于 OpenAL 的 iPhone 音效播放器。

关于iphone - PlaySystemSound 静音开关打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3058507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com