質問編集履歴

2

追記

2019/04/23 11:48

投稿

Mustard
Mustard

スコア11

test CHANGED
File without changes
test CHANGED
@@ -27,6 +27,18 @@
27
27
 
28
28
 
29
29
  (追記2)
30
+
31
+ 先に接続している2台のうちグループオーナーになった端末に対し3台目が接続要求を行ったところ接続が形成されました。
32
+
33
+ グループオーナーである端末は他2台からのメッセージを受信できました。
34
+
35
+ 一方でグループオーナーからのメッセージはクライアント端末の2台のうち後から接続した方にのみ送信されたことを確認しました。
36
+
37
+
38
+
39
+ このことからグループオーナーとなった端末が全てのクライアント端末に送信処理を行うことで双方向の1対多通信が実現できると考えているのですがどうでしょうか。
40
+
41
+
30
42
 
31
43
  確認に用いた端末はMOTOROLA moto g4 plus(androidバージョン 7.0)です。
32
44
 

1

追記

2019/04/23 11:48

投稿

Mustard
Mustard

スコア11

test CHANGED
File without changes
test CHANGED
@@ -11,3 +11,73 @@
11
11
 
12
12
 
13
13
  お忙しいところ大変申し訳無いのですが回答のほどお待ちしております。
14
+
15
+
16
+
17
+ (追記)
18
+
19
+ Pigeon Messengerはandroid.net.wifi.p2p.nsd.WifiP2pDnsSdServiceRequestやWifiP2pDnsSdServiceInfo等のWiFiサービスを利用することで1対多通信を実現していることがわかりました。
20
+
21
+ そこでSDKサンプルの[WiFiDirectServiceDiscovery](https://github.com/Miserlou/Android-SDK-Samples/tree/master/WiFiDirectServiceDiscovery)を試してみたところ、Pigeon Messengerと異なりこちらは1対1の通信が確立した後に3台目の端末から接続要求を出しても受理されないようでした。
22
+
23
+ この差を理解できれば実装のヒントになりそうなのですが現状把握できていません。
24
+
25
+ WiFiDirectServiceDiscoveryのコードに何を書き加えることで複数接続が実装できるのでしょうか。
26
+
27
+
28
+
29
+ (追記2)
30
+
31
+ 確認に用いた端末はMOTOROLA moto g4 plus(androidバージョン 7.0)です。
32
+
33
+ またWiFiDirectServiceDiscoveryをそのままビルドしたところエラーが生じたため以下のようにWiFiChatFragment.javaに一文追加しました。
34
+
35
+ ```WiFiChatFragment
36
+
37
+ @Override
38
+
39
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
40
+
41
+ Bundle savedInstanceState) {
42
+
43
+ ----(略)----
44
+
45
+ view.findViewById(R.id.button1).setOnClickListener(
46
+
47
+ new View.OnClickListener() {
48
+
49
+
50
+
51
+ @Override
52
+
53
+ public void onClick(View arg0) {
54
+
55
+ if (chatManager != null) {
56
+
57
+ //追加したコード
58
+
59
+ StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());
60
+
61
+ //
62
+
63
+                chatManager.write(chatLine.getText().toString().getBytes());
64
+
65
+ pushMessage("Me: " + chatLine.getText().toString());
66
+
67
+ chatLine.setText("");
68
+
69
+ chatLine.clearFocus();
70
+
71
+ }
72
+
73
+ }
74
+
75
+ });
76
+
77
+ return view;
78
+
79
+ }
80
+
81
+ ----(略)----
82
+
83
+ ```