Android Lollipop现在支持开箱即用的USB音频。但是,我希望能够控制到USB音频设备的音频路由。 Android SDK中是否有任何方法可以实现这种程度的控制?我尝试使用setForceUse,但这在设备之间是不一致的,并且似乎仅适用于未连接USB音频设备的情况(更不用说setForceUse没有USB选项)。
例如,我希望我的应用程序能够播放到普通的手机耳机插孔,但是使用切换按钮可以将相同的音频路由到连接的USB音频设备。再次按下切换按钮将切换回耳机插孔。
答案 0 :(得分:1)
我可以通过调用setDeviceConnectionState并指定耳机/耳机可用(将通过耳机播放)或不可用(将通过USB播放)来伪装插入耳机插孔。这将切换USB音频,这是我打算做的。可能有一个更干净的方法,但现在可以使用。
audioSystemClass = Class.ForName("android.media.AudioSystem");
// will disable the headphone
setDeviceConnectionState.Invoke(audioSystemClass, (Java.Lang.Integer)DEVICE_OUT_WIRED_HEADPHONE, (Java.Lang.Integer)DEVICE_STATE_UNAVAILABLE, new Java.Lang.String(""));
// will enable the headphone
setDeviceConnectionState.Invoke(audioSystemClass, (Java.Lang.Integer)DEVICE_OUT_WIRED_HEADPHONE, (Java.Lang.Integer)DEVICE_STATE_AVAILABLE, new Java.Lang.String(""));