Pergunta

Eu estou usando o seguinte sessão de áudio no meu delegado app:

  AudioSessionInitialize(NULL, NULL, NULL, self);
  UInt32 sessionCategory = kAudioSessionCategory_AmbientSound;
  AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);

  AudioSessionSetActive(true);

Eu quero que o usuário seja capaz de tocar música iPod e usar meu aplicativo ao mesmo tempo, que é grande e funciona bem ... meu aplicativo se curva para fora e permite que a música iPod para o jogo.

O problema que estou tendo é ... depois que o usuário sai meu aplicativo, vai para o iPod aplicativo e pausas, quando eles voltam para meu aplicativo, nenhum dos meus sons trabalho. É como se ele ainda pensa que a sessão iPod está ativo, mesmo que ele não está jogando qualquer música!

Basicamente, eu só quero re-ativar a minha sessão de áudio depois de iPod música foi pausada. Tal como está, depois que eu nunca música tocada por meio do app iPod, eu sou totalmente incapaz de obter sons do meu app de volta a menos que eu recompilar. :( Alguém tem alguma idéia?

Edit:. Eu esqueci de mencionar que estou usando uma implementação básica da classe AVAudioPlayer para reproduzir áudio do meu aplicativo

Obrigado!

Foi útil?

Solução

Ok apenas pensei que eu iria manter todos postados no caso de ajuda de outra pessoa ... o que eu fiz foi provavelmente tipo de hackish, mas parece estar a fazer o truque!

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top