¿Hay alguna forma de get availableOutputs como availableInputs en AVAudioSession

Necesito mostrar los resultados disponibles (como BleutoothLE, HeadPhones, BuiltInReceiver) pero puedo acceder a la salida de currentRoute.

¿Alguien puede acceder a todos los resultados disponibles, por favor comparta comentarios?

Gracias por adelantado..

Tienes dos opciones por lo que sé:

  • Agregue un MPVolumeView a su vista y, configure showsVolumeSlider a 0 y configure showsRouteButton a 1. Esto colocará un ícono provisto por el sistema donde el usuario puede elegir entre las salidas disponibles.

  • AVAudioSession tiene un método overrideOutputAudioPort muy limitado que puede enrutar el audio al altavoz integrado.

     [[AVAudioSession shanetworkingInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil]; 

No tengo idea de por qué no había una propiedad simple de Outsales availableOutputs .

Pero puede get una list de todos los resultados disponibles utilizando la categoría de audio de varias routes e inspeccionando las salidas de su ruta actual:

 let sesh = AVAudioSession() try! sesh.setCategory(AVAudioSessionCategoryMultiRoute) try! sesh.setActive(true) print("available outputs: \(sesh.currentRoute.outputs)\n") 

Las salidas (y las inputs) van y vienen, causando cambios en la ruta, por lo tanto, suscríbase a la notificación de cambio de ruta:

 NSNotificationCenter.defaultCenter().addObserver( self, selector: "routeChanged:", name: AVAudioSessionRouteChangeNotification, object:nil ) 

NB : la categoría de routes múltiples tiene muchas reglas sobre cuándo están disponibles las inputs / salidas que están disponibles de manera intuitiva (p. Ej., El altavoz no está "disponible" cuando tiene una tarjeta de sonido USB conectada, pero los auriculares con cable serán).

¿Que estás tratando de hacer? He usado varias routes para reproducir audio de 4 canales, pero no estoy seguro si realmente puedes mezclar y combinar entre las salidas.

Obtenga una list de todas las salidas usando la ruta actual de AVAudioSession :

 AVAudioSession *session = [AVAudioSession shanetworkingInstance]; NSLog(@"Outputs: %@", [[session currentRoute] outputs]);