iPhone - AVAudioPlayer, kAudioSessionCategory_AmbientSound y la música del iPod

StackOverflow https://stackoverflow.com/questions/872001

  •  22-08-2019
  •  | 
  •  

Pregunta

Estoy utilizando la siguiente sesión de audio en mi aplicación delegado:

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

  AudioSessionSetActive(true);

Quiero que el usuario sea capaz de reproducir música iPod y usar mi aplicación, al mismo tiempo, que es grande y funciona bien ... mi aplicación se inclina hacia fuera y permite que la música del iPod a jugar.

El problema que estoy teniendo es ... después de que el usuario sale de mi aplicación, entra en la aplicación iPod y hace una pausa, cuando vienen de nuevo en mi aplicación, ninguno de los sonidos de mi trabajo. Es como si todavía piensa que la sesión iPod está activo, a pesar de que no está jugando cualquier tipo de música!

Yo, básicamente, sólo quiero volver a activar mi sesión de audio después de la música del iPod está en pausa. Tal como está, después de haber jamás tocaba música a través de la aplicación iPod, soy totalmente incapaz de conseguir mi aplicación de sonidos volver a menos que recompilar. :( Alguien tiene alguna idea?

Editar:. Me olvidé de mencionar que estoy usando una implementación básica de la clase AVAudioPlayer para reproducir el audio de mi aplicación

Gracias!

¿Fue útil?

Solución

Está bien sólo pensé en mantener cada uno ha escrito en caso de que ayuda a otra persona ... lo que hice fue probablemente tipo de hacker, pero parece hacer el truco!

    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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top