Iphone SystemSoundID在不同流上播放的不同实例!

Iphone SystemSoundID在不同流上播放的不同实例!,iphone,cocoa,audio,stream,Iphone,Cocoa,Audio,Stream,首先,感谢StackOverflow团队,因为这是一个非常有用的网站,因为我是在iPhone上开发的。 中学,请原谅我的语言。我是法国人,和所有法国人一样,我的英语很差 我的iPhone程序中的声音有一个非常奇怪的问题: 我实现了一个在aiff中播放短声音的类。这是: @implementation SoundPlayer -(id)initWithFile:(NSString*)file{ self = [super init]; NSString *soundPath =

首先,感谢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会听到

有人有类似的问题吗?你知道吗

非常感谢

马丁:好的。 我找到了一些有趣的答案来回答这个问题。 有一个全局函数可以初始化音频上下文。我似乎没有正确地使用它,但我认为问题就出在这里

// 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
);
尽管有这两个功能,但环流中仍有一个声音,这真的很奇怪。有人能帮我吗?

好的。 我找到了一些有趣的答案来回答这个问题。 有一个全局函数可以初始化音频上下文。我似乎没有正确地使用它,但我认为问题就出在这里

// 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
);

尽管有这两个功能,但环流中仍有一个声音,这真的很奇怪。有人能帮我吗?

我忘了说soundID是一个SystemSoundID变量。我忘了说soundID是一个SystemSoundID变量。