2012-04-28 7 views
3

JavaライブラリClingを使用して、upnpを使用してLAN上のテレビを検出できます。テレビでは、次のUPnPサービスupnp/dlnaでテレビを識別する

  • RenderingControl
  • AVTransportをアドバタイズ
  • のConnectionManager

また、それはタイプ "MediaRenderer" であり、モデル記述は、 "サムスンのテレビDMR" である、と言います。

私が理解する限り、これらの機能はすべて、たとえばコンピュータによって提供することもできます。しかし、「本当の」世界では、テレビとコンピュータは2つの異なるものです(同じサービスを提供していますが)。

私は "テレビ"と話していることをupnpメソッドで一意に識別できますか?

+0

を参照してください。なぜあなたはこれを行う必要があるのだろうか - TVとコンピュータが同じサービスを提供するならば、UPnPのコントロールポイントに関する限り、基本的に同じです。なぜそれらを区別する必要がありますか? – simonc

+0

私はテレビがオンかどうか、私の家の中のものを(光を変えるように)自動化するかどうか情報を使いたいですが、PCがオンになっていれば反応しません。可能であれば、私はそれを私の特定のテレビにのみ適用できるポータブルな解決策にしたいと思っています。 – Philipp

答えて

1

私が "移植性"を考え出す唯一の解決策は、一意のID(UUID)ごとにデバイスのホワイトリストを作成することです。特定のデバイスの外観を聞くコントローラを実装する場合は、デバイスのUUIDを取得し、それを使用してコントローラを設定します。コントローラにUIがある場合は、見つかったすべてのデバイスを提示し、ユーザーに「これはテレビですか?」と尋ねます。私は、特定のUPnPデバイスが「テレビ」であると言うためにUPnPに決定論的な方法がないと言っています。 UPnPは単にそのようなデバイスクラスを指定しません。あなたのサービスの観察はまったく正しいので、コンピュータだけでなくDVDプレーヤーやスマートな目覚まし時計からも同じ反応を得ることができます。

2

サービス記述ファイル(SCPD)を詳しく調べる方がよいでしょう。

状態変数がRenderingControlの場合、通常TVはContrastBrightnessですが、PC DLNAデバイスは通常そうではありません。

GetProtocolInfoConnectionManagerサービスを使用すると、テレビを他のオーディオデバイスと区別するのに使用できる可能なメディアフォーマットのリストを得ることができます。

はおそらく、特定のメーカー/機種のデバイスXMLを解析することによって、これを行う必要があるでしょうhttp://upnp.org/specs/av/av4/

+0

良い点。私がこのプロジェクトに戻ったら、それは私が手にしているテレビのための良い解決策であるかどうかを確認します。 – Philipp

関連する問題