Я использую замечательную библиотеку Cling
для сканирования моей сети на предмет устройств UPnP. Моя цель - создать небольшой браузер библиотеки DLNA, чтобы я мог изучить технологию. До сих пор мне удавалось 1. сканировать сеть и подключать устройства UPnP, 2. сканировать каждое удаленное устройство и определять, запущена ли на нем служба DLNA, и 3. просматривать непосредственных дочерних узлов известных узлов. Коротко, это мой метод, который может выполнить все это:
public void remoteDeviceAdded(Registry registry, RemoteDevice device) {
logger.debug("remote device added: {}[{}]", device.getDetails().getFriendlyName(),
device.getType().getType());
if (device.getType().getType().equals("MediaServer")) {
for (RemoteService service : device.getServices()) {
if (service.getServiceType().getType().equals("ContentDirectory")) {
// '1' is Music, '2' is Video, '3' is Pictures
this.service.getControlPoint().execute(new Browse(service, "3", BrowseFlag.DIRECT_CHILDREN) {
@Override public void received(ActionInvocation arg0,
DIDLContent didl) {
logger.debug("found {} items.", didl.getItems().size());
}
@Override public void updateStatus(Status arg0) { };
@Override public void failure(ActionInvocation arg0, UpnpResponse arg1, String arg2) { };
});
}
}
}
}
Я знаю, это, вероятно, выглядит как ужасный беспорядок, и это так, но он работает :) Когда я захожу в отладчик, я вижу, что у меня есть . Однако, в отличие от инструкций из руководства здесь , я не возвращаю никаких фактических медиа-элементов, только каталоги хранилища в результатах просмотра. Это имеет смысл, поскольку DLNA упорядочивает вещи в иерархию, например, так:
Music
All Music
Artists
Fleetwood Mac
...
Albums
...
Video
All Video
Folders
...
Мой вопрос в том, как проще всего просматривать эти папки и пролезать по иерархии? Я уже нахожусь в точке подключения к серверу UPnP DLNA, который искал, как мне теперь получить эти корневые каталоги хранилища? В приведенной выше команде просмотра я должен передать строковое представление некоторого индекса, чтобы получить «Музыка», «Видео» или тому подобное. Как мне получить верхний уровень каталогов хранилища, а затем как я могу просматривать каждый из этих каталогов? Моя цель - создать хотя бы простой браузер.