首先,感谢StackOverflow团队,因为我正在开发iPhone,因此它是一个非常有用的网站。 中学,请原谅我的语言。我是一个狂热的人,像每个法国人一样,我的英语非常糟糕。
我的iPhone程序中的声音出现了一个非常奇怪的问题: 我实现了一个在aiff中播放短音的课程。这是:
@implementation SoundPlayer
-(id)initWithFile:(NSString*)file{
self = [super init];
NSString *soundPath = [[NSBundle mainBundle] pathForResource:file ofType:@"aiff"];
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath: soundPath], &soundID);
return self;
}
-(void)play {
if(SOUND_ACTIVATED){
AudioServicesPlaySystemSound (soundID);
}
}
-(void)dealloc{
[super dealloc];
}
@end
它工作得很好,但即使我的实例以相同的方式初始化,它们也不在同一个音频流中!
我注意到,因为当我按下iPhone的音量+和音量按钮时,在某些情况下它会控制主音频流,在其他情况下它会控制铃声音量。 如果我把主流放到第0卷,声音A将无法听到,但声音B将是。
有人有类似的问题吗?你有什么想法吗?
非常感谢。
马丁
答案 0 :(得分:1)
确定。 我发现回答这个问题很有意思。 有一个全局函数可以初始化音频上下文。似乎我没有以正确的方式使用它,但我认为问题来自那里。
// Initialize the Audio context
AudioSessionInitialize (
NULL, // 'NULL' to use the default (main) run loop
NULL, // 'NULL' to use the default run loop mode
NULL, // a reference to your interruption callbac
self // data to pass to your interruption listener callback
);
// What kind of sound will be played
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (
kAudioSessionProperty_AudioCategory,
sizeof (sessionCategory),
&sessionCategory
);
尽管有这两个功能,但环流上还剩下一个声音,这真的很奇怪。有人能帮助我吗?