Я использую потрясающую библиотеку 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, который я искал, теперь, как мне получить эти корневые каталоги хранилища? В приведенной выше команде обзора мне нужно передать строковое представление некоторого индекса, чтобы получить «Music», «Video» или тому подобное. Как я могу получить верхний уровень каталогов хранилища, тогда как я могу просмотреть каждый из этих каталогов? Моя цель - создать хотя бы простой браузер.