17

Android 2.2、特に Bonjour サービス検出用の JmDNS でマルチキャストが動作するようになった人はいますか? Android 1.5->2.0 のタイムフレームには、さまざまなレベルの成功を示す stackOverflow を含む多くの質問と回答があり、2.2 で修正されてクローズされたことを示すバグ トラッカーのバグ ( http://code .google.com/p/android/issues/detail?id=2323 ) . 「TuneControl」のソース コードを試してみましたが、これは ~1.5 で動作し、更新されておらず、2.2 でも動作しません。

では、質問は... 1) 2.2、特に JmDNS、特に Bonjour サービス検出でマルチキャストが動作するのを見た人はいますか?

2) これを機能させるには、コードに何が必要ですか?

私は適切な権限を使用しています:

<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

マルチキャスト ロックを取得します。

WifiManager wifi = (WifiManager)getSystemService( Context.WIFI_SERVICE );
if(wifi != null)
{
    MulticastLock mcLock = wifi.createMulticastLock("mylock");
    mcLock.acquire();
...

次に、jmDNS を起動してサーバーを探します。

    mdns = JmDNS.create(addr, HOSTNAME);
    jmdns.addServiceListener(TOUCH_ABLE_TYPE, listener);
    jmdns.addServiceListener(DACP_TYPE, listener);
    ...

リスナーはサービスを認識しません。Wireshark を使用して、要求パケットが送信され、サーバーが応答することを確認しましたが、jmDNS ライブラリのソケット リスナー コードでは応答パケットが表示されません。

それで...何か足りないのですか?これはまだバグですか?誰かがこのようなリモートでさえ何かを得たことがありますか???

4

3 に答える 3

13

私自身の質問に(失礼に)答えるために、http://code.google.com/p/android/issues/detail?id = 2917#c48で別の人から詳細情報が提供されまし。後世のために、彼らが言うように、ここにbrian.ro ...@gmail.comの答えがあります...

「EvoとHTCHero(CDMA)のJmDNSでmDNSの問題をデバッグするのにかなりの時間を費やしました。私が見つけたのは、Evoのbroadcomワイヤレスドライバーにフィルターが配置されているようです(そして私がm HTC Desireユーザーから同様の応答を取得する-同じチップセット、おそらくそのハンドセットでも)フィルターは、デフォルトで、マルチキャストを含むすべての非ユニキャストまたはネットワークブロードキャストトラフィックをブロックします。 。

問題は、MulticastLockを取得したときにEvoのwpa_supplicantがこれらのフィルターの削除をサポートしていないことであるようです。(ロックを取得した直後にログ出力を確認すると、私が何を意味するかがわかります)。残念ながら、ハードウェアベンダーがマルチキャストサポートを断片化していることが起こっています。...:( "

つまり...これはコーディングの問題というよりもデバイスの問題のようです。ドー。:(別のデバイスでテストする機会があれば...

于 2010-09-15T05:16:17.737 に答える
8

私はこれについて少し調査を行ってきましたが、これは Android 全般の問題であり、Android 2.3.7 またはその周辺で修正されていると考えています。

少し逸話的すぎますが、ここに私がテストしたものがあります:

  • HTC Desire、2.2、在庫: 失敗
  • HTC Desire、2.3.7、CyanogenMod: 成功
  • Motorola マイルストーン、2.1-update1: 失敗
  • HTC Desire S、2.3.3: 失敗
  • エイサー Iconia A501、3.2.1: 成功
  • Samsung 何か、2.3.3: 失敗
  • HTC Legend、2.2 だと思います: 失敗

「失敗」と言うと、実際には、「成功」したデバイスにマルチキャストメッセージを送信できましたが、jldupont が説明しているように、自分のメッセージ以外は何も受信しませんでした。

マルチキャスト IM アプリのKouchatは、2.1 までさかのぼってコンパイルできるにもかかわらず、2.3.7 以降でしか利用できないことに注意してください。

于 2012-03-23T09:08:06.147 に答える
1

もう 1 つの理由は、AP がサポートしていないことだと思います。

その他:Androidとのコンピューター送受信

お使いのコンピューターは WIFI のみを使用する必要があります。他のすべてのネットワークをオフにするのが最善です

于 2012-07-13T02:29:00.023 に答える