我有一个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. 即使耳机插入,如何通过蓝牙扬声器播放音频?
- 2. 同时播放2首歌曲,只能通过耳机和其他通过扬声器播放
- 3. 通过java播放音乐
- 4. 使exoPlayer 2.0通过扬声器播放
- 5. MPMoviePlayerController拒绝通过iOS4中的扬声器播放声音
- 6. AudioStreamer从耳机扬声器播放而不是iPhone底部扬声器
- 7. 如何播放声音instaed耳机,从扬声器直接在Android上?
- 8. 如何让带扬声器的耳机一起工作来播放声音?
- 9. 是否可以通过带耳机的耳机播放音调?
- 10. 通过Av播放器播放队列中的音乐
- 11. Android:通过Sco蓝牙耳机播放声音
- 12. Youtube API不在电视扬声器上播放音乐
- 13. 设置iPhone通过扬声器开始播放,但允许耳机覆盖
- 14. 音乐播放
- 15. 音频文件:仅通过一个扬声器播放数据?
- 16. iPhone音频播放:通过内部扬声器强制?
- 17. 无法通过扬声器播放视频音频 - iOS
- 18. 从麦克风播放音频通过扬声器
- 19. Windows Phone 8.1通过扬声器播放音频数据流?
- 20. 通过iPhone扬声器强制播放音频文件?
- 21. 如何在音乐播放器中播放LRC和音乐
- 22. 在手机内置扬声器上播放声音? (模拟phonecall)
- 23. 从停止播放音乐的时刻继续播放音乐
- 24. 如何通过手机扬声器播放Alert.startAudio()?
- 25. 使用JavaScript音乐播放器播放LastFM播放列表
- 26. jQuery音乐播放器
- 27. Facebook inline音乐播放器
- 28. Java音乐播放器GUI
- 29. Android音乐播放器
- 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