From 6ec0b175e4a25a28458dc60ec48af92102b976b9 Mon Sep 17 00:00:00 2001 From: Miguel Siebenhaar Date: Thu, 15 Jun 2023 16:56:21 +0200 Subject: [PATCH] merge Kommunikation Version 1.2 UDP Socket --- app/src/main/AndroidManifest.xml | 4 + .../ueberwachungssystem/MainActivity.java | 21 ++- .../WifiCommunication.java | 131 ++++++++++++++++++ 3 files changed, 152 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/example/ueberwachungssystem/WifiCommunication.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 36b1460..1e65373 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,6 +5,10 @@ + + + + mainActivity.tvMessages.setText("Communication running")); + } + private class ReceiveThread extends Thread { + private StringBuffer rxStringBuffer = new StringBuffer(); + private String rxString=""; + private String previousRxString = ""; + + @Override + public void run() { + try { + do { + byte[] receiveData = new byte[512]; + InetAddress fromAdress; + int fromPort; + DatagramPacket rxPacket = new DatagramPacket(receiveData, receiveData.length); + socket.receive(rxPacket); + fromAdress = rxPacket.getAddress(); + fromPort = rxPacket.getPort(); + rxString = new String(rxPacket.getData()); + if(!previousRxString.equals(rxString)) { + rxStringBuffer.append(rxString).append("\n"); + mainActivity.runOnUiThread(() -> mainActivity.tvMessages.setText(rxStringBuffer)); + previousRxString = rxString; + } + + + } while (running); + } + catch (IOException e) { + e.printStackTrace(); + } + } + } + private class SendThread extends Thread { + private int tmpCnt = 0; + @Override + public void run() { + try { + do { + if(send) + { + send = false; + SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); + Date curDate = new Date(System.currentTimeMillis()); + String str = formatter.format(curDate); + byte[] send_Data = new byte[512]; + String txString = (str+ ",Gruppe2," + getLocalIpAddress() + ",An,Video," +messageToSend); + send_Data = txString.getBytes(); + + DatagramPacket txPacket = new DatagramPacket(send_Data, txString.length(), address, port); + + for(int i = 0; i < 500; i++) { + socket.send(txPacket); + /*try{ + sleep(10); + }catch (InterruptedException e){ + e.printStackTrace(); + }*/ + } + } + } while (running); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + public static String getLocalIpAddress() { + try { + for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { + NetworkInterface networkInterface = (NetworkInterface) ((Enumeration) en).nextElement(); + for (Enumeration addresses = networkInterface.getInetAddresses(); addresses.hasMoreElements();) { + InetAddress inetAddress = addresses.nextElement(); + if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) { + return inetAddress.getHostAddress(); + } + } + } + } catch (SocketException ex) { + ex.printStackTrace(); + } + return null; + } + + public void sendTrue(String message){ + send = true; + messageToSend = message; + } + public void stopCommunication() { + running = false; + socket.close(); + } +}