Skip to content

Instantly share code, notes, and snippets.

@YaphetS1
Created April 10, 2018 17:23
Show Gist options
  • Save YaphetS1/e859c198a6359e95fabf660e3980618e to your computer and use it in GitHub Desktop.
Save YaphetS1/e859c198a6359e95fabf660e3980618e to your computer and use it in GitHub Desktop.
public class TransferData extends AsyncTask<Void, String, Void> {
private Context context;
private FilesSendAdapter sendFilesAdapter;
private ArrayList<Uri> uris;
private ArrayList<String> fileNames;
private InetAddress serverAddress;
private WifiP2pManager manager;
private WifiP2pManager.Channel channel;
private ArrayList<Long> filesLength;
private boolean needToUpdateIndex = false;
public TransferData(Context context,
ArrayList<Uri> uris,
ArrayList<Long> filesLength,
ArrayList<String> fileNames,
FilesSendAdapter referenceSendFilesAdapter,
InetAddress serverAddress,
final WifiP2pManager manager,
final WifiP2pManager.Channel channel) {
this.context = context;
this.channel = channel;
this.manager = manager;
this.sendFilesAdapter = referenceSendFilesAdapter;
this.uris = uris;
this.fileNames = fileNames;
this.filesLength = filesLength;
this.serverAddress = serverAddress;
Log.d(" DEBUG:::: ", serverAddress.getHostAddress());
}
private void sendData(Context context, ArrayList<Uri> uris) {
int len = 0;
byte buf[] = new byte[1024];
Log.d("Data Transfer", "Transfer Starter");
Socket socket = new Socket();
try {
socket.bind(null);
Log.d("Client Address", socket.getLocalSocketAddress().toString());
socket.connect(new InetSocketAddress(serverAddress, 8888));
Log.d("Client", "Client Connected 8888");
OutputStream outputStream = socket.getOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
ContentResolver cr = context.getContentResolver();
objectOutputStream.writeInt(uris.size());
objectOutputStream.writeObject(fileNames);
objectOutputStream.flush();
objectOutputStream.writeObject(filesLength);
objectOutputStream.flush();
for (int i = 0; i < uris.size(); i++) {
InputStream inputStream = cr.openInputStream(uris.get(i));
while ((len = inputStream.read(buf)) != -1) {
objectOutputStream.write(buf, 0, len);
}
inputStream.close();
publishProgress(fileNames.get(i));
Log.d("TRANSFER", "Writing Data Final -" + len);
}
objectOutputStream.close();
socket.close();
} catch (Exception e) {
Log.d("Data Transfer", e.toString());
e.printStackTrace();
} finally {
if (socket.isConnected()) {
try {
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
@Override
protected Void doInBackground(Void... params) {
sendData(context, uris);
return null;
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
for (int i = 0; i < this.sendFilesAdapter.filesViewHolders.size(); i++) {
if (this.sendFilesAdapter.filesViewHolders.get(i).fileModel.getFileName().equals(values[0])) {
this.sendFilesAdapter.filesViewHolders
.get(i).stateFile.setImageResource(R.drawable.d_icon_done);
}
}
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
Log.d("Sender", "Finished!");
}
@Override
protected void onCancelled() {
super.onCancelled();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment