2012-07-12 21 views
14

Tengo una aplicación de ejercicio que necesita reproducir sonido. Uso AVAudioPlayer para reproducir el sonido. Pero cuando el audio comienza a reproducirse, la música de fondo de otra aplicación (aplicación de transmisión de radio) se apaga.iOS AVAudioPlayer detiene la música de fondo de otra aplicación

¿Cómo puedo hacer que no interrumpa la música de fondo? Porque me gustaría que el usuario escuche música mientras hace ejercicio.

Gracias.

+1

posible duplicado de [iPhone AVAudioPlayer parar la música de fondo] (http://stackoverflow.com/questions/1672602/iphone-avaudioplayer-stopping-background-music) – benzado

+0

necesita usar un tipo diferente de sesión de audio – bkbeachlabs

Respuesta

26

Se puede utilizar el siguiente código en el que utiliza AVAudioPlayer:

// Set AudioSession 
    NSError *sessionError = nil; 
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&sessionError]; 
    [[AVAudioSession sharedInstance] setActive:YES error:&sessionError]; 

Si desea configurar un delegado, puede agregar esta línea de código:

[[AVAudioSession sharedInstance] setDelegate:self]; 
+0

¿Realmente necesita configurar el delegado? Debería ser suficiente para establecer la categoría. –

+0

He probado el código y solo se necesita una llamada a setCategory. Cambió el código de muestra en consecuencia. –

+0

Cuando el audio de otras aplicaciones se reproduce en segundo plano, mi aplicación se bloqueaba con el motivo: 'la condición requerida es falsa: _engine-> IsRunning()'. Esto resolvió ese problema. – vikzilla

5

Sobre la base de respuesta de SujithPt aquí es lo mismo en rápida:

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient, error: nil) 
5

en mi caso, yo quería que el audio de fondo que se jugará en un volumen más bajo, ya que el sonido que reproduce mi aplicación se parece más a una alerta. Yo uso este:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // prevents our app from stopping other audio, 
    // e.g. music, podcats, etc. that may be playing when launched 
    // our audio will be played at a higher volume 
    // and the background audio will "duck" until done 
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryMultiRoute 
            withOptions:AVAudioSessionCategoryOptionDuckOthers 
              error:nil]; 
} 
1

para SWIFT 2.2, poner esto en cualquier lugar antes de jugar o preparetoplay:

_ = try? AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient) 
Cuestiones relacionadas