1 package org.wamblee.upnpmonitor;
3 import org.teleal.cling.UpnpService;
4 import org.teleal.cling.UpnpServiceImpl;
5 import org.teleal.cling.controlpoint.ControlPoint;
6 import org.teleal.cling.model.message.header.DeviceTypeHeader;
7 import org.teleal.cling.model.meta.Device;
8 import org.teleal.cling.model.types.DeviceType;
9 import org.teleal.cling.registry.DefaultRegistryListener;
10 import org.teleal.cling.registry.Registry;
11 import org.teleal.cling.registry.RegistryListener;
13 public class UpnpStack {
15 public static interface Listener {
17 void deviceAdded(String aDeviceString);
19 void deviceRemoved(String aDeviceString);
22 private UpnpService upnpService;
23 private ControlPoint controlPoint;
24 private DeviceType deviceType;
26 public UpnpStack(final Listener aListener) {
27 RegistryListener listener = new DefaultRegistryListener() {
29 public void deviceAdded(Registry aRegistry, Device aDevice) {
30 super.deviceAdded(aRegistry, aDevice);
31 aListener.deviceAdded(aDevice.getDisplayString());
35 public void deviceRemoved(Registry aRegistry, Device aDevice) {
36 super.deviceRemoved(aRegistry, aDevice);
37 aListener.deviceRemoved(aDevice.getDisplayString());
40 upnpService = new UpnpServiceImpl(listener);
41 controlPoint = upnpService.getControlPoint();
42 deviceType = new DeviceType("schemas-upnp-org", "MediaServer");
46 public void search() {
47 upnpService.getRegistry().removeAllRemoteDevices();
48 controlPoint.search(new DeviceTypeHeader(deviceType));
51 public void shutdown() {
52 upnpService.shutdown();