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 ライブラリのソケット リスナー コードでは応答パケットが表示されません。
それで...何か足りないのですか?これはまだバグですか?誰かがこのようなリモートでさえ何かを得たことがありますか???