Разные экземпляры SystemSoundID играют на разных потоках! - PullRequest
1 голос
/ 23 июня 2009

Во-первых, спасибо команде 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.

У кого-нибудь была похожая проблема? У вас есть идеи?

Большое спасибо.

Martin

1 Ответ

1 голос
/ 29 июня 2009

Хорошо. Я нашел что-то, что было бы интересно ответить на проблему. Есть глобальная функция, которая инициализирует аудио контекст. Кажется, я не правильно использую его, но думаю, что проблема в этом.

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

Несмотря на эти две функции, в кольцевом потоке остается один звук, и это действительно странно. Кто-нибудь может мне помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...