mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-22 12:03:09 -04:00
Reformat LocalFileTransfer sub-package
This commit is contained in:
parent
bdf979d973
commit
a17db838ff
@ -1,15 +1,15 @@
|
||||
package org.kiwix.kiwixmobile.zim_manager.local_file_transfer;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import androidx.annotation.IntDef;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.*;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.ERROR;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.SENDING;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.SENT;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.TO_BE_SENT;
|
||||
|
||||
/**
|
||||
* Helper class, part of the local file sharing module.
|
||||
|
@ -6,17 +6,17 @@ import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import java.util.ArrayList;
|
||||
import org.kiwix.kiwixmobile.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.*;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.ERROR;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.SENDING;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.SENT;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.TO_BE_SENT;
|
||||
|
||||
/**
|
||||
* Helper class, part of the local file sharing module.
|
||||
@ -33,9 +33,9 @@ public class FileListAdapter extends RecyclerView.Adapter<FileListAdapter.FileVi
|
||||
@NonNull
|
||||
@Override
|
||||
public FileListAdapter.FileViewHolder onCreateViewHolder(@NonNull ViewGroup parent,
|
||||
int viewType) {
|
||||
int viewType) {
|
||||
View itemView = LayoutInflater.from(parent.getContext())
|
||||
.inflate(R.layout.item_transfer_list, parent, false);
|
||||
.inflate(R.layout.item_transfer_list, parent, false);
|
||||
return new FileViewHolder(itemView, this);
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,6 @@ import android.content.Intent;
|
||||
import android.net.NetworkInfo;
|
||||
import android.net.wifi.p2p.WifiP2pDevice;
|
||||
import android.net.wifi.p2p.WifiP2pManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
@ -27,10 +26,11 @@ public class KiwixWifiP2pBroadcastReceiver extends BroadcastReceiver {
|
||||
@Override
|
||||
public void onReceive(@NonNull Context context, @NonNull Intent intent) {
|
||||
|
||||
switch(intent.getAction()) {
|
||||
switch (intent.getAction()) {
|
||||
case WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION: {
|
||||
int wifiP2pState = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
|
||||
p2pEventListener.onWifiP2pStateChanged((wifiP2pState == WifiP2pManager.WIFI_P2P_STATE_ENABLED));
|
||||
p2pEventListener.onWifiP2pStateChanged(
|
||||
(wifiP2pState == WifiP2pManager.WIFI_P2P_STATE_ENABLED));
|
||||
break;
|
||||
}
|
||||
|
||||
@ -51,7 +51,8 @@ public class KiwixWifiP2pBroadcastReceiver extends BroadcastReceiver {
|
||||
break;
|
||||
}
|
||||
|
||||
default: break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -20,20 +20,20 @@ import android.widget.ListView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnItemClick;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
import kotlin.Unit;
|
||||
import kotlin.jvm.functions.Function0;
|
||||
import org.kiwix.kiwixmobile.KiwixApplication;
|
||||
@ -42,10 +42,6 @@ import org.kiwix.kiwixmobile.utils.AlertDialogShower;
|
||||
import org.kiwix.kiwixmobile.utils.KiwixDialog;
|
||||
import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectManager.getDeviceStatus;
|
||||
|
||||
/**
|
||||
@ -63,7 +59,7 @@ import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectMa
|
||||
*/
|
||||
@SuppressLint("GoogleAppIndexingApiWarning")
|
||||
public class LocalFileTransferActivity extends AppCompatActivity implements
|
||||
WifiDirectManager.Callbacks {
|
||||
WifiDirectManager.Callbacks {
|
||||
|
||||
// Not a typo, 'Log' tags have a length upper limit of 25 characters
|
||||
public static final String TAG = "LocalFileTransferActvty";
|
||||
@ -93,10 +89,11 @@ public class LocalFileTransferActivity extends AppCompatActivity implements
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
KiwixApplication.getApplicationComponent().activityComponent()
|
||||
.activity(this)
|
||||
.build()
|
||||
.inject(this);
|
||||
setTheme(sharedPreferenceUtil.nightMode() ? R.style.Theme_AppCompat_DayNight_NoActionBar : R.style.AppTheme);
|
||||
.activity(this)
|
||||
.build()
|
||||
.inject(this);
|
||||
setTheme(sharedPreferenceUtil.nightMode() ? R.style.Theme_AppCompat_DayNight_NoActionBar
|
||||
: R.style.AppTheme);
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_local_file_transfer);
|
||||
ButterKnife.bind(this);
|
||||
@ -118,7 +115,7 @@ public class LocalFileTransferActivity extends AppCompatActivity implements
|
||||
actionBar.setNavigationOnClickListener(v -> finish());
|
||||
|
||||
listViewPeerDevices.setAdapter(
|
||||
new WifiPeerListAdapter(this, R.layout.row_peer_device, availablePeerDevices));
|
||||
new WifiPeerListAdapter(this, R.layout.row_peer_device, availablePeerDevices));
|
||||
|
||||
if (isFileSender) {
|
||||
for (int i = 0; i < fileUriArrayList.size(); i++) {
|
||||
@ -134,7 +131,7 @@ public class LocalFileTransferActivity extends AppCompatActivity implements
|
||||
@OnItemClick(R.id.list_peer_devices)
|
||||
void onItemClick(int position) {
|
||||
WifiP2pDevice senderSelectedPeerDevice =
|
||||
(WifiP2pDevice) listViewPeerDevices.getAdapter().getItem(position);
|
||||
(WifiP2pDevice) listViewPeerDevices.getAdapter().getItem(position);
|
||||
wifiDirectManager.sendToDevice(senderSelectedPeerDevice);
|
||||
}
|
||||
|
||||
@ -178,7 +175,8 @@ public class LocalFileTransferActivity extends AppCompatActivity implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserDeviceDetailsAvailable(@Nullable WifiP2pDevice userDevice) { // Update UI with user device's details
|
||||
public void onUserDeviceDetailsAvailable(@Nullable WifiP2pDevice userDevice) {
|
||||
// Update UI with user device's details
|
||||
if (userDevice != null) {
|
||||
deviceName.setText(userDevice.deviceName);
|
||||
Log.d(TAG, getDeviceStatus(userDevice.status));
|
||||
@ -236,23 +234,25 @@ public class LocalFileTransferActivity extends AppCompatActivity implements
|
||||
/* Helper methods used for checking permissions and states of services */
|
||||
private boolean checkCoarseLocationAccessPermission() { // Required by Android to detect wifi-p2p peers
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
|
||||
== PackageManager.PERMISSION_DENIED) {
|
||||
== PackageManager.PERMISSION_DENIED) {
|
||||
|
||||
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_COARSE_LOCATION)) {
|
||||
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
|
||||
Manifest.permission.ACCESS_COARSE_LOCATION)) {
|
||||
alertDialogShower.show(KiwixDialog.LocationPermissionRationale.INSTANCE,
|
||||
new Function0<Unit>() {
|
||||
@Override public Unit invoke() {
|
||||
ActivityCompat.requestPermissions(LocalFileTransferActivity.this, new String[] { Manifest.permission.ACCESS_COARSE_LOCATION },
|
||||
PERMISSION_REQUEST_CODE_COARSE_LOCATION);
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
});
|
||||
new Function0<Unit>() {
|
||||
@Override public Unit invoke() {
|
||||
ActivityCompat.requestPermissions(LocalFileTransferActivity.this,
|
||||
new String[] { Manifest.permission.ACCESS_COARSE_LOCATION },
|
||||
PERMISSION_REQUEST_CODE_COARSE_LOCATION);
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.ACCESS_COARSE_LOCATION },
|
||||
PERMISSION_REQUEST_CODE_COARSE_LOCATION);
|
||||
ActivityCompat.requestPermissions(this,
|
||||
new String[] { Manifest.permission.ACCESS_COARSE_LOCATION },
|
||||
PERMISSION_REQUEST_CODE_COARSE_LOCATION);
|
||||
}
|
||||
return false;
|
||||
|
||||
} else {
|
||||
return true; // Control reaches here: Either permission granted at install time, or at the time of request
|
||||
}
|
||||
@ -260,23 +260,25 @@ public class LocalFileTransferActivity extends AppCompatActivity implements
|
||||
|
||||
private boolean checkExternalStorageWritePermission() { // To access and store the zims
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
|
||||
== PackageManager.PERMISSION_DENIED) {
|
||||
== PackageManager.PERMISSION_DENIED) {
|
||||
|
||||
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
|
||||
Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
alertDialogShower.show(KiwixDialog.StoragePermissionRationale.INSTANCE,
|
||||
new Function0<Unit>() {
|
||||
@Override public Unit invoke() {
|
||||
ActivityCompat.requestPermissions(LocalFileTransferActivity.this, new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE },
|
||||
PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS);
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
});
|
||||
new Function0<Unit>() {
|
||||
@Override public Unit invoke() {
|
||||
ActivityCompat.requestPermissions(LocalFileTransferActivity.this,
|
||||
new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE },
|
||||
PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS);
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE },
|
||||
PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS);
|
||||
ActivityCompat.requestPermissions(this,
|
||||
new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE },
|
||||
PERMISSION_REQUEST_CODE_STORAGE_WRITE_ACCESS);
|
||||
}
|
||||
return false;
|
||||
|
||||
} else {
|
||||
return true; // Control reaches here: Either permission granted at install time, or at the time of request
|
||||
}
|
||||
@ -284,7 +286,7 @@ public class LocalFileTransferActivity extends AppCompatActivity implements
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
|
||||
@NonNull int[] grantResults) {
|
||||
@NonNull int[] grantResults) {
|
||||
|
||||
if (grantResults[0] == PackageManager.PERMISSION_DENIED) {
|
||||
switch (requestCode) {
|
||||
@ -314,7 +316,8 @@ public class LocalFileTransferActivity extends AppCompatActivity implements
|
||||
}
|
||||
|
||||
private boolean isLocationServiceEnabled() {
|
||||
return (isProviderEnabled(LocationManager.GPS_PROVIDER) || isProviderEnabled(LocationManager.NETWORK_PROVIDER));
|
||||
return (isProviderEnabled(LocationManager.GPS_PROVIDER)
|
||||
|| isProviderEnabled(LocationManager.NETWORK_PROVIDER));
|
||||
}
|
||||
|
||||
private boolean isProviderEnabled(String locationProvider) {
|
||||
@ -328,43 +331,44 @@ public class LocalFileTransferActivity extends AppCompatActivity implements
|
||||
}
|
||||
}
|
||||
|
||||
default: return false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void requestEnableLocationServices() {
|
||||
alertDialogShower.show(KiwixDialog.EnableLocationServices.INSTANCE,
|
||||
new Function0<Unit>() {
|
||||
@Override public Unit invoke() {
|
||||
startActivityForResult(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS),
|
||||
REQUEST_ENABLE_LOCATION_SERVICES);
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
},
|
||||
new Function0<Unit>() {
|
||||
@Override public Unit invoke() {
|
||||
showToast(LocalFileTransferActivity.this, R.string.discovery_needs_location,
|
||||
Toast.LENGTH_SHORT);
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
});
|
||||
new Function0<Unit>() {
|
||||
@Override public Unit invoke() {
|
||||
startActivityForResult(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS),
|
||||
REQUEST_ENABLE_LOCATION_SERVICES);
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
},
|
||||
new Function0<Unit>() {
|
||||
@Override public Unit invoke() {
|
||||
showToast(LocalFileTransferActivity.this, R.string.discovery_needs_location,
|
||||
Toast.LENGTH_SHORT);
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void requestEnableWifiP2pServices() {
|
||||
alertDialogShower.show(KiwixDialog.EnableWifiP2pServices.INSTANCE,
|
||||
new Function0<Unit>() {
|
||||
@Override public Unit invoke() {
|
||||
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
},
|
||||
new Function0<Unit>() {
|
||||
@Override public Unit invoke() {
|
||||
showToast(LocalFileTransferActivity.this, R.string.discovery_needs_wifi,
|
||||
Toast.LENGTH_SHORT);
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
});
|
||||
new Function0<Unit>() {
|
||||
@Override public Unit invoke() {
|
||||
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
},
|
||||
new Function0<Unit>() {
|
||||
@Override public Unit invoke() {
|
||||
showToast(LocalFileTransferActivity.this, R.string.discovery_needs_wifi,
|
||||
Toast.LENGTH_SHORT);
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,11 +1,7 @@
|
||||
package org.kiwix.kiwixmobile.zim_manager.local_file_transfer;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
import android.util.Log;
|
||||
|
||||
import org.kiwix.kiwixmobile.BuildConfig;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
@ -15,9 +11,7 @@ import java.net.InetSocketAddress;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.TO_BE_SENT;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectManager.getFileName;
|
||||
import org.kiwix.kiwixmobile.BuildConfig;
|
||||
|
||||
/**
|
||||
* Helper class for the local file sharing module.
|
||||
@ -46,7 +40,7 @@ class PeerGroupHandshakeAsyncTask extends AsyncTask<Void, Void, InetAddress> {
|
||||
|
||||
@Override
|
||||
protected InetAddress doInBackground(Void... voids) {
|
||||
if(BuildConfig.DEBUG) {
|
||||
if (BuildConfig.DEBUG) {
|
||||
Log.d(TAG, "Handshake in progress");
|
||||
}
|
||||
|
||||
@ -76,12 +70,13 @@ class PeerGroupHandshakeAsyncTask extends AsyncTask<Void, Void, InetAddress> {
|
||||
} else if (wifiDirectManager.isGroupFormed() && !isCancelled()) { //&& !groupInfo.isGroupOwner
|
||||
try (Socket client = new Socket()) {
|
||||
client.setReuseAddress(true);
|
||||
client.connect((new InetSocketAddress(wifiDirectManager.getGroupOwnerAddress().getHostAddress(),
|
||||
client.connect(
|
||||
(new InetSocketAddress(wifiDirectManager.getGroupOwnerAddress().getHostAddress(),
|
||||
PEER_HANDSHAKE_PORT)), 15000);
|
||||
|
||||
ObjectOutputStream objectOutputStream = new ObjectOutputStream(client.getOutputStream());
|
||||
objectOutputStream.writeObject(
|
||||
HANDSHAKE_MESSAGE); // Send message for the peer device to verify
|
||||
HANDSHAKE_MESSAGE); // Send message for the peer device to verify
|
||||
|
||||
exchangeFileTransferMetadata(client.getOutputStream(), client.getInputStream());
|
||||
|
||||
@ -122,7 +117,7 @@ class PeerGroupHandshakeAsyncTask extends AsyncTask<Void, Void, InetAddress> {
|
||||
if (totalFilesObject.getClass().equals(String.class)) {
|
||||
int total = Integer.parseInt((String) totalFilesObject);
|
||||
wifiDirectManager.setTotalFilesForTransfer(total);
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Metadata: "+total+" files");
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Metadata: " + total + " files");
|
||||
|
||||
ArrayList<FileItem> fileItems = new ArrayList<>();
|
||||
for (int i = 0; i < total; i++) { // Read names of each of those files, in order
|
||||
@ -130,7 +125,7 @@ class PeerGroupHandshakeAsyncTask extends AsyncTask<Void, Void, InetAddress> {
|
||||
|
||||
if (fileNameObject.getClass().equals(String.class)) {
|
||||
fileItems.add(new FileItem((String) fileNameObject));
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Expecting "+fileNameObject);
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Expecting " + fileNameObject);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,16 +3,14 @@ package org.kiwix.kiwixmobile.zim_manager.local_file_transfer;
|
||||
import android.os.AsyncTask;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.kiwix.kiwixmobile.BuildConfig;
|
||||
import org.kiwix.kiwixmobile.R;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
import java.util.ArrayList;
|
||||
import org.kiwix.kiwixmobile.BuildConfig;
|
||||
import org.kiwix.kiwixmobile.R;
|
||||
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.ERROR;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.SENDING;
|
||||
@ -51,7 +49,7 @@ class ReceiverDeviceAsyncTask extends AsyncTask<Void, Integer, Boolean> {
|
||||
boolean result = true;
|
||||
int fileItemIndex;
|
||||
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Expecting "+totalFileCount+" files");
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Expecting " + totalFileCount + " files");
|
||||
|
||||
for (int currentFile = 1; currentFile <= totalFileCount && !isCancelled(); currentFile++) {
|
||||
fileItemIndex = currentFile - 1;
|
||||
@ -75,7 +73,6 @@ class ReceiverDeviceAsyncTask extends AsyncTask<Void, Integer, Boolean> {
|
||||
|
||||
copyToOutputStream(client.getInputStream(), new FileOutputStream(clientNoteFileLocation));
|
||||
publishProgress(fileItemIndex, SENT);
|
||||
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, e.getMessage());
|
||||
result = false;
|
||||
@ -86,7 +83,6 @@ class ReceiverDeviceAsyncTask extends AsyncTask<Void, Integer, Boolean> {
|
||||
}
|
||||
|
||||
return (!isCancelled() && result);
|
||||
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, e.getMessage());
|
||||
return false; // Returned when an error was encountered during transfer
|
||||
@ -99,8 +95,9 @@ class ReceiverDeviceAsyncTask extends AsyncTask<Void, Integer, Boolean> {
|
||||
int fileStatus = values[1];
|
||||
wifiDirectManager.changeStatus(fileIndex, fileStatus);
|
||||
|
||||
if(fileStatus == ERROR) {
|
||||
wifiDirectManager.displayToast(R.string.error_transferring, incomingFileName, Toast.LENGTH_SHORT);
|
||||
if (fileStatus == ERROR) {
|
||||
wifiDirectManager.displayToast(R.string.error_transferring, incomingFileName,
|
||||
Toast.LENGTH_SHORT);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,16 +3,16 @@ package org.kiwix.kiwixmobile.zim_manager.local_file_transfer;
|
||||
import android.content.ContentResolver;
|
||||
import android.os.AsyncTask;
|
||||
import android.util.Log;
|
||||
|
||||
import org.kiwix.kiwixmobile.BuildConfig;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.Socket;
|
||||
import org.kiwix.kiwixmobile.BuildConfig;
|
||||
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.*;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.ERROR;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.SENDING;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.SENT;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectManager.FILE_TRANSFER_PORT;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectManager.copyToOutputStream;
|
||||
|
||||
@ -35,7 +35,8 @@ class SenderDeviceAsyncTask extends AsyncTask<FileItem, Integer, Boolean> {
|
||||
private WifiDirectManager wifiDirectManager;
|
||||
private ContentResolver contentResolver;
|
||||
|
||||
public SenderDeviceAsyncTask(WifiDirectManager wifiDirectManager, LocalFileTransferActivity localFileTransferActivity) {
|
||||
public SenderDeviceAsyncTask(WifiDirectManager wifiDirectManager,
|
||||
LocalFileTransferActivity localFileTransferActivity) {
|
||||
this.wifiDirectManager = wifiDirectManager;
|
||||
this.contentResolver = localFileTransferActivity.getContentResolver();
|
||||
}
|
||||
@ -50,7 +51,7 @@ class SenderDeviceAsyncTask extends AsyncTask<FileItem, Integer, Boolean> {
|
||||
boolean result = true;
|
||||
int fileItemIndex = -1;
|
||||
|
||||
for(FileItem fileItem : fileItems) { // Uri of file to be transferred
|
||||
for (FileItem fileItem : fileItems) { // Uri of file to be transferred
|
||||
fileItemIndex++;
|
||||
|
||||
try (Socket socket = new Socket(); // Represents the sender device
|
||||
@ -74,7 +75,6 @@ class SenderDeviceAsyncTask extends AsyncTask<FileItem, Integer, Boolean> {
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Sender: Data written");
|
||||
|
||||
publishProgress(fileItemIndex, SENT);
|
||||
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, e.getMessage());
|
||||
e.printStackTrace();
|
||||
|
@ -4,7 +4,6 @@ import android.app.Activity;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.IntentFilter;
|
||||
import android.net.NetworkInfo;
|
||||
import android.net.Uri;
|
||||
import android.net.wifi.WpsInfo;
|
||||
import android.net.wifi.p2p.WifiP2pConfig;
|
||||
@ -36,12 +35,13 @@ import static android.os.Looper.getMainLooper;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.FileStatus.ERROR;
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.LocalFileTransferActivity.showToast;
|
||||
|
||||
|
||||
/**
|
||||
* Manager for the Wifi-P2p API, used in the local file transfer module
|
||||
* */
|
||||
public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2pManager.PeerListListener, WifiP2pManager.ConnectionInfoListener,
|
||||
KiwixWifiP2pBroadcastReceiver.P2pEventListener {
|
||||
*/
|
||||
public class WifiDirectManager
|
||||
implements WifiP2pManager.ChannelListener, WifiP2pManager.PeerListListener,
|
||||
WifiP2pManager.ConnectionInfoListener,
|
||||
KiwixWifiP2pBroadcastReceiver.P2pEventListener {
|
||||
|
||||
private static final String TAG = "WifiDirectManager";
|
||||
public static int FILE_TRANSFER_PORT = 8008;
|
||||
@ -81,8 +81,9 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
|
||||
private boolean hasSenderStartedConnection = false;
|
||||
|
||||
@Inject
|
||||
public WifiDirectManager(@NonNull Activity activity, @NonNull SharedPreferenceUtil sharedPreferenceUtil,
|
||||
@NonNull AlertDialogShower alertDialogShower) {
|
||||
public WifiDirectManager(@NonNull Activity activity,
|
||||
@NonNull SharedPreferenceUtil sharedPreferenceUtil,
|
||||
@NonNull AlertDialogShower alertDialogShower) {
|
||||
this.activity = (LocalFileTransferActivity) activity;
|
||||
this.callbacks = (Callbacks) activity;
|
||||
this.sharedPreferenceUtil = sharedPreferenceUtil;
|
||||
@ -94,7 +95,7 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
|
||||
this.filesForTransfer = filesForTransfer;
|
||||
this.isFileSender = (filesForTransfer != null && filesForTransfer.size() > 0);
|
||||
|
||||
if(isFileSender) {
|
||||
if (isFileSender) {
|
||||
this.totalFilesForTransfer = filesForTransfer.size();
|
||||
}
|
||||
|
||||
@ -140,7 +141,7 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
|
||||
public void onWifiP2pStateChanged(boolean isEnabled) {
|
||||
this.isWifiP2pEnabled = isEnabled;
|
||||
|
||||
if(!isWifiP2pEnabled) {
|
||||
if (!isWifiP2pEnabled) {
|
||||
displayToast(R.string.discovery_needs_wifi, Toast.LENGTH_SHORT);
|
||||
callbacks.onConnectionToPeersLost();
|
||||
}
|
||||
@ -226,19 +227,19 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
|
||||
this.senderSelectedPeerDevice = senderSelectedPeerDevice;
|
||||
|
||||
alertDialogShower.show(
|
||||
new KiwixDialog.FileTransferConfirmation(senderSelectedPeerDevice.deviceName),
|
||||
new Function0<Unit>() {
|
||||
@Override public Unit invoke() {
|
||||
hasSenderStartedConnection = true;
|
||||
connect();
|
||||
displayToast(R.string.performing_handshake, Toast.LENGTH_LONG);
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
});
|
||||
new KiwixDialog.FileTransferConfirmation(senderSelectedPeerDevice.deviceName),
|
||||
new Function0<Unit>() {
|
||||
@Override public Unit invoke() {
|
||||
hasSenderStartedConnection = true;
|
||||
connect();
|
||||
displayToast(R.string.performing_handshake, Toast.LENGTH_LONG);
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void connect() {
|
||||
if(senderSelectedPeerDevice == null) {
|
||||
if (senderSelectedPeerDevice == null) {
|
||||
Log.d(TAG, "No device set as selected");
|
||||
}
|
||||
|
||||
@ -301,9 +302,8 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
|
||||
return fileReceiverDeviceAddress;
|
||||
}
|
||||
|
||||
public static void copyToOutputStream(@NonNull InputStream inputStream, @NonNull
|
||||
OutputStream outputStream)
|
||||
throws IOException {
|
||||
public static void copyToOutputStream(@NonNull InputStream inputStream,
|
||||
@NonNull OutputStream outputStream) throws IOException {
|
||||
byte[] bufferForBytes = new byte[1024];
|
||||
int bytesRead;
|
||||
|
||||
@ -336,7 +336,7 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
|
||||
Log.d(LocalFileTransferActivity.TAG, "Starting file transfer");
|
||||
|
||||
fileReceiverDeviceAddress =
|
||||
(isGroupOwner()) ? selectedPeerDeviceInetAddress : getGroupOwnerAddress();
|
||||
(isGroupOwner()) ? selectedPeerDeviceInetAddress : getGroupOwnerAddress();
|
||||
|
||||
displayToast(R.string.preparing_files, Toast.LENGTH_LONG);
|
||||
ArrayList<Uri> fileUriArrayList = new ArrayList<>();
|
||||
@ -345,7 +345,6 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
|
||||
}
|
||||
senderDeviceAsyncTask = new SenderDeviceAsyncTask(this, activity);
|
||||
senderDeviceAsyncTask.execute(filesForTransfer.toArray(new FileItem[0]));
|
||||
|
||||
} else {
|
||||
callbacks.onFilesForTransferAvailable(filesForTransfer);
|
||||
|
||||
@ -359,8 +358,9 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
|
||||
filesForTransfer.get(itemIndex).setFileStatus(status);
|
||||
callbacks.onFileStatusChanged(itemIndex);
|
||||
|
||||
if(status == ERROR) {
|
||||
displayToast(R.string.error_transferring, filesForTransfer.get(itemIndex).getFileName(), Toast.LENGTH_SHORT);
|
||||
if (status == ERROR) {
|
||||
displayToast(R.string.error_transferring, filesForTransfer.get(itemIndex).getFileName(),
|
||||
Toast.LENGTH_SHORT);
|
||||
}
|
||||
}
|
||||
|
||||
@ -402,12 +402,11 @@ public class WifiDirectManager implements WifiP2pManager.ChannelListener, WifiP2
|
||||
}
|
||||
|
||||
void closeChannel() {
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||
channel.close();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public @NonNull String getErrorMessage(int reason) {
|
||||
switch (reason) {
|
||||
case WifiP2pManager.ERROR:
|
||||
|
@ -13,9 +13,8 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import org.kiwix.kiwixmobile.R;
|
||||
|
||||
import java.util.List;
|
||||
import org.kiwix.kiwixmobile.R;
|
||||
|
||||
import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.WifiDirectManager.getDeviceStatus;
|
||||
|
||||
@ -32,7 +31,7 @@ public class WifiPeerListAdapter extends ArrayAdapter<WifiP2pDevice> {
|
||||
private List<WifiP2pDevice> listItems;
|
||||
|
||||
public WifiPeerListAdapter(@NonNull Context context, int resource,
|
||||
@NonNull List<WifiP2pDevice> objects) {
|
||||
@NonNull List<WifiP2pDevice> objects) {
|
||||
super(context, resource, objects);
|
||||
this.context = context;
|
||||
this.listItems = objects;
|
||||
|
Loading…
x
Reference in New Issue
Block a user