package org.wamblee.upnpmonitor; import org.teleal.cling.UpnpService; import org.teleal.cling.UpnpServiceImpl; import org.teleal.cling.controlpoint.ControlPoint; import org.teleal.cling.model.message.header.DeviceTypeHeader; import org.teleal.cling.model.meta.Device; import org.teleal.cling.model.types.DeviceType; import org.teleal.cling.registry.DefaultRegistryListener; import org.teleal.cling.registry.Registry; import org.teleal.cling.registry.RegistryListener; public class UpnpStack { public static interface Listener { void deviceAdded(String aDeviceString); void deviceRemoved(String aDeviceString); } private UpnpService upnpService; private ControlPoint controlPoint; private DeviceType deviceType; public UpnpStack(final Listener aListener) { RegistryListener listener = new DefaultRegistryListener() { @Override public void deviceAdded(Registry aRegistry, Device aDevice) { super.deviceAdded(aRegistry, aDevice); aListener.deviceAdded(aDevice.getDisplayString()); } @Override public void deviceRemoved(Registry aRegistry, Device aDevice) { super.deviceRemoved(aRegistry, aDevice); aListener.deviceRemoved(aDevice.getDisplayString()); } }; upnpService = new UpnpServiceImpl(listener); controlPoint = upnpService.getControlPoint(); deviceType = new DeviceType("schemas-upnp-org", "MediaServer"); } public void search() { upnpService.getRegistry().removeAllRemoteDevices(); controlPoint.search(new DeviceTypeHeader(deviceType)); } public void shutdown() { upnpService.shutdown(); } }