0

Clingアプリケーションを使用してネットワーク上のデバイスをスキャンするアプリに取り組んでいます。getBaseURLメソッドを使用してデバイスのIPアドレスも表示できるように変更しようとしました。ただし、デバイスをスキャンすると、一部のデバイスはIPで表示され、その他のデバイスはnullを返します。これを整理する方法はありますか?

        @Override
    public String toString() {

        String name =
                device.getDetails() != null && device.getDetails().getFriendlyName() != null
                        ? device.getDetails().getFriendlyName() +device.getDetails().getBaseURL()
                        : device.getDisplayString();
4

1 に答える 1

0

興味深いことに、org.teleal.cling.model.meta.DeviceDetails多くのコンストラクターがありますが、2つのタイプしかありません。1つは取得するが取得friendlyNameしないbaseURL(したがってnullのままにする)ものと、もう1つ(2つだけ)は両方を取得するものです。baseURL最終的にプライベートなので、後で設定することはできません。私は個人的に設計上の決定を理解していませんが(なぜの知識がfriendlyNameの知識に取って代わると見なされるのかbaseURL)、そこにIMOが問題を抱えています。の最後のコンストラクターDeviceDetails(プライベートメンバーを設定する唯一のコンストラクター)にブレークポイントを設定し、それが呼び出されている場所(および特定のコンストラクターがオーバーロードする場所)を監視します。すべてのUPnPデバイスにはbaseURLがあり、NOTIFYメッセージのLOCATIONヘッダーで通知します。だからという事実DeviceDetails提供していませんが、Clingがそれに興味を持っていない(つまり、それを受け取るコンストラクターを呼び出さない)という問題です。

于 2013-01-28T12:31:07.233 に答える