如果在连接headphone
或Bluetooth headset
时如何在扬声器中播放声音?
我已尝试过以下代码,但仍然相同:
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.STREAM_MUSIC);
audioManager.setSpeakerphoneOn(true);
答案 0 :(得分:0)
许多Android设备在AudioFlinger / audio HAL中使用单输出线程进行所有本地播放(听筒,扬声器,有线耳机/耳机),同时无法对两个音轨进行不同的路由(这是为什么在许多设备上,如果播放通知并且您已连接有线耳机,则媒体流会被强制静音;因为否则您会在播放通知时听到扬声器中的音乐。)
在某些设备上,如果您设法执行setForceUse(FOR_MEDIA,FORCE_SPEAKER)并将MUSIC流类型用于您想要在扬声器中播放的内容,则可以执行您正在寻找的内容,以及您想要在有线耳机中播放的内容的VOICE_CALL流类型。 我不确定应用程序是否有办法执行该setForceUse调用。也许你可以通过反射获取AudioService类的handleMessage方法并向它发送一条MSG_SET_FORCE_USE消息。我自己从未尝试过,所以它可能会失败。
编辑:我现在测试了setForceUse强制MEDIA流到扬声器的方式,而有线耳机连接到实际设备上,它确实有效(虽然我无法保证它能正常工作跨所有设备)。实现与我上面描述的略有不同。请参阅我在下面链接中使用的代码的答案。 希望它可以帮到你。