我有一个AudioTrack
通过耳机流。 我有一个送SoundPool
只内置扬声器,无需中断AudioTrack
打了耳机。 任何黑客歹徒?
Answer 1:
许多Android设备使用一个单输出线在AudioFlinger /音频HAL为所有本地播放(耳机,扬声器,有线耳机/耳机),使两个轨道同时不可能的不同的路由(这就是为什么在许多设备上的媒体流是强制静音如果通知播放,你已经有了一个连接有线耳机,因为否则的话,你就会听到音乐的扬声器,同时通知播放)。
在一些设备上有可能做你要找的内容,如果你能做到一个setForceUse(FOR_MEDIA, FORCE_SPEAKER)
并使用MUSIC
您要在扬声器播放的东西流类型,以及VOICE_CALL
流类型要在有线耳机玩的东西。
我不知道是否有任何方式来执行应用程序setForceUse
虽然通话。 或许你可以在handleMessage
的方法AudioService
通过反射类,并把它的MSG_SET_FORCE_USE
消息..我从来没有尝试过自己,所以它可能会惨遭失败。
编辑:现在我已经测试迫使媒体流扬声器,同时将有线耳机连接在实际设备上的setForceUse方式,和它的工作(虽然我不能保证它会在所有设备工作)。 实施是从什么上述我略有不同。 见我的回答如何在Android 4.0的编程开启/关闭音箱为我所用的代码。
文章来源: Playing sound over speakers while playing music through headphones