尝试开箱即用的东西...我有一个简单的应用程序,带有一个按钮,当按下按钮时,它会从我的安卓平板电脑的音频插孔中播放音乐。
public void btn1 (View view) {
MediaPlayer mp = MediaPlayer.create(this, R.raw.xxx);
mp.start();
}
我现在添加了一个 USB 音频接口(通过微型 USB 适配器(,我可以听到其中的音频。
我可以用这个列出声卡
AudioDeviceInfo[] devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
for (AudioDeviceInfo device : devices) {
int b = device.getId();
int d = device.getType();
CharSequence productName = device.getProductName();
}
如何路由音乐以便我可以一次播放 2 种不同的音乐,一种通过 USB,另一种通过耳机插孔?
根据MediaPlayer
文档,您可以使用接收AudioDeviceInfo
作为参数的setPreferredDevice
来设置音频设备,请参阅 https://developer.android.com/reference/android/media/MediaPlayer.html#setPreferredDevice(android.media.AudioDeviceInfo(。
然后,您必须创建一个MediaPlayer
才能在每台设备上播放。
它的工作原理是这样的:
protected void playAudio() {
this.playByDeviceIdx(0, R.raw.xxx);
this.playByDeviceIdx(1, R.raw.yyy);
}
protected void playByDeviceIdx(int deviceIndex, @IdRes int resId) {
/* obtain audio-output device-infos */
deviceInfos[] devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
/* check, if the desired index is even within bounds */
if(deviceInfos.length < deviceIndex) {
/* create an instance of MediaPlayer */
MediaPlayer mp = MediaPlayer.create(this, resId);
/* assign a preferred device to the MediaPlayer instance */
mp.setPreferredDevice(deviceInfos[deviceIndex]);
/* start the playback (only if a device exists at the index) */
mp.start();
}
}
您还可以筛选头戴式耳机插孔插入/拔出事件:
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
Intent intent = context.registerReceiver(null, intentFilter);
boolean isConnected = intent.getIntExtra("state", 0) == 1;
来源:我,基于 MediaPlayer 的 SDK 文档。