IOS Audio прерывание - PullRequest
       35

IOS Audio прерывание

2 голосов
/ 14 сентября 2011

Я разрабатываю приложение для потоковой передачи аудио со старым AudioStreamer от Matt, и я пытаюсь сделать прерывание (при получении вызова), используя:

- (void)MyAudioSessionInterruptionListener(void *inClientData, UInt32 inInterruptionState)
{
        AudioStreamer *streamer = (AudioStreamer*)inClientData;
        if (inInterruptionState == kAudioSessionBeginInterruption)
        {
            [streamer stop];    
            NSLog(@"kAudioSessionBeginInterruption");
        }
        else if (inInterruptionState == kAudioSessionEndInterruption)
        {
            [self playpause]; 
            NSLog(@"kAudioSessionEndInterruption");
        }
}

Моя проблема в том, что я пытаюсь позвонитьфункция «playpause» с помощью [self playpause];но я получаю сообщение об ошибке воспроизведения без объявления!

Как я могу объявить воспроизведение в MyAudioSessionInterruptionListener?

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

это не [self playPause], это должно быть [streamer playpause], предполагая, что класс AudioStreamer является классом с методом ... Метод слушателя является статической функцией C вне вашего класса, поэтому вы не можете вызывать метод для себя,поскольку самость подразумевает, что вы находитесь внутри экземпляра класса.Если класс с методом не является AudioStreamer, то вам нужно будет передать этот класс также в аргументе inClientData, чтобы иметь возможность его получить ..

Надеюсь, что это поможет

0 голосов
/ 15 сентября 2011

Итак, после тестирования всех возможностей лучше всего использовать Notification.

Вот код:

void MyAudioSessionInterruptionListener(void *inClientData, UInt32 inInterruptionState)
{
if (inInterruptionState == kAudioSessionBeginInterruption) {


    [[NSNotificationCenter defaultCenter] postNotificationName:@"stopstreamer" object:nil];

    NSLog(@"kAudioSessionBeginInterruption");
}


else if (inInterruptionState == kAudioSessionEndInterruption) {

    [[NSNotificationCenter defaultCenter] postNotificationName:@"TogglePlayPause" object:nil];

    NSLog(@"kAudioSessionEndInterruption");
}


}
...