analytics

jueves, 26 de octubre de 2017

Java dispositivos de audio



Vamos a poner unas sencillas funciones que nos listarán los dispositivos de audio del sistema, para devolvernos o bien una lista de nombres del dispositivo, o bien una lista de mezcladores del sistema, (para poder después operar con ellos como proceda). No hay mucho más que explicar. Listo para un copy/paste y que sea de utilidad.

    
import java.util.ArrayList;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Line;
import javax.sound.sampled.Mixer;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.TargetDataLine;

    
    public static ArrayList<String> getInputDevices(){
        
        ArrayList<String> retVal = new ArrayList<>();
        Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
        Line.Info targetDLInfo = new Line.Info(TargetDataLine.class);       

        for (int cnt = 0; cnt < mixerInfo.length; cnt++) {
            Mixer currentMixer = AudioSystem.getMixer(mixerInfo[cnt]);

            if (currentMixer.isLineSupported(targetDLInfo)) {
                retVal.add(mixerInfo[cnt].getName());                
            }            
        }
        return retVal;
    }
    

    public static ArrayList<String> getOutputDevices(){
        
        ArrayList<String> retVal = new ArrayList<>();
        Mixer.Info[] mixerInfo;
        mixerInfo = AudioSystem.getMixerInfo();        
        Line.Info sourcetDLInfo = new Line.Info(SourceDataLine.class);

        for (int cnt = 0; cnt < mixerInfo.length; cnt++) {
            Mixer currentMixer = AudioSystem.getMixer(mixerInfo[cnt]);
            if (currentMixer.isLineSupported(sourcetDLInfo)) {
                retVal.add(mixerInfo[cnt].getName());
            }
        }
        return retVal;
    }

    public static ArrayList<Mixer> getInputDevicesMixer(){
        
        ArrayList<Mixer> retVal = new ArrayList<>();
        Mixer.Info[] mixerInfo;
        mixerInfo = AudioSystem.getMixerInfo();
        Line.Info targetDLInfo = new Line.Info(TargetDataLine.class);       

        for (int cnt = 0; cnt < mixerInfo.length; cnt++) {
            Mixer currentMixer = AudioSystem.getMixer(mixerInfo[cnt]);

            if (currentMixer.isLineSupported(targetDLInfo)) {
                retVal.add(currentMixer);                
            }            
        }
        return retVal;
    }
    

    public static ArrayList<Mixer> getOutputDevicesMixer(){
        
        ArrayList<Mixer> retVal = new ArrayList<>();
        Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();        
        Line.Info sourcetDLInfo = new Line.Info(SourceDataLine.class);

        for (int cnt = 0; cnt < mixerInfo.length; cnt++) {
            Mixer currentMixer = AudioSystem.getMixer(mixerInfo[cnt]);
            if (currentMixer.isLineSupported(sourcetDLInfo)) {
                retVal.add(currentMixer);
            }
        }
        return retVal;
    }

No hay comentarios:

Publicar un comentario