Android AudioManager.setSpeakerphoneOn在睡眠后停止工作

时间:2015-09-28 13:40:37

标签: android android-audiomanager headset speaker

所以我尝试使用Stack Overflow上的一些代码来将音频从Headset路由到扬声器。

我目前正在做的是:

AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
am.setMode(AudioManager.STREAM_MUSIC);
am.setSpeakerphoneOn(true);
sleep(15000);

音频在“睡眠”期间被路由,但是在15秒后它会回到耳机。 如果我在没有睡眠的情况下执行此操作,声音将很快进入扬声器并返回耳机。

在这个电话之后,我的程序就死了。我希望这会在系统中持续存在,就像app Headset Toggle那样

1 个答案:

答案 0 :(得分:0)

我无法发现为什么我的方法不起作用,但我找到了解决方法。

我现在正在做的是:

Class audioSystemClass = Class.forName("android.media.AudioSystem");
Method setForceUse = audioSystemClass.getMethod("setForceUse", int.class, int.class);
// First 1 == FOR_MEDIA, second 1 == FORCE_SPEAKER. To go back to the default
// behavior, use FORCE_NONE (0).
setForceUse.invoke(null, 1, 1);

感谢来自this post的Michael。