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

标签 iphone cocoa audio stream

首先,感谢 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
);

尽管有这两个功能,但环形流中仍然保留着一种声音,这确实很奇怪。有人可以帮助我吗?

关于iphone - SystemSoundID 的不同实例在不同的流上播放!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1031863/

相关文章:

iphone - 如何移动 UITextField 中的清除按钮?

iphone - iPhone 能否让一个 View 成为多个不同 View 的 subview ?

iPhone:TableView 下的 ImageView 和按钮

cocoa - NSWindow 显示带有窗口路径的图标;我怎样才能删除它?

ios - 将核心数据作为对象读取

html - 如何在HTML中将鼠标悬停在图像和声音上

android - 如何将来电时的电话铃声静音

iphone - 在 ios6 中播放视频

cocoa - 删除后插入点未显示在正确的位置

audio - Web音频播放器可以链接到特定时间的音频吗?