via tipos tarjeta sonido funcionamiento externa envy chipset caracteristicas basada java android audio usb soundcard

java - tipos - tarjeta de sonido pc



Tocando 2 músicas a través de 2 tarjetas de sonido diferentes al mismo tiempo (2)

Intentando algo bastante fuera de la caja ... Tengo una aplicación sencilla con un botón que cuando se presiona, reproduce música desde la toma de audio de mi tableta Android.

public void btn1 (View view) { MediaPlayer mp = MediaPlayer.create(this, R.raw.xxx); mp.start(); }

Ahora he agregado una interfaz de audio usb (a través de un adaptador micro usb) y puedo escuchar el audio.

Soy capaz de listar las tarjetas de sonido con esto

AudioDeviceInfo[] devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS); for (AudioDeviceInfo device : devices) { int b = device.getId(); int d = device.getType(); CharSequence productName = device.getProductName(); }

¿Cómo dirijo la música para que pueda reproducir 2 canciones diferentes a la vez, una a través de usb y la otra a través del conector para auriculares?



Funciona de esta manera:

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(); } }

También puede filtrar el evento de enchufe / desenchufe del auricular:

IntentFilter intentFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG); Intent intent = context.registerReceiver(null, intentFilter); boolean isConnected = intent.getIntExtra("state", 0) == 1;

fuentes: me , basado en la documentación del SDK para el MediaPlayer .