Tengo un AudioTrack
transmisión a través de auriculares. Tengo que enviar un SoundPool
solo a los altavoces incorporados, sin interrumpir el AudioTrack
reproduciendo por los auriculares. ¿Algún ladrón de hackers?Reproducción de sonido a través de altavoces mientras se reproduce música a través de auriculares
Respuesta
Muchos dispositivos Android usan una única salida en AudioFlinger/audio HAL para todas las reproducciones locales (auricular, altavoz, auriculares con cable/auriculares), imposibilitando al mismo tiempo el enrutamiento diferente de dos pistas (por eso en muchos dispositivos los medios las transmisiones se silencian por la fuerza si se reproduce una notificación y tiene un auricular con cable conectado, porque de lo contrario escucharía la música en el altavoz mientras se reproduce la notificación).
En algunos dispositivos puede ser que sea posible hacer lo que usted está buscando si logras hacer un setForceUse(FOR_MEDIA, FORCE_SPEAKER)
y utilizar el tipo MUSIC
corriente de las cosas que desea reproducir en el altavoz, y el tipo VOICE_CALL
corriente de los cosas que desea jugar en el auricular con cable.
No estoy seguro si hay alguna manera para que una aplicación realice esa llamada setForceUse
. Tal vez pueda obtener el handleMessage
método de la clase AudioService
a través de la reflexión y enviar un mensaje MSG_SET_FORCE_USE
.. Nunca lo he probado, por lo que podría fallar miserablemente.
EDIT: ahora hemos probado la manera de forzar setForceUse flujos de medios para el altavoz mientras que un auricular con cable está unido en un dispositivo real, y lo hace el trabajo (aunque no puedo garantizar que va a trabajar a través de todos los dispositivos). La implementación fue ligeramente diferente de lo que describí anteriormente. Vea mi respuesta al how to turn speaker on/off programatically in android 4.0 para el código que utilicé.
usando STREAM_RING ayuda a redirigir el sonido al altavoz incluso si los auriculares están conectados. Sin embargo, el sonido que se reproduce en los auriculares (AudioTrack) se pausa hasta que se complete STREAM_RING y luego se reanuda. Mi prioridad es reproducir la transmisión de auriculares sin interrupción. –
Sí, STREAM_RING sigue la estrategia de enrutamiento SONIFICACIÓN, que desencadenaría el comportamiento que describí en el primer párrafo de mi respuesta. Comprobé que una transmisión MUSIC forzada a altavoz + una transmisión VOICE_CALL en auriculares con cable funciona correctamente en una XPeria P, pero no la he probado en ningún otro dispositivo. – Michael
Mike, siento presionarlo demasiado, pero lo he estado probando en S2 y HTC One X. Ambos están pausando el audio en los auriculares. El mío es una señal que hasta la ruptura de continuidad violará el proceso de trabajo del sistema. –
- 1. Reproducción de música BG a través de actividades en Android
- 2. AudioTrack: Reproducción de sonido entrando a través de WiFi
- 3. Android: reproducción de sonido con auriculares Bluetooth Sco
- 4. El audio de la aplicación no funciona a través de los altavoces
- 5. Reproducir y grabar video mientras se reproduce música de fondo
- 6. Forzar salida de sonido a través del altavoz en Android
- 7. ¿Convertir imagen a fax "Sonido", enviar a través de Twilio?
- 8. MPMoviePlayerController se niega a reproducir sonido a través del altavoz en iOS4
- 9. Salida de sonido a través de M-Audio ProFire 610
- 10. AVPlayer no se reproduce desde la biblioteca de música
- 11. Sonido de salida a través del altavoz cuando no está conectado
- 12. ¿Cómo se reproduce el sonido TICK predeterminado?
- 13. Reproducción de audio del iPhone: fuerza a través del altavoz interno?
- 14. Reproducción de música continuamente con el nombre
- 15. Transmisión de música sincrónicamente desde un archivo mp3 a través de un servidor nodejs + socket.io
- 16. Cómo reproducir audio por separado en auriculares y altavoces en iOS 5
- 17. Cómo reproducir sonido en Python SIN interrumpir la música/otros sonidos de la reproducción
- 18. Reproducción de sonido Ruby
- 19. Enrutamiento Sonido de audio de iPhone
- 20. Reproducción de sonido local en el teléfono
- 21. Cómo asegurar la música cuando se transmite a través de la etiqueta de audio HTML5
- 22. MPMoviePlayerViewController detiene la reproducción al desconectar auriculares
- 23. java.security.PrivilegedActionException mientras que golpea servicios web a través de HTTPS
- 24. rails has_many: a través de has_many: a través de
- 25. ¿Cómo funciona el dispositivo Square Reader (cuadrado) a través de la toma de auriculares en Android?
- 26. Pasando sin argumentos mientras se llama a la función a través de dict
- 27. Control de VLC a través de C#
- 28. serialización XML con XmlWriter a través de StringBuilder es utf-16 mientras que a través de Stream es utf-8?
- 29. Enviando datos a través del conector de auriculares en los teléfonos Android
- 30. Haciendo clic a través de .png transparente
por lo que el SoundPool está separado del AudioTrack ¿verdad? – Soham
AudioManager mAudioMgr = (AudioManager) getSystemService (Context.AUDIO_SERVICE); mAudioMgr.setSpeakerphoneOn (verdadero); mAudioMgr.setMode (AudioManager.MODE_IN_COMMUNICATION); –