私はネットワーク上でUPnPデバイスをスキャンするために素晴らしいCling
ライブラリを使用しています。私の目標は、小さなDLNAライブラリブラウザを一緒に投げてテクノロジーを学ぶことです。ネットワークをスキャンしてUPnPデバイスを接続し、2.各リモートデバイスをスキャンし、DLNAサービスが実行されているかどうかを判断し、3.既知のノードの直下の子をブラウズすることができました。要するに、これはこのすべてを実行することができます私の方法である:ClingのすべてのDLNAルートストレージディレクトリを取得しますか?
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) { };
});
}
}
}
}
私が知っている、それはおそらく恐ろしい混乱のように見える、それはですが、私は、デバッガにドロップすると、それは:)作品、I私が得たものを見ることができます。しかし、ガイドhereの指示とは異なり、私は実際のメディア項目を返さず、ブラウズ結果のストレージディレクトリだけを返します。 DLNAはそうのような階層に物事を整理すると、この種のは理にかなって:
Music
All Music
Artists
Fleetwood Mac
...
Albums
...
Video
All Video
Folders
...
私の質問はこれで、階層を介してこれらのフォルダを参照して登るための最も簡単な方法は何ですか?私はすでに私が探していたUPnP DLNAサーバーに接続しているところですが、これらのルートストレージディレクトリはどうやって取得できますか?上記のbrowseコマンドでは、実際には、 "Music"や "Video"などを取得するために、いくつかのインデックスの文字列表現を渡す必要があります。どのようにストレージディレクトリのトップレベルを取得したら、それらのディレクトリのそれぞれをどのようにブラウズできますか?私の目標は、少なくともシンプルなブラウザを構築することです。
アイテムを入手したら、どのようにファイルリストを取得できましたか?私はコンテナを持っていますが、getItems()は常に空です。 – Nifhel
didl.getContainers()。get(0).getItems()は常に空です – Nifhel