From d7b485a50cb328ffa8768aa7dec64f493626279d Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Fri, 7 Sep 2018 14:46:38 +0800 Subject: [PATCH] WiFiDirectServiceDiscovery: Create a thread for sending message From Android 4.0, it is not allowed to do network io on main thread. Do write method in another thread to adapt this change. Bug: 113998459 Test: manual test with two devices Change-Id: I0d251fab110d34167d47e9c3a50af3307b76d5b7 --- .../wifidirect/discovery/ChatManager.java | 18 ++++++++++++------ .../wifidirect/discovery/WiFiChatFragment.java | 3 +-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/ChatManager.java b/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/ChatManager.java index d537f1067..52fb7a096 100644 --- a/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/ChatManager.java +++ b/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/ChatManager.java @@ -65,12 +65,18 @@ public class ChatManager implements Runnable { } } - public void write(byte[] buffer) { - try { - oStream.write(buffer); - } catch (IOException e) { - Log.e(TAG, "Exception during write", e); - } + public void write(String msg) { + byte[] buffer = msg.getBytes(); + Thread thread = new Thread() { + public void run() { + try { + oStream.write(buffer); + } catch (IOException e) { + Log.e(TAG, "Exception during write", e); + } + } + }; + thread.start(); } } diff --git a/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/WiFiChatFragment.java b/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/WiFiChatFragment.java index e4a1858b0..1c9dcab95 100644 --- a/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/WiFiChatFragment.java +++ b/samples/WiFiDirectServiceDiscovery/src/com/example/android/wifidirect/discovery/WiFiChatFragment.java @@ -43,8 +43,7 @@ public class WiFiChatFragment extends Fragment { @Override public void onClick(View arg0) { if (chatManager != null) { - chatManager.write(chatLine.getText().toString() - .getBytes()); + chatManager.write(chatLine.getText().toString()); pushMessage("Me: " + chatLine.getText().toString()); chatLine.setText(""); chatLine.clearFocus();