Estoy intentando que mi aplicación de audio se reproduzca en segundo plano. Hasta ahora he añadido "de la aplicación para reproducir audio que" a los "modos requeridos de fondo" en info.plist y también el siguiente código justo antes de comenzar mi generador de sonido:El audio de fondo de iOS se detiene cuando la pantalla está bloqueada
AudioSessionInitialize(NULL, kCFRunLoopDefaultMode, &interruptionListener, sgD);
AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, &routeChangeListener, sgD);
// select "Playback" audio session category
NSError *setCategoryError = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryError];
OSStatus propertySetError = 0;
UInt32 category = kAudioSessionCategory_MediaPlayback;
propertySetError = AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (category), &category);
AudioSessionSetActive(true);
Sin embargo, esto sólo funciona cuando cambio a otra aplicación o a la pantalla principal del iPod. Cuando apago la pantalla, también apaga mi salida de audio, que definitivamente no es lo que quiero. Sin embargo, todos los tutoriales/documentación/respuestas a las preguntas sobre el stackoverflow parecen indicar que mantener el audio en ejecución mientras la pantalla está apagada se produce automáticamente cuando el audio de fondo funciona. ¿Alguien tiene una pista para mí? ¡Muchas gracias por adelantado! Fritz
Lo que olvidó decir: Estoy usando AudioQueues para generar la secuencia de salida de audio. La devolución de llamada de Audio Queue se activa mientras la pantalla está apagada, pero no se escucha el sonido en los auriculares. Esto podría indicar algún problema de ruta de audio. Sin embargo, nunca se llama mi devolución de llamada de cambio de ruta. –
Ok, problema resuelto ... Resulta que el tamaño del búfer de audio debe ser lo suficientemente grande si se ejecuta mientras la pantalla está apagada. No sé si esto se aplica a todas las aplicaciones, pero mi aplicación necesitaba un tamaño de búfer de al menos 2048 muestras. Con 1024 muestras, simplemente dejó de funcionar. –
Si pudiera hacer que funcione, ¿podría agregar su solución como respuesta? Gracias. –