import android.content.Intent; | import android.content.Intent; | ||||
import android.os.Binder; | import android.os.Binder; | ||||
import android.os.IBinder; | import android.os.IBinder; | ||||
import android.util.Log; | |||||
import android.widget.ImageView; | import android.widget.ImageView; | ||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.camera.core.ExperimentalGetImage; | import androidx.camera.core.ExperimentalGetImage; | ||||
import androidx.lifecycle.LifecycleService; | import androidx.lifecycle.LifecycleService; | ||||
import com.example.ueberwachungssystem.WifiCommunication; | |||||
import java.io.File; | import java.io.File; | ||||
@ExperimentalGetImage | @ExperimentalGetImage | ||||
public Accelerometer motionDetector = null; | public Accelerometer motionDetector = null; | ||||
public MicrophoneDetector audioDetector = null; | public MicrophoneDetector audioDetector = null; | ||||
public WifiCommunication wifiCommunication; | |||||
String wifiData; | |||||
StringBuffer stringBufferWifi = new StringBuffer(); | |||||
String typOfAlarm; | |||||
@Override | @Override | ||||
public int onStartCommand(Intent intent, int flags, int startId) { | public int onStartCommand(Intent intent, int flags, int startId) { | ||||
if (isServiceRunning) | if (isServiceRunning) | ||||
return START_NOT_STICKY; | return START_NOT_STICKY; | ||||
/** Wifi Instanz **/ | |||||
wifiCommunication = new WifiCommunication(1234); | |||||
wifiCommunication.sendTrue("TEst"); | |||||
wifiCommunication.setOnConnectionListener(new WifiCommunication.OnConnectionListener() { | |||||
@Override | |||||
public void onConnection(String data) { | |||||
Log.d("Listener", data); | |||||
wifiData = data; | |||||
stringToStringbuffer(data); | |||||
Log.d("buffer",stringBufferWifi.toString()); | |||||
passToServiceListener(stringBufferWifi); | |||||
checkState(data); | |||||
checkTyp(data); | |||||
} | |||||
}); | |||||
videoDetector.setOnDetectionListener(new Detector.OnDetectionListener() { | videoDetector.setOnDetectionListener(new Detector.OnDetectionListener() { | ||||
@Override | @Override | ||||
public void onDetection(@NonNull DetectionReport detectionReport) { | public void onDetection(@NonNull DetectionReport detectionReport) { | ||||
passToServiceListener(detectionReport); | |||||
//passToServiceListener(detectionReport); | |||||
wifiCommunication.sendTrue(detectionReport.toMessage()); | |||||
} | } | ||||
}); | }); | ||||
/** Motion Detection**/ | /** Motion Detection**/ | ||||
motionDetector.setOnDetectionListener(new Detector.OnDetectionListener() { | motionDetector.setOnDetectionListener(new Detector.OnDetectionListener() { | ||||
@Override | @Override | ||||
public void onDetection(@NonNull DetectionReport detectionReport) { | public void onDetection(@NonNull DetectionReport detectionReport) { | ||||
passToServiceListener(detectionReport); | |||||
//passToServiceListener(detectionReport); | |||||
wifiCommunication.sendTrue(detectionReport.toMessage()); | |||||
} | } | ||||
}); | }); | ||||
/** Audio Detection **/ | /** Audio Detection **/ | ||||
audioDetector.setOnDetectionListener(new Detector.OnDetectionListener() { | audioDetector.setOnDetectionListener(new Detector.OnDetectionListener() { | ||||
@Override | @Override | ||||
public void onDetection(@NonNull DetectionReport detectionReport) { | public void onDetection(@NonNull DetectionReport detectionReport) { | ||||
passToServiceListener(detectionReport); | |||||
//passToServiceListener(detectionReport); | |||||
wifiCommunication.sendTrue(detectionReport.toMessage()); | |||||
} | } | ||||
}); | }); | ||||
/** Audio Recorder**/ | /** Audio Recorder**/ | ||||
/** Pass Detection Report to Service Detection Listener and trigger it */ | /** Pass Detection Report to Service Detection Listener and trigger it */ | ||||
public void passToServiceListener(DetectionReport detectionReport) { | |||||
public void passToServiceListener(StringBuffer stringBuffer) { | |||||
if (listener != null) { | if (listener != null) { | ||||
listener.onDetection(detectionReport); | |||||
listener.onDetection(stringBuffer); | |||||
} | } | ||||
} | } | ||||
/** On Detection Listener - runs when violation is reported */ | /** On Detection Listener - runs when violation is reported */ | ||||
public interface OnDetectionListener { | public interface OnDetectionListener { | ||||
void onDetection(@NonNull DetectionReport detectionReport); | |||||
void onDetection(@NonNull StringBuffer stringBuffer); | |||||
} | } | ||||
public void setOnDetectionListener(@NonNull DetectorService.OnDetectionListener listener) { | public void setOnDetectionListener(@NonNull DetectorService.OnDetectionListener listener) { | ||||
this.listener = listener; | this.listener = listener; | ||||
} | } | ||||
public void stringToStringbuffer(String string){ | |||||
if(string != null) { | |||||
stringBufferWifi.insert(0,string + "\n"); | |||||
} | |||||
} | |||||
public String[] splitString(String string){ | |||||
String[] splitrxString = string.split(","); | |||||
return splitrxString; //splitrxString[0] = "1",splitrxString[1] = "HH:MM:SS", splitrxString[0].equals("1") | |||||
} | |||||
public boolean checkState(String string){ | |||||
Log.d("state", String.valueOf(splitString(string)[4].equals("An"))); | |||||
return splitString(string)[4].equals("An"); | |||||
} | |||||
public String checkTyp(String string){ | |||||
if (splitString(string)[5] != null) { | |||||
typOfAlarm = splitString(string)[5]; | |||||
Log.d("Type", typOfAlarm); | |||||
} | |||||
return typOfAlarm; | |||||
} | |||||
} | } |
import android.os.Bundle; | import android.os.Bundle; | ||||
import android.os.IBinder; | import android.os.IBinder; | ||||
import android.util.Log; | import android.util.Log; | ||||
import android.view.Menu; | |||||
import android.view.MenuItem; | |||||
import android.view.View; | import android.view.View; | ||||
import android.widget.ImageView; | import android.widget.ImageView; | ||||
import android.widget.Toast; | |||||
import android.widget.ToggleButton; | import android.widget.ToggleButton; | ||||
import com.example.ueberwachungssystem.Detection.Accelerometer; | import com.example.ueberwachungssystem.Detection.Accelerometer; | ||||
ImageView inputImageView; | ImageView inputImageView; | ||||
ImageView outputImageView; | ImageView outputImageView; | ||||
ToggleButton toggleButton; | ToggleButton toggleButton; | ||||
int num=0; | |||||
@Override | @Override | ||||
protected void onCreate(Bundle savedInstanceState) { | protected void onCreate(Bundle savedInstanceState) { | ||||
super.onCreate(savedInstanceState); | super.onCreate(savedInstanceState); | ||||
setContentView(R.layout.activity_main); | setContentView(R.layout.activity_main); | ||||
inputImageView = findViewById(R.id.inputImageView); | inputImageView = findViewById(R.id.inputImageView); | ||||
outputImageView = findViewById(R.id.outputImageView); | outputImageView = findViewById(R.id.outputImageView); | ||||
toggleButton = findViewById(R.id.toggleButton); | toggleButton = findViewById(R.id.toggleButton); | ||||
} | |||||
@Override | |||||
protected void onResume() { | |||||
super.onResume(); | |||||
PermissionHandler permissionHandler = new PermissionHandler(this); | PermissionHandler permissionHandler = new PermissionHandler(this); | ||||
permissionHandler.getPermissions(); | |||||
//permissionHandler.getPermissions(); | |||||
if (permissionHandler.hasPermissions()) { | if (permissionHandler.hasPermissions()) { | ||||
Intent serviceIntent = new Intent(this, DetectorService.class); | Intent serviceIntent = new Intent(this, DetectorService.class); | ||||
bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE); | bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE); | ||||
startService(serviceIntent); | startService(serviceIntent); | ||||
toggleButton.setOnClickListener(new View.OnClickListener() { | toggleButton.setOnClickListener(new View.OnClickListener() { | ||||
@Override | @Override | ||||
public void onClick(View v) { | public void onClick(View v) { | ||||
{ | { | ||||
if (detectorService != null){ | if (detectorService != null){ | ||||
detectorService.videoDetector.debugProcessing(inputImageView, outputImageView); | |||||
detectorService.videoDetector.startDetection(); | detectorService.videoDetector.startDetection(); | ||||
detectorService.audioDetector.startDetection(); | detectorService.audioDetector.startDetection(); | ||||
} | } | ||||
} | } | ||||
}); | }); | ||||
}else{ | |||||
Toast.makeText(this,"Bitte Rechte geben", Toast.LENGTH_SHORT).show(); | |||||
} | |||||
} | |||||
public boolean onCreateOptionsMenu(Menu menu) { | |||||
getMenuInflater().inflate(R.menu.options_menu, menu); | |||||
return true; | |||||
} | |||||
public boolean onOptionsItemSelected(MenuItem item) { | |||||
Toast.makeText(this, "Selected Item: " + item.getTitle(), Toast.LENGTH_SHORT).show(); | |||||
PopUpClass popUpClass; | |||||
switch (item.getItemId()) { | |||||
case R.id.Rechteverwaltung: | |||||
popUpClass = new PopUpClass(MainActivity.this); | |||||
popUpClass.showPopupWindow(inputImageView); | |||||
popUpClass.RechtePrüfen(); | |||||
return true; | |||||
case R.id.Sensoren: | |||||
popUpClass = new PopUpClass(MainActivity.this); | |||||
popUpClass.showPopupWindow(inputImageView); | |||||
popUpClass.Sensoren(); | |||||
return true; | |||||
case R.id.Impressum: | |||||
popUpClass = new PopUpClass(MainActivity.this); | |||||
popUpClass.showPopupWindow(inputImageView); | |||||
popUpClass.Impressum(); | |||||
return true; | |||||
case R.id.Detection: | |||||
popUpClass = new PopUpClass(MainActivity.this); | |||||
popUpClass.showPopupWindow(inputImageView); | |||||
popUpClass.DetectionTotal(num); | |||||
return true; | |||||
default: | |||||
return super.onOptionsItemSelected(item); | |||||
} | } | ||||
} | } | ||||
public void onServiceConnected(ComponentName name, IBinder service) { | public void onServiceConnected(ComponentName name, IBinder service) { | ||||
DetectorService.ServiceBinder binder = (DetectorService.ServiceBinder) service; | DetectorService.ServiceBinder binder = (DetectorService.ServiceBinder) service; | ||||
detectorService = binder.getBoundService(); | detectorService = binder.getBoundService(); | ||||
detectorService.videoDetector.debugProcessing(null, outputImageView); //inputImageView | |||||
detectorService.setOnDetectionListener(new DetectorService.OnDetectionListener() { | detectorService.setOnDetectionListener(new DetectorService.OnDetectionListener() { | ||||
@Override | @Override | ||||
public void onDetection(@NonNull DetectionReport detectionReport) { | |||||
Log.d("onDetection", detectionReport.toMessage()); | |||||
public void onDetection(@NonNull StringBuffer stringBuffer) { | |||||
Log.d("onDetection", stringBuffer.toString()); //Für oli hier Textview einbauen | |||||
num++; | |||||
} | } | ||||
}); | }); | ||||
} | } | ||||
@Override | @Override | ||||
public void onServiceDisconnected(ComponentName name) {} | |||||
public void onServiceDisconnected(ComponentName name) { | |||||
} | |||||
}; | }; | ||||
} | } |
handler.post(new Runnable() { | handler.post(new Runnable() { | ||||
@Override | @Override | ||||
public void run() { | public void run() { | ||||
Toast.makeText(mainActivity.getApplicationContext(),"Es werden Rechte benötigt", Toast.LENGTH_LONG).show(); | |||||
Toast.makeText(mainActivity.getApplicationContext(),"Es werden Rechte benötigt", Toast.LENGTH_SHORT).show(); | |||||
} | } | ||||
}); | }); | ||||
} | } |
public void Impressum(){ | public void Impressum(){ | ||||
PopUpText.setText("Die Ueberwachungsapp wurde im Rahmen eines Praktikums der TH-Nürnberg programmiert"); | PopUpText.setText("Die Ueberwachungsapp wurde im Rahmen eines Praktikums der TH-Nürnberg programmiert"); | ||||
} | } | ||||
public void DetectionTotal(int num) { | |||||
PopUpText.setText("Total Detektions:" +num); | |||||
} | |||||
} | } |
package com.example.ueberwachungssystem; | package com.example.ueberwachungssystem; | ||||
import android.annotation.SuppressLint; | import android.annotation.SuppressLint; | ||||
import android.util.Log; | |||||
import android.widget.Toast; | import android.widget.Toast; | ||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
private final DatagramSocket socket; | private final DatagramSocket socket; | ||||
volatile private boolean running; | volatile private boolean running; | ||||
private boolean Gruppe =true; | |||||
private boolean showMessage = true; | |||||
StringBuffer rxStringBuffer = new StringBuffer(); | |||||
private OnConnectionListener listener; | private OnConnectionListener listener; | ||||
@SuppressLint("SetTextI18n") | @SuppressLint("SetTextI18n") | ||||
public WifiCommunication(int port) { | public WifiCommunication(int port) { | ||||
} | } | ||||
public interface OnConnectionListener { | public interface OnConnectionListener { | ||||
void onConnection(StringBuffer data); | |||||
void onConnection(String data); | |||||
} | } | ||||
public void setOnConnectionListener(@NonNull OnConnectionListener listener) { | public void setOnConnectionListener(@NonNull OnConnectionListener listener) { | ||||
this.listener = listener; | this.listener = listener; | ||||
} | } | ||||
public void sendWifiData(StringBuffer wifiMessage) { | |||||
public void sendWifiData(String wifiMessage) { | |||||
if (listener != null) { | if (listener != null) { | ||||
listener.onConnection(wifiMessage); | listener.onConnection(wifiMessage); | ||||
} | } | ||||
} | } | ||||
private class ReceiveThread extends Thread { | private class ReceiveThread extends Thread { | ||||
private StringBuffer rxStringBuffer = new StringBuffer(); | |||||
private String rxString=""; | private String rxString=""; | ||||
private String previousRxString = ""; | private String previousRxString = ""; | ||||
socket.receive(rxPacket); | socket.receive(rxPacket); | ||||
rxString = new String(receiveData, 0, rxPacket.getLength()); | rxString = new String(receiveData, 0, rxPacket.getLength()); | ||||
String[] splitrxString = rxString.split(","); | String[] splitrxString = rxString.split(","); | ||||
if(!previousRxString.equals(rxString) && splitrxString[0].equals("1") && splitrxString.length==7) { | |||||
rxStringBuffer.append(rxString).append("\n"); | |||||
sendWifiData(rxStringBuffer); | |||||
//mainActivity.runOnUiThread(() -> mainActivity.tvMessages.setText(rxStringBuffer)); | |||||
previousRxString = rxString; | |||||
String[] splitrxStringBuffer = splitBufferIntoStrings(rxStringBuffer); | |||||
for(String elem: splitrxStringBuffer){ | |||||
if(elem.equals(rxString)){ | |||||
showMessage = false; | |||||
}else{ | |||||
showMessage = true; | |||||
} | |||||
} | |||||
if(Gruppe){ | |||||
if(!previousRxString.equals(rxString) && splitrxString[0].equals("1") && splitrxString.length==7 && showMessage) { | |||||
rxStringBuffer.append(rxString).append("\n"); | |||||
Log.d("empfangen", rxString); | |||||
sendWifiData(rxString); | |||||
//mainActivity.runOnUiThread(() -> mainActivity.tvMessages.setText(rxStringBuffer)); | |||||
previousRxString = rxString; | |||||
} | |||||
}else{ | |||||
if(!previousRxString.equals(rxString) && splitrxString[0].equals("1") && splitrxString.length==7 && showMessage) { | |||||
rxStringBuffer.append(rxString).append("\n"); | |||||
Log.d("empfangen", rxString); | |||||
sendWifiData(rxString); | |||||
//mainActivity.runOnUiThread(() -> mainActivity.tvMessages.setText(rxStringBuffer)); | |||||
previousRxString = rxString; | |||||
} | |||||
} | } | ||||
} while (running); | } while (running); | ||||
} | } | ||||
if(send) | if(send) | ||||
{ | { | ||||
send = false; | send = false; | ||||
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); | |||||
/*SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); | |||||
Date curDate = new Date(System.currentTimeMillis()); | Date curDate = new Date(System.currentTimeMillis()); | ||||
String str = formatter.format(curDate); | |||||
String str = formatter.format(curDate);*/ | |||||
byte[] send_Data = new byte[512]; | byte[] send_Data = new byte[512]; | ||||
String txString = ("1," +str+ ",Gruppe2," + getLocalIpAddress() + ",An,Video," +messageToSend); | |||||
String txString = (messageToSend); //"1," +str+ ",Gruppe2," + getLocalIpAddress() + ",An,Video," | |||||
Log.d("send", txString); | |||||
send_Data = txString.getBytes(); | send_Data = txString.getBytes(); | ||||
DatagramPacket txPacket = new DatagramPacket(send_Data, txString.length(), address, port); | DatagramPacket txPacket = new DatagramPacket(send_Data, txString.length(), address, port); | ||||
for(int i = 0; i < 300; i++) { | |||||
for(int i = 0; i < 500; i++) { | |||||
socket.send(txPacket); | socket.send(txPacket); | ||||
} | } | ||||
} | } | ||||
running = false; | running = false; | ||||
socket.close(); | socket.close(); | ||||
} | } | ||||
public String[] splitBufferIntoStrings(StringBuffer string){ | |||||
String[] splitrxString2 = string.toString().split("\n"); | |||||
return splitrxString2; | |||||
} | |||||
} | } |
android:title="Rechteverwaltung" /> | android:title="Rechteverwaltung" /> | ||||
<item android:id="@+id/Sensoren" | <item android:id="@+id/Sensoren" | ||||
android:title="Sensoren" /> | android:title="Sensoren" /> | ||||
<item android:id="@+id/Detection" | |||||
android:title="Detektionen" /> | |||||
<item android:id="@+id/Impressum" | <item android:id="@+id/Impressum" | ||||
android:title="Impressum" /> | android:title="Impressum" /> | ||||
</menu> | </menu> |