Android AudioManager.setSpeakerphoneOn 休眠后停止工作
Android AudioManager.setSpeakerphoneOn stops working after sleep
所以我正在尝试使用在 Stack Overflow 上找到的一些代码,以便将音频从耳机路由到扬声器。
我目前正在做的是:
AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
am.setMode(AudioManager.STREAM_MUSIC);
am.setSpeakerphoneOn(true);
sleep(15000);
发生的情况是音频在 "sleep" 期间被路由,但它在 15 秒后返回到耳机。
如果我在没有睡眠的情况下执行此操作,声音将很快进入扬声器并返回耳机。
在这个调用之后,我的程序死了。我希望这会在系统中持续存在,就像应用程序 Headset Toggle 所做的那样
我无法发现为什么我的方法不起作用,但我找到了解决方法。
我现在正在做的是:
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。
所以我正在尝试使用在 Stack Overflow 上找到的一些代码,以便将音频从耳机路由到扬声器。
我目前正在做的是:
AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
am.setMode(AudioManager.STREAM_MUSIC);
am.setSpeakerphoneOn(true);
sleep(15000);
发生的情况是音频在 "sleep" 期间被路由,但它在 15 秒后返回到耳机。 如果我在没有睡眠的情况下执行此操作,声音将很快进入扬声器并返回耳机。
在这个调用之后,我的程序死了。我希望这会在系统中持续存在,就像应用程序 Headset Toggle 所做的那样
我无法发现为什么我的方法不起作用,但我找到了解决方法。
我现在正在做的是:
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。