mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-23 12:42:56 -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.WifiP2pDevice;
|
||||||
import android.net.wifi.p2p.WifiP2pDeviceList;
|
import android.net.wifi.p2p.WifiP2pDeviceList;
|
||||||
import android.net.wifi.p2p.WifiP2pInfo;
|
import android.net.wifi.p2p.WifiP2pInfo;
|
||||||
import android.net.wifi.p2p.WifiP2pManager;
|
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
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
|
* 2) After handshake, starting the files transfer using {@link SenderDeviceAsyncTask} on the sender
|
||||||
* device and {@link ReceiverDeviceAsyncTask} files receiving device
|
* device and {@link ReceiverDeviceAsyncTask} files receiving device
|
||||||
*/
|
*/
|
||||||
public class LocalFileTransferActivity extends AppCompatActivity
|
public class LocalFileTransferActivity extends AppCompatActivity implements
|
||||||
implements WifiP2pManager.PeerListListener, WifiP2pManager.ConnectionInfoListener {
|
WifiDirectManager.Callbacks {
|
||||||
|
|
||||||
// Not a typo, 'Log' tags have a length upper limit of 25 characters
|
// Not a typo, 'Log' tags have a length upper limit of 25 characters
|
||||||
public static final String TAG = "LocalFileTransferActvty";
|
public static final String TAG = "LocalFileTransferActvty";
|
||||||
@ -196,7 +195,7 @@ public class LocalFileTransferActivity extends AppCompatActivity
|
|||||||
if (!checkExternalStorageWritePermission()) return true;
|
if (!checkExternalStorageWritePermission()) return true;
|
||||||
|
|
||||||
/* Initiate discovery */
|
/* Initiate discovery */
|
||||||
if (!isWifiP2pEnabled()) {
|
if (!wifiDirectManager.isWifiP2pEnabled()) {
|
||||||
requestEnableWifiP2pServices();
|
requestEnableWifiP2pServices();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -228,14 +227,6 @@ public class LocalFileTransferActivity extends AppCompatActivity
|
|||||||
return fileUriArrayList;
|
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
|
public void updateUserDevice(@Nullable WifiP2pDevice userDevice) { // Update UI with user device's details
|
||||||
wifiDirectManager.setUserDevice(userDevice);
|
wifiDirectManager.setUserDevice(userDevice);
|
||||||
|
|
||||||
@ -382,9 +373,9 @@ public class LocalFileTransferActivity extends AppCompatActivity
|
|||||||
fileListAdapter.notifyItemChanged(itemIndex);
|
fileListAdapter.notifyItemChanged(itemIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* From WifiP2pManager.PeerListListener callback-interface */
|
/* From WifiDirectManager.Callbacks interface */
|
||||||
@Override
|
@Override
|
||||||
public void onPeersAvailable(@NonNull WifiP2pDeviceList peers) {
|
public void updatePeerDevicesList(@NonNull WifiP2pDeviceList peers) {
|
||||||
searchingPeersProgressBar.setVisibility(View.GONE);
|
searchingPeersProgressBar.setVisibility(View.GONE);
|
||||||
listViewPeerDevices.setVisibility(View.VISIBLE);
|
listViewPeerDevices.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
@ -397,13 +388,8 @@ public class LocalFileTransferActivity extends AppCompatActivity
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* From WifiP2pManager.ConnectionInfoListener callback-interface */
|
|
||||||
@Override
|
@Override
|
||||||
public void onConnectionInfoAvailable(@NonNull WifiP2pInfo groupInfo) {
|
public void performHandshakeWithSelectedPeerDevice(@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
|
|
||||||
if (BuildConfig.DEBUG) {
|
if (BuildConfig.DEBUG) {
|
||||||
Log.d(TAG, "Starting handshake");
|
Log.d(TAG, "Starting handshake");
|
||||||
}
|
}
|
||||||
@ -554,7 +540,7 @@ public class LocalFileTransferActivity extends AppCompatActivity
|
|||||||
}
|
}
|
||||||
|
|
||||||
case REQUEST_ENABLE_WIFI_P2P: {
|
case REQUEST_ENABLE_WIFI_P2P: {
|
||||||
if (!isWifiP2pEnabled()) {
|
if (!wifiDirectManager.isWifiP2pEnabled()) {
|
||||||
showToast(this, R.string.discovery_needs_wifi, Toast.LENGTH_LONG);
|
showToast(this, R.string.discovery_needs_wifi, Toast.LENGTH_LONG);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -43,9 +43,9 @@ public class WifiDirectBroadcastReceiver extends BroadcastReceiver {
|
|||||||
int wifiP2pState = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
|
int wifiP2pState = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
|
||||||
|
|
||||||
if (wifiP2pState == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
|
if (wifiP2pState == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
|
||||||
wifiActivity.setWifiP2pEnabled(true);
|
wifiActivity.wifiDirectManager.setWifiP2pEnabled(true);
|
||||||
} else {
|
} else {
|
||||||
wifiActivity.setWifiP2pEnabled(false);
|
wifiActivity.wifiDirectManager.setWifiP2pEnabled(false);
|
||||||
showToast(wifiActivity, R.string.discovery_needs_wifi, Toast.LENGTH_SHORT);
|
showToast(wifiActivity, R.string.discovery_needs_wifi, Toast.LENGTH_SHORT);
|
||||||
wifiActivity.clearPeers();
|
wifiActivity.clearPeers();
|
||||||
}
|
}
|
||||||
@ -55,7 +55,7 @@ public class WifiDirectBroadcastReceiver extends BroadcastReceiver {
|
|||||||
if (manager != null) {
|
if (manager != null) {
|
||||||
/* List of available peers has changed, so request & use the new list through
|
/* List of available peers has changed, so request & use the new list through
|
||||||
* PeerListListener.requestPeers() callback */
|
* PeerListListener.requestPeers() callback */
|
||||||
manager.requestPeers(channel, wifiActivity);
|
manager.requestPeers(channel, wifiActivity.wifiDirectManager);
|
||||||
}
|
}
|
||||||
Log.d(LocalFileTransferActivity.TAG, "P2P peers changed");
|
Log.d(LocalFileTransferActivity.TAG, "P2P peers changed");
|
||||||
} else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
|
} else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
|
||||||
@ -67,7 +67,7 @@ public class WifiDirectBroadcastReceiver extends BroadcastReceiver {
|
|||||||
|
|
||||||
if (networkInfo.isConnected()) {
|
if (networkInfo.isConnected()) {
|
||||||
// Request connection info about the wifi p2p group formed upon connection
|
// Request connection info about the wifi p2p group formed upon connection
|
||||||
manager.requestConnectionInfo(channel, wifiActivity);
|
manager.requestConnectionInfo(channel, wifiActivity.wifiDirectManager);
|
||||||
} else {
|
} else {
|
||||||
// Not connected after connection change -> Disconnected
|
// Not connected after connection change -> Disconnected
|
||||||
wifiActivity.clearPeers();
|
wifiActivity.clearPeers();
|
||||||
|
@ -6,6 +6,7 @@ import android.content.IntentFilter;
|
|||||||
import android.net.wifi.WpsInfo;
|
import android.net.wifi.WpsInfo;
|
||||||
import android.net.wifi.p2p.WifiP2pConfig;
|
import android.net.wifi.p2p.WifiP2pConfig;
|
||||||
import android.net.wifi.p2p.WifiP2pDevice;
|
import android.net.wifi.p2p.WifiP2pDevice;
|
||||||
|
import android.net.wifi.p2p.WifiP2pDeviceList;
|
||||||
import android.net.wifi.p2p.WifiP2pInfo;
|
import android.net.wifi.p2p.WifiP2pInfo;
|
||||||
import android.net.wifi.p2p.WifiP2pManager;
|
import android.net.wifi.p2p.WifiP2pManager;
|
||||||
import android.os.Build;
|
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
|
* 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";
|
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) {
|
public void setUserDevice(@NonNull WifiP2pDevice userDevice) {
|
||||||
this.userDevice = userDevice;
|
this.userDevice = userDevice;
|
||||||
}
|
}
|
||||||
@ -205,4 +220,10 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener {
|
|||||||
return ("Unknown error code - " + reason);
|
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