import javax.comm.*; import java.util.TooManyListenersException; public class PhoneListener implements SerialPortEventListener { public static void main(String[] args) { String portName = "COM1"; if (args.length > 0) portName = args[0]; PhoneListener pl = new PhoneListener(); try { CommPortIdentifier cpi = CommPortIdentifier.getPortIdentifier(portName); if (cpi.getPortType() == CommPortIdentifier.PORT_SERIAL) { SerialPort modem = (SerialPort) cpi.open("Phone Listener", 1000); modem.notifyOnRingIndicator(true); modem.addEventListener(pl); } } catch (NoSuchPortException e) { System.err.println("Usage: java PhoneListener port_name"); } catch (TooManyListenersException e) { // shouldn't happen in this example } catch (PortInUseException e) { System.err.println(e); } } public void serialEvent(SerialPortEvent evt) { System.err.println(evt.getEventType()); if (evt.getEventType() == SerialPortEvent.RI) { System.out.println("The phone is ringing"); } } }