こんにちは、みんな、
私は udp マルチキャストのプロジェクトに取り組んでいます。イーサネット ケーブル経由でマルチキャスト udp パケットを送信するサーバーがあります。Android でのマルチキャストに関するすべての投稿を読むのに何週間も費やしましたが、Asus Transformer Tablet 4.1 でまだ udp パケットを受信できません。
いくつかの理由で、ここにコードを入れることができません。慎重に説明しようと思います。
いくつかのものを表示する単純な MainActivity があります。Oncreate
という名前のメソッドを呼び出す行も同様ですUDPreceiver
。このメソッドは、 という名前のクラスで定義されていUDPreceiverClass
ます。
にはUDPreceiver
、次のマルチキャスト udp を受信するための古典的なコードがあります。
上記の Oncreate メソッドで、wifi ロックを取得しました。
WifiManager wifi = (WifiManager)getSystemService( Context.WIFI_SERVICE );
if(wifi != null){
WifiManager.MulticastLock lock = wifi.createMulticastLock("Log_Tag");
lock.acquire();
}
しかし、イーサネット接続に同じものを使用する必要があるかどうかはわかりません (そのようなロックは他に見つかりませんでした)。
マニフェストにすべての権限があります。
<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"/>
さらに(ネットワークとのリンクを持つすべての権限を追加しました)。
すぐに Wi-Fi で試すことができるようになりますが、どちらもあまり自信がありません。
コードをユニキャストで送信するとタブレットで動作しますが、マルチキャストでは動作しません!
それについて何かアドバイスはありますか?Wifiロックを配置するのに適切な場所ですか? イーサネットでも機能していますか?一部のデバイスではマルチキャストが許可されていないことはわかっていますが、Asus トランスの場合はどうなりますか?
どうぞよろしくお願いいたします。コードを見なくてもこれが複雑であることはわかっていますが、それは不可能です。申し訳ありません。
どうもありがとうございました !!