ネットワーク上で自分のアプリを見つけようとしています。だから私はmulticast
テクノロジーを選びます。しかし、Android では一貫性がありません。
許可
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
マルチキャスト フィルタをロックする
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
mcastLock = wifiManager.createMulticastLock("SHAREALL_M_LOCK");
mcastLock.acquire();
マルチキャストの送信
MulticastSocket socket = new MulticastSocket();
socket.joinGroup(InetAddress.getByName("224.0.0.5"));
DatagramPacket packet = new DatagramPacket(msg, msg.length, InetAddress.getByName("224.0.0.5"), 8092);
socket.send(packet);
マルチキャストの受信
MulticastSocket socket = new MulticastSocket(8092);
socket.joinGroup(InetAddress.getByName("224.0.0.5"));
DatagramPacket packet = new DatagramPacket(data,data.length);
socket.receive(packet);
これらのコードを Samsung Galaxy SII と Moto G でテストしました。