From dd2b4dfa768691350982259a4e3b2a81f2cfaf54 Mon Sep 17 00:00:00 2001 From: Aditya-Sood Date: Sat, 29 Jun 2019 21:03:38 +0530 Subject: [PATCH] Refactor WifiDirectBroadcastReceiver --- .../DeviceListFragment.java | 15 ++++++---- .../WifiDirectBroadcastReceiver.java | 29 +++++++++++-------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/DeviceListFragment.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/DeviceListFragment.java index 801abdbb2..1b76ccc25 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/DeviceListFragment.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/DeviceListFragment.java @@ -24,6 +24,7 @@ import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; import androidx.fragment.app.ListFragment; +import org.kiwix.kiwixmobile.BuildConfig; import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil; @@ -123,7 +124,7 @@ public class DeviceListFragment extends ListFragment implements WifiP2pManager.P .commit(); } - public void updateUserDevice(WifiP2pDevice device) { + public void updateUserDevice(WifiP2pDevice device) { // Update UI with user device's details this.userDevice = device; if(userDevice != null) { @@ -137,7 +138,7 @@ public class DeviceListFragment extends ListFragment implements WifiP2pManager.P public static String getDeviceStatus(int status) { - Log.d(LocalFileTransferActivity.TAG, "Peer Status: " + status); + if(BuildConfig.DEBUG) Log.d(TAG, "Peer Status: " + status); switch (status) { case WifiP2pDevice.AVAILABLE : return "Available"; case WifiP2pDevice.INVITED : return "Invited"; @@ -149,6 +150,7 @@ public class DeviceListFragment extends ListFragment implements WifiP2pManager.P } } + /* From WifiP2pManager.PeerListListener callback-interface */ @Override public void onPeersAvailable(WifiP2pDeviceList peers) { @@ -171,25 +173,26 @@ public class DeviceListFragment extends ListFragment implements WifiP2pManager.P ((WifiPeerListAdapter) getListAdapter()).notifyDataSetChanged(); } - public void onInitiateDiscovery() { + public void onInitiateDiscovery() { // Setup UI for searching peers ProgressBar searchingPeersProgressBar = deviceListFragmentRootView.findViewById(R.id.progress_bar_searching_peers); searchingPeersProgressBar.setVisibility(View.VISIBLE); FrameLayout frameLayoutPeerDevices = deviceListFragmentRootView.findViewById(R.id.frame_layout_peer_devices); frameLayoutPeerDevices.setVisibility(View.INVISIBLE); } + /* From WifiP2pManager.ConnectionInfoListener callback-interface */ @Override public void onConnectionInfoAvailable(WifiP2pInfo info) { + /* Devices have successfully connected, and 'info' holds information about the wifi p2p group formed */ groupInfo = info; - + // Start handshake between the devices new PeerGroupHandshakeAsyncTask(this, groupInfo).execute(); - // TODO: Disable onclick listener (of list) for connecting to devices - DONE using boolean startedFileTransfer } public void setClientAddress(InetAddress clientAddress) { if(clientAddress == null) { // null is returned only in case of a failed handshake - Toast.makeText(localFileTransferActivity, "Peer device not cooperating for transfer", Toast.LENGTH_LONG).show(); + Toast.makeText(localFileTransferActivity, "Selected device not cooperating for transfer", Toast.LENGTH_LONG).show(); localFileTransferActivity.closeLocalFileTransferActivity(); return; } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/WifiDirectBroadcastReceiver.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/WifiDirectBroadcastReceiver.java index 304b14206..536f75987 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/WifiDirectBroadcastReceiver.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/WifiDirectBroadcastReceiver.java @@ -11,6 +11,12 @@ import android.widget.Toast; import org.kiwix.kiwixmobile.R; +/** + * Helper class for the local file sharing module. + * + * Handles the broadcasts pertaining to the wifi p2p group formed in WiFi Direct. Works along with + * the wifi p2p manager in {@link LocalFileTransferActivity}. + * */ public class WifiDirectBroadcastReceiver extends BroadcastReceiver { private WifiP2pManager manager; @@ -29,47 +35,46 @@ public class WifiDirectBroadcastReceiver extends BroadcastReceiver { String action = intent.getAction(); if(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) { - + // Update wifi p2p state int wifiP2pState = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1); + if(wifiP2pState == WifiP2pManager.WIFI_P2P_STATE_ENABLED) { wifiActivity.setWifiP2pEnabled(true); } else { wifiActivity.setWifiP2pEnabled(false); Toast.makeText(wifiActivity, "Cannot discover peers without WiFi", Toast.LENGTH_SHORT).show(); - //TODO wifiActivity.resetPeers(); } - Log.d(wifiActivity.TAG, "WiFi P2P state changed - " + wifiP2pState); + Log.d(LocalFileTransferActivity.TAG, "WiFi P2P state changed - " + wifiP2pState); } else if(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) { if(manager != null) { - //TODO + /* List of available peers has changed, so request & use the new list through + * PeerListListener.requestPeers() callback */ manager.requestPeers(channel, (WifiP2pManager.PeerListListener) wifiActivity.getSupportFragmentManager().findFragmentById(R.id.fragment_device_list)); } - Log.d(wifiActivity.TAG, "P2P peers changed"); + Log.d(LocalFileTransferActivity.TAG, "P2P peers changed"); } else if(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) { if(manager == null) { return; } - - NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO); + NetworkInfo networkInfo = intent.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO); if(networkInfo.isConnected()) { - //TODO - // - + // Request connection info about the wifi p2p group formed upon connection manager.requestConnectionInfo(channel, (DeviceListFragment) wifiActivity.getSupportFragmentManager().findFragmentById(R.id.fragment_device_list)); } else { + // Not connected after connection change -> Disconnected wifiActivity.resetData(); } } else if(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) { - //TODO + // Update UI with wifi-direct details about the user device DeviceListFragment deviceListFragment = (DeviceListFragment) wifiActivity.getSupportFragmentManager().findFragmentById(R.id.fragment_device_list); - deviceListFragment.updateUserDevice((WifiP2pDevice) intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_DEVICE)); + deviceListFragment.updateUserDevice(intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_DEVICE)); } } }