2010-12-03 10 views
9

Creé un reproductor de música y funciona bien en primer plano. Pero en el fondo iOS4, no reproduce la siguiente canción automáticamente. (el control remoto funciona) El motivo es AudioQueueStart return -12985.AudioQueueStart fail -12985

Ya verifico la sesión de audio. está bien. Uso AudioQueueStart cuando comienza a reproducir la música. ¿Cómo se puede eliminar AudioQueueStart?

- (void)play 
{ 
    [self setupAudioQueueBuffers]; // calcluate the size to use for each audio queue buffer, and calculate the // number of packets to read into each buffer 
    OSStatus status = AudioQueueStart(self.queueObject, NULL); 
} 

leí la respuesta en la web acerca de la AudioQueueStart fallan tema.

Una cosa para comprobar es que la AudioSesión está activa primero. En mi caso, me había propuesto previamente la sesión a inactiva entre los cambios de canciones antes de comenzar una nueva canción: AudioSessionSetActive(false);

Una vez eliminado esta AudioQueueStart funciona bien desde el fondo.

+0

Si su actualización es la solución real, ¿puede publicarla como respuesta a su pregunta (para completar)? –

+0

¿Has descubierto esto? Lo estoy preguntando porque no hay una respuesta aceptada. –

Respuesta

2

También me enfrenté a tal problema hace una semana. Pasé dos días buscando una solución y la encontré. Puede ser que este enlace ayude (es la respuesta oficial): http://developer.apple.com/library/ios/#qa/qa1668/_index.html

Asegúrese de activar la sesión desde el controlador de tareas applicationDidEnterBackground. Ahora mi aplicación puede reproducir sonido en segundo plano.

1

Ver this.

es probable que tenga que incluir lo siguiente:

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

Hacia la parte inferior hay una reiteración de la línea de lo importante que es. Como no se menciona en ninguna de las tres guías de audio de audio principales (AVFoundation, AudioSession o AudioQueue), se puede perder fácilmente.

3

En mi experiencia, el mensaje -12985 se produce porque otra aplicación ya tiene una sesión de audio activada cuando intenta iniciar la reproducción en su aplicación. Las opciones son: 1) indicar al usuario que cierre la otra aplicación, o 2) establecer el modo de mezcla (ver kAudioSessionProperty_OverrideCategoryMixWithOthers).

La desventaja del modo de mezcla es que si depende de la técnica de bloqueo de pantalla o de los controles remotos, no funcionarán con el modo de mezcla establecido.

0

Tengo el mismo problema. Registro I AudioSessionInterruptionListener, pausa el audio cuando la llamada telefónica, reanudarlo después del final de la llamada. pero obtenga el código de error -12985 cuando llame a AudioQueueStart para reanudar. Mi solución es que intento llamar a AudioQueueStart después de 0.02s. No sé el motivo.

0

En iOS7, AudioQueueStart devolvió '! Int' ('tni!'), Aunque estoy seguro de que nadie se sorprendería al descubrir que no está documentado en los documentos o en los encabezados. Era el mismo problema, sin embargo, y la misma solución (establecer la sesión de audio para activa en el controlador de tareas en segundo plano) funcionó para mí.

Cuestiones relacionadas