iPhone — AVAudioPlayer, kAudioSessionCategory_AmbientSound и музыка для iPod
Вопрос
Я использую следующий аудиосеанс в своем делегате приложения:
AudioSessionInitialize(NULL, NULL, NULL, self); UInt32 sessionCategory = kAudioSessionCategory_AmbientSound; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); AudioSessionSetActive(true);
Я хочу, чтобы пользователь мог одновременно воспроизводить музыку с iPod и использовать мое приложение, и это здорово и отлично работает...мое приложение отключается и позволяет воспроизводить музыку с iPod.
Проблема, с которой я столкнулся, заключается в том, что...после того, как пользователь выходит из моего приложения, заходит в приложение iPod и делает паузу, когда он возвращается в мое приложение, ни один из моих звуков не работает.Как будто он все еще думает, что сеанс iPod активен, хотя музыка не воспроизводится!
По сути, я просто хочу возобновить аудиосессию после того, как музыка на iPod была приостановлена.В нынешнем виде после того, как я всегда воспроизводил музыку через приложение iPod, я совершенно не могу вернуть звуки своего приложения, пока не перекомпилирую его.:( Есть у кого идеи?
Редактировать:Я забыл упомянуть, что я использую базовую реализацию класса AVAudioPlayer для воспроизведения звука моего приложения.
Спасибо!
Решение
Хорошо, просто подумал, что буду держать всех в курсе, вдруг это кому-то поможет...то, что я сделал, вероятно, было хакерским, но, похоже, помогло!
UInt32 isPlaying; UInt32 propertySize = sizeof(isPlaying); OSStatus status; // check to see if their iPod music is playing status = AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying, &propertySize, &isPlaying); // set the session category accordingly if(!isPlaying) { NSLog(@"...SoloAmbientSound"); UInt32 sessionCategory = kAudioSessionCategory_SoloAmbientSound; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); }else{ NSLog(@"...AmbientSound"); UInt32 sessionCategory = kAudioSessionCategory_AmbientSound; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); }