我有一個AudioTrack
通過耳機播放。我必須發送一個SoundPool
到內置揚聲器,而不會中斷通過耳機播放的AudioTrack
。任何黑客流氓黑社會?通過耳機播放音樂時播放揚聲器
回答
許多Android設備在AudioFlinger/audio HAL中爲所有本地播放(耳機,揚聲器,有線耳機/耳機)使用單個輸出線程,使得兩個軌道的不同路由不可能同時進行(這就是爲什麼在許多設備上媒體如果播放通知並且您連接了有線耳機,則會強制靜音流,否則在播放通知時您會在揚聲器中聽到音樂)。
在某些設備上,如果你能做到一個setForceUse(FOR_MEDIA, FORCE_SPEAKER)
和使用要在揚聲器播放的東西MUSIC
流類型有可能做你要找的內容,併爲在VOICE_CALL
流類型你想要在有線耳機中播放的東西。
我不確定是否有任何方法讓應用程序執行該調用。也許你可以通過思考得到AudioService
課程的handleMessage
方法,併發送給我一個MSG_SET_FORCE_USE
的消息..我從來沒有嘗試過,所以它可能會失敗。
編輯:我已經測試了setForceUse強制MEDIA流到揚聲器,而有線耳機連接到實際設備上的方式,它確實工作(雖然我不能保證它可以跨越所有設備)。這個實現與我上面描述的稍有不同。查看我對how to turn speaker on/off programatically in android 4.0的回答,瞭解我使用的代碼。
使用STREAM_RING有助於將聲音重定向至揚聲器,即使耳機已連接。但是,在耳機(AudioTrack)上播放的聲音會暫停,直到此STREAM_RING完成並重新開始。我的首要任務是不中斷播放耳機流。 – 2012-08-20 13:32:37
是的,STREAM_RING遵循SONIFICATION路由策略,這會觸發我在我的答案的第一段中描述的行爲。我已經驗證過,在有線耳機中強制使用揚聲器+ VOICE_CALL流的MUSIC流在XPeria P上正常工作,但我沒有在任何其他設備上進行測試。 – Michael 2012-08-20 14:06:07
Mike,我很抱歉把你推得太緊,但是,我一直在S2和HTC One X上進行測試。他們都在暫停耳機上的音頻。礦井是一個突破連續性的信號將違反系統的工作過程。 – 2012-08-22 11:37:09
- 1. 通過android揚聲器播放音樂
- 2. 同時在設備揚聲器和耳機上播放聲音
- 3. Android - 通過揚聲器播放音頻
- 4. 在揚聲器和耳機中播放聲音wpf
- 5. 讓MediaPlayer和AudioManager通過耳機而不是揚聲器播放?
- 6. 即使耳機插入,如何通過藍牙揚聲器播放音頻?
- 7. 如何通過揚聲器播放音頻,而不是較弱的耳機?
- 8. 同時播放2首歌曲,只能通過耳機和其他通過揚聲器播放
- 9. 通過java播放音樂
- 10. 使用MediaPlayer時通過耳機播放聲音
- 11. 使exoPlayer 2.0通過揚聲器播放
- 12. MPMoviePlayerController拒絕通過iOS4中的揚聲器播放聲音
- 13. 如何在vb.Net中通過外部揚聲器播放聲音?
- 14. Audiomanager - 只播放揚聲器揚聲器
- 15. AudioStreamer從耳機揚聲器播放而不是iPhone底部揚聲器
- 16. 如何讓帶揚聲器的耳機一起工作來播放聲音?
- 17. 如何播放聲音instaed耳機,從揚聲器直接在Android上?
- 18. 是否可以通過帶耳機的耳機播放音調?
- 19. 通過Av播放器播放隊列中的音樂
- 20. 音樂播放器的播放列表
- 21. ReverbNation音樂/播放列表播放器
- 22. 使用JSON播放器播放音樂
- 23. Android:通過Sco藍牙耳機播放聲音
- 24. Youtube API不在電視揚聲器上播放音樂
- 25. ios:從前置揚聲器播放音樂
- 26. 設置iPhone通過揚聲器開始播放,但允許耳機覆蓋
- 27. 音樂播放
- 28. 隨機播放音樂
- 29. 通過iPhone揚聲器強制播放音頻文件?
- 30. 音頻文件:僅通過一個揚聲器播放數據?
所以SoundPool與AudioTrack分開嗎? – Soham 2012-08-18 09:06:42
AudioManager mAudioMgr =(AudioManager)getSystemService(Context.AUDIO_SERVICE); mAudioMgr.setSpeakerphoneOn(true); mAudioMgr.setMode(AudioManager.MODE_IN_COMMUNICATION); – 2016-03-21 12:55:38