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

时间:2012-08-18 08:58:33

标签: android soundpool android-audiomanager audiotrack

我通过耳机播放AudioTrack。我必须仅向内置扬声器发送SoundPool,而不会中断通过耳机播放的AudioTrack。任何黑客歹徒?

1 个答案:

答案 0 :(得分:11)

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

在某些设备上,如果您设法执行setForceUse(FOR_MEDIA, FORCE_SPEAKER)并使用MUSIC流类型输入要在扬声器中播放的内容,则可能会执行您要查找的内容,以及要在有线耳机中播放的内容的VOICE_CALL流类型 我不确定应用程序是否有办法执行setForceUse调用。也许你可以通过反射获得handleMessage类的AudioService方法,然后发送一条MSG_SET_FORCE_USE消息。我自己从未尝试过,所以它可能会失败。

编辑:我现在测试了setForceUse强制MEDIA流到扬声器的方式,而有线耳机连接在实际设备上,它确实有效(虽然我无法保证它将适用于所有设备)。实现与我上面描述的略有不同。有关我使用的代码,请参阅我对how to turn speaker on/off programatically in android 4.0的回答。

相关问题