/* * AlsaMixerTest.java */ import org.tritonus.lowlevel.alsa.AlsaMixer; import org.tritonus.lowlevel.alsa.AlsaMixerElement; public class AlsaMixerTest { private static boolean sm_bShowInactiveElements; public static void main(String[] args) throws Exception { String strMixerName = "hw:0"; if (args.length > 0) { strMixerName = args[0]; } out("Mixer: " + strMixerName); AlsaMixer mixer = new AlsaMixer(strMixerName); int[] anIndices = new int[200]; String[] astrNames = new String[200]; int nReturn = mixer.readControlList(anIndices, astrNames); out("readControlList() returns: " + nReturn); if (nReturn > 0) { out("Mixer controls:"); for (int i = 0; i < nReturn; i++) { out("" + i + " " + anIndices[i] + " " + astrNames[i]); AlsaMixerElement element = new AlsaMixerElement(mixer, anIndices[i], astrNames[i]); if (element.isActive() || sm_bShowInactiveElements) { out("--------------------------------------------------------------------------------"); output(element); } } out("--------------------------------------------------------------------------------"); } mixer.close(); } private static void output(AlsaMixerElement element) { out(" name: " + element.getName()); out(" index: " + element.getName()); out(" active: " + element.isActive()); if (hasPlaybackChannels(element)) { outputPlayback(element); } else { out("* no playback channels"); } if (hasCaptureChannels(element)) { outputCapture(element); } else { out("* no capture channels"); } } private static void outputPlayback(AlsaMixerElement element) { out(" playback mono: " + element.isPlaybackMono()); for (int nChannel = AlsaMixerElement.SND_MIXER_SCHN_FRONT_LEFT; nChannel <= AlsaMixerElement.SND_MIXER_SCHN_WOOFER; nChannel++) { out(" playback channel (" + AlsaMixerElement.getChannelName(nChannel) + "): " + element.hasPlaybackChannel(nChannel)); } out(" common volume: " + element.hasCommonVolume()); out(" playback volume: " + element.hasPlaybackVolume()); out(" playback volume joined: " + element.hasPlaybackVolumeJoined()); out(" common switch: " + element.hasCommonSwitch()); out(" playback switch: " + element.hasPlaybackSwitch()); out(" playback switch joined: " + element.hasPlaybackSwitchJoined()); } private static void outputCapture(AlsaMixerElement element) { out(" capture mono: " + element.isCaptureMono()); for (int nChannel = AlsaMixerElement.SND_MIXER_SCHN_FRONT_LEFT; nChannel <= AlsaMixerElement.SND_MIXER_SCHN_WOOFER; nChannel++) { out(" capture channel (" + AlsaMixerElement.getChannelName(nChannel) + "): " + element.hasCaptureChannel(nChannel)); } out(" common volume: " + element.hasCommonVolume()); out(" capture volume: " + element.hasCaptureVolume()); out(" capture volume joined: " + element.hasCaptureVolumeJoined()); out(" common switch: " + element.hasCommonSwitch()); out(" capture switch: " + element.hasCaptureSwitch()); out(" capture switch joined: " + element.hasCaptureSwitchJoinded()); out(" capture switch exclusive: " + element.hasCaptureSwitchExclusive()); if (element.hasCaptureSwitchExclusive()) { out(" capture group: " + element.getCaptureGroup()); } } private static boolean hasPlaybackChannels(AlsaMixerElement element) { boolean bHasChannels = false; for (int nChannel = AlsaMixerElement.SND_MIXER_SCHN_FRONT_LEFT; nChannel <= AlsaMixerElement.SND_MIXER_SCHN_WOOFER; nChannel++) { bHasChannels |= element.hasPlaybackChannel(nChannel); } return bHasChannels; } private static boolean hasCaptureChannels(AlsaMixerElement element) { boolean bHasChannels = false; for (int nChannel = AlsaMixerElement.SND_MIXER_SCHN_FRONT_LEFT; nChannel <= AlsaMixerElement.SND_MIXER_SCHN_WOOFER; nChannel++) { bHasChannels |= element.hasCaptureChannel(nChannel); } return bHasChannels; } private static void out(String strMessage) { System.out.println(strMessage); } } /*** AlsaMixerTest.java ***/