通过耳机播放音乐时播放扬声器的声音

Rav*_*asi 5 android soundpool audiotrack android-audiomanager

我有AudioTrack通过耳机流媒体.我必须只发送一个SoundPool内置扬声器,而不会打断AudioTrack耳机播放.任何黑客歹徒?

Mic*_*ael 11

许多Android设备在AudioFlinger/audio HAL中使用单个输出线程进行所有本地播放(耳机,扬声器,有线耳机/耳机),同时不可能对两个轨道进行不同的路由(这就是为什么在许多设备上媒体流被强制静音的原因如果播放通知并且您已连接有线耳机;否则您将在播放通知时听到扬声器中的音乐).

在某些设备上,如果你设法做一个setForceUse(FOR_MEDIA, FORCE_SPEAKER)并使用MUSIC流类型用于你想在扬声器中播放的内容,你可以做你正在寻找的东西,以及VOICE_CALL你想要播放的东西的流类型有线耳机.
我不确定应用程序是否有任何方法可以执行该setForceUse调用.也许你可以通过反射得到类的handleMessage方法AudioService并发送MSG_SET_FORCE_USE消息..我自己从未尝试过,所以它可能会失败.

编辑:我现在测试了setForceUse强制MEDIA流到扬声器的方式,而有线耳机连接在实际设备上,它确实有效(虽然我不能保证它可以在所有设备上工作).实现与我上面描述的略有不同.有关我使用的代码,请参阅我在android 4.0中编程方式打开/关闭扬声器的答案.

  • 由于我之前解释过的原因,这种组合不起作用。我能够让它发挥作用的唯一组合是 MUSIC + VOICE_CALL。 (2认同)