Получить все корневые каталоги хранилища DLNA в Cling?

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

7
задан Naftuli Kay 3 February 2011 в 20:57
поделиться