/*
* SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*
* File based on:
* @(#)JavaSoundAuto.java 1.2 01/03/13
* Copyright (c) 1999-2001 Sun Microsystems, Inc. All Rights Reserved.
*/
package net.java.sip.communicator.impl.media.device;
import java.util.*;
import javax.media.*;
import net.java.sip.communicator.util.*;
public class JavaSoundAuto {
private static final Logger logger = Logger.getLogger(JavaSoundAuto.class);
private static final String detectClass =
"net.java.sip.communicator.impl.media.device.JavaSoundDetector";
CaptureDeviceInfo[] devices = null;
public static void main(String[] args) {
new JavaSoundAuto();
System.exit(0);
}
public JavaSoundAuto() {
boolean supported = false;
// instance JavaSoundDetector to check is javasound's capture is availabe
try {
Class cls = Class.forName(detectClass);
JavaSoundDetector detect = (JavaSoundDetector)cls.newInstance();
supported = detect.isSupported();
} catch (Throwable thr) {
supported = false;
logger.error("Failed detecting java sound audio", thr);
}
logger.info("JavaSound Capture Supported = " + supported);
if (supported) {
// It's there, start to register JavaSound with CaptureDeviceManager
Vector devices = (Vector) CaptureDeviceManager.getDeviceList(null).clone();
// remove the old javasound capturers
String name;
Enumeration enumeration = devices.elements();
while (enumeration.hasMoreElements()) {
CaptureDeviceInfo cdi = (CaptureDeviceInfo) enumeration.nextElement();
name = cdi.getName();
if (name.startsWith("JavaSound"))
CaptureDeviceManager.removeDevice(cdi);
}
// collect javasound capture device info from JavaSoundSourceStream
// and register them with CaptureDeviceManager
CaptureDeviceInfo[] cdi
= com.sun.media.protocol.javasound.JavaSoundSourceStream
.listCaptureDeviceInfo();
if ( cdi != null ){
for (int i = 0; i < cdi.length; i++)
CaptureDeviceManager.addDevice(cdi[i]);
try {
CaptureDeviceManager.commit();
logger.info("JavaSoundAuto: Committed ok");
} catch (java.io.IOException ioe) {
logger.error("JavaSoundAuto: error committing cdm");
}
}
}
}
}