mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-22 12:03:09 -04:00
Refactor: Restructure LocalFileTransferActivity
Shifted remaining P2P API callbacks and related methods to WifiDirectManager
This commit is contained in:
parent
8ec675efdd
commit
709e043f68
@ -9,7 +9,6 @@ import android.net.Uri;
|
||||
import android.net.wifi.p2p.WifiP2pDevice;
|
||||
import android.net.wifi.p2p.WifiP2pDeviceList;
|
||||
import android.net.wifi.p2p.WifiP2pInfo;
|
||||
import android.net.wifi.p2p.WifiP2pManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
@ -67,8 +66,8 @@ import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.Fil
|
||||
* 2) After handshake, starting the files transfer using {@link SenderDeviceAsyncTask} on the sender
|
||||
* device and {@link ReceiverDeviceAsyncTask} files receiving device
|
||||
*/
|
||||
public class LocalFileTransferActivity extends AppCompatActivity
|
||||
implements WifiP2pManager.PeerListListener, WifiP2pManager.ConnectionInfoListener {
|
||||
public class LocalFileTransferActivity extends AppCompatActivity implements
|
||||
WifiDirectManager.Callbacks {
|
||||
|
||||
// Not a typo, 'Log' tags have a length upper limit of 25 characters
|
||||
public static final String TAG = "LocalFileTransferActvty";
|
||||
@ -196,7 +195,7 @@ public class LocalFileTransferActivity extends AppCompatActivity
|
||||
if (!checkExternalStorageWritePermission()) return true;
|
||||
|
||||
/* Initiate discovery */
|
||||
if (!isWifiP2pEnabled()) {
|
||||
if (!wifiDirectManager.isWifiP2pEnabled()) {
|
||||
requestEnableWifiP2pServices();
|
||||
return true;
|
||||
}
|
||||
@ -228,14 +227,6 @@ public class LocalFileTransferActivity extends AppCompatActivity
|
||||
return fileUriArrayList;
|
||||
}
|
||||
|
||||
public void setWifiP2pEnabled(boolean wifiP2pEnabled) {
|
||||
this.wifiDirectManager.setWifiP2pEnabled(wifiP2pEnabled);
|
||||
}
|
||||
|
||||
public boolean isWifiP2pEnabled() {
|
||||
return this.wifiDirectManager.isWifiP2pEnabled();
|
||||
}
|
||||
|
||||
public void updateUserDevice(@Nullable WifiP2pDevice userDevice) { // Update UI with user device's details
|
||||
wifiDirectManager.setUserDevice(userDevice);
|
||||
|
||||
@ -382,9 +373,9 @@ public class LocalFileTransferActivity extends AppCompatActivity
|
||||
fileListAdapter.notifyItemChanged(itemIndex);
|
||||
}
|
||||
|
||||
/* From WifiP2pManager.PeerListListener callback-interface */
|
||||
/* From WifiDirectManager.Callbacks interface */
|
||||
@Override
|
||||
public void onPeersAvailable(@NonNull WifiP2pDeviceList peers) {
|
||||
public void updatePeerDevicesList(@NonNull WifiP2pDeviceList peers) {
|
||||
searchingPeersProgressBar.setVisibility(View.GONE);
|
||||
listViewPeerDevices.setVisibility(View.VISIBLE);
|
||||
|
||||
@ -397,13 +388,8 @@ public class LocalFileTransferActivity extends AppCompatActivity
|
||||
}
|
||||
}
|
||||
|
||||
/* From WifiP2pManager.ConnectionInfoListener callback-interface */
|
||||
@Override
|
||||
public void onConnectionInfoAvailable(@NonNull WifiP2pInfo groupInfo) {
|
||||
/* Devices have successfully connected, and 'info' holds information about the wifi p2p group formed */
|
||||
wifiDirectManager.setGroupInfo(groupInfo);
|
||||
|
||||
// Start handshake between the devices
|
||||
public void performHandshakeWithSelectedPeerDevice(@NonNull WifiP2pInfo groupInfo) {
|
||||
if (BuildConfig.DEBUG) {
|
||||
Log.d(TAG, "Starting handshake");
|
||||
}
|
||||
@ -554,7 +540,7 @@ public class LocalFileTransferActivity extends AppCompatActivity
|
||||
}
|
||||
|
||||
case REQUEST_ENABLE_WIFI_P2P: {
|
||||
if (!isWifiP2pEnabled()) {
|
||||
if (!wifiDirectManager.isWifiP2pEnabled()) {
|
||||
showToast(this, R.string.discovery_needs_wifi, Toast.LENGTH_LONG);
|
||||
}
|
||||
break;
|
||||
|
@ -43,9 +43,9 @@ public class WifiDirectBroadcastReceiver extends BroadcastReceiver {
|
||||
int wifiP2pState = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
|
||||
|
||||
if (wifiP2pState == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
|
||||
wifiActivity.setWifiP2pEnabled(true);
|
||||
wifiActivity.wifiDirectManager.setWifiP2pEnabled(true);
|
||||
} else {
|
||||
wifiActivity.setWifiP2pEnabled(false);
|
||||
wifiActivity.wifiDirectManager.setWifiP2pEnabled(false);
|
||||
showToast(wifiActivity, R.string.discovery_needs_wifi, Toast.LENGTH_SHORT);
|
||||
wifiActivity.clearPeers();
|
||||
}
|
||||
@ -55,7 +55,7 @@ public class WifiDirectBroadcastReceiver extends BroadcastReceiver {
|
||||
if (manager != null) {
|
||||
/* List of available peers has changed, so request & use the new list through
|
||||
* PeerListListener.requestPeers() callback */
|
||||
manager.requestPeers(channel, wifiActivity);
|
||||
manager.requestPeers(channel, wifiActivity.wifiDirectManager);
|
||||
}
|
||||
Log.d(LocalFileTransferActivity.TAG, "P2P peers changed");
|
||||
} else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
|
||||
@ -67,7 +67,7 @@ public class WifiDirectBroadcastReceiver extends BroadcastReceiver {
|
||||
|
||||
if (networkInfo.isConnected()) {
|
||||
// Request connection info about the wifi p2p group formed upon connection
|
||||
manager.requestConnectionInfo(channel, wifiActivity);
|
||||
manager.requestConnectionInfo(channel, wifiActivity.wifiDirectManager);
|
||||
} else {
|
||||
// Not connected after connection change -> Disconnected
|
||||
wifiActivity.clearPeers();
|
||||
|
@ -6,6 +6,7 @@ import android.content.IntentFilter;
|
||||
import android.net.wifi.WpsInfo;
|
||||
import android.net.wifi.p2p.WifiP2pConfig;
|
||||
import android.net.wifi.p2p.WifiP2pDevice;
|
||||
import android.net.wifi.p2p.WifiP2pDeviceList;
|
||||
import android.net.wifi.p2p.WifiP2pInfo;
|
||||
import android.net.wifi.p2p.WifiP2pManager;
|
||||
import android.os.Build;
|
||||
@ -22,7 +23,7 @@ import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.LocalFileTra
|
||||
/**
|
||||
* Manager for the Wifi-P2p API, used in the local file transfer module
|
||||
* */
|
||||
public class WifiDirectManager implements WifiP2pManager.ChannelListener {
|
||||
public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2pManager.PeerListListener, WifiP2pManager.ConnectionInfoListener {
|
||||
|
||||
private static final String TAG = "WifiDirectManager";
|
||||
|
||||
@ -111,6 +112,20 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener {
|
||||
}
|
||||
}
|
||||
|
||||
/* From WifiP2pManager.PeerListListener callback-interface */
|
||||
@Override
|
||||
public void onPeersAvailable(@NonNull WifiP2pDeviceList peers) {
|
||||
((Callbacks) activity).updatePeerDevicesList(peers);
|
||||
}
|
||||
|
||||
/* From WifiP2pManager.ConnectionInfoListener callback-interface */
|
||||
@Override
|
||||
public void onConnectionInfoAvailable(@NonNull WifiP2pInfo groupInfo) {
|
||||
/* Devices have successfully connected, and 'info' holds information about the wifi p2p group formed */
|
||||
setGroupInfo(groupInfo);
|
||||
((Callbacks) activity).performHandshakeWithSelectedPeerDevice(groupInfo);
|
||||
}
|
||||
|
||||
public void setUserDevice(@NonNull WifiP2pDevice userDevice) {
|
||||
this.userDevice = userDevice;
|
||||
}
|
||||
@ -205,4 +220,10 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener {
|
||||
return ("Unknown error code - " + reason);
|
||||
}
|
||||
}
|
||||
|
||||
public interface Callbacks {
|
||||
void updatePeerDevicesList(@NonNull WifiP2pDeviceList peers);
|
||||
|
||||
void performHandshakeWithSelectedPeerDevice(@NonNull WifiP2pInfo groupInfo);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user