この電話の Wifi でブロードキャストを受信できる必要があります。これは、Android 2.2 を実行している、約 2 年前の HTC Desire です。
私はドキュメントと見つけたいくつかのサンプルコードに従い、マルチキャストを有効にするためにこのコードになりました:
mWifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
WifiManager.MulticastLock multicastLock = mWifiManager.createMulticastLock("net.inside.broadcast");
multicastLock.setReferenceCounted(true);
multicastLock.acquire();
Log.i("BCXXX", "multicastLock.isHeld() = " + multicastLock.isHeld());
Log.i("BCXXX", "multicastLock.toString() = " + multicastLock.toString());
ログ出力は次のとおりです。
I/BCXXX ( 3302): multicastLock.isHeld() = true
I/BCXXX ( 3302): multicastLock.toString() = MulticastLock{ 45fa2b88; held; refcounted: refcount = 1 }
これは、multicastLock を保持する必要があること、つまりマルチキャストが機能することを確認しているようです。しかし、そうではありません。Android アプリは、自身のブロードキャスト パケット (つまり、他のアプリに送信するパケット) を除いて、ブロードキャスト パケットを受信しません。言及すべき他のマシンは、Android フォンを問題なく認識し、そのブロードキャスト メッセージを受信できます。パケットを 255.255.255.255 と 192.168.0.255 にアドレス指定しようとしました (192.168.0. は明らかに LAN 内で全員が接続されているネットです)。
これは Unity 3.5 でビルドされたプロジェクトであり、Windows ビルドと OS X ビルドの両方が期待どおりに動作します。Android プラグインは呼び出されます (ログ エントリから明らかなように)。
アイデアはありますか?