package com.example.ueberwachungssystem.Detection; | package com.example.ueberwachungssystem.Detection; | ||||
import android.annotation.SuppressLint; | |||||
import android.util.Log; | import android.util.Log; | ||||
import com.example.ueberwachungssystem.WifiCommunication; | |||||
import java.text.SimpleDateFormat; | |||||
import java.util.Calendar; | import java.util.Calendar; | ||||
import java.util.Date; | |||||
/** Detection Report Class */ | /** Detection Report Class */ | ||||
public class DetectionReport { | public class DetectionReport { | ||||
public boolean detectionState; | public boolean detectionState; | ||||
public DetectionReport(boolean detectionState, String detectionType, float detectedAmplitude) { | public DetectionReport(boolean detectionState, String detectionType, float detectedAmplitude) { | ||||
this.timeStamp = String.valueOf(Calendar.getInstance().getTime()); | |||||
// New Date Format | |||||
@SuppressLint("SimpleDateFormat") SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); | |||||
Date curDate = new Date(System.currentTimeMillis()); | |||||
this.timeStamp = formatter.format(curDate); | |||||
//Old Date Format: this.timeStamp = String.valueOf(Calendar.getInstance().getTime()); | |||||
this.detectionType = detectionType; | this.detectionType = detectionType; | ||||
this.detectedValue = detectedAmplitude; | this.detectedValue = detectedAmplitude; | ||||
this.detectionState = detectionState; | this.detectionState = detectionState; | ||||
return String.join("\t", state, time, type, value); | return String.join("\t", state, time, type, value); | ||||
} | } | ||||
public String toMessage() { | |||||
String state; | |||||
if(detectionState) | |||||
state = "An"; | |||||
else | |||||
state = "Aus"; | |||||
return String.join(",", "1", timeStamp, "Gruppe2", WifiCommunication.getLocalIpAddress(), state, detectionType, String.valueOf(detectedValue)); | |||||
} | |||||
/** Debug Report */ | /** Debug Report */ | ||||
public void log(String tag) { | public void log(String tag) { | ||||
Log.d(tag, this.toString()); | Log.d(tag, this.toString()); |
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 android.widget.Toast; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
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 | ||||
private DetectorService.OnDetectionListener listener; | private DetectorService.OnDetectionListener listener; | ||||
private boolean isServiceRunning = false; | private boolean isServiceRunning = false; | ||||
VideoDetector videoDetector = null; | |||||
AudioRecorder audioRecorder = null; | |||||
/** Communication **/ | |||||
// Used Objects: | |||||
public VideoDetector videoDetector = null; | |||||
public AudioRecorder audioRecorder = null; | |||||
public Accelerometer motionDetector = null; | |||||
public MicrophoneDetector audioDetector = null; | |||||
WifiCommunication wifiCommunication; | |||||
StringBuffer dataFromWifi; | |||||
@Override | @Override | ||||
public int onStartCommand(Intent intent, int flags, int startId) { | public int onStartCommand(Intent intent, int flags, int startId) { | ||||
return START_NOT_STICKY; | return START_NOT_STICKY; | ||||
// Setup Service classes: | |||||
/** Video Detection/Recorder **/ | |||||
videoDetector = new VideoDetector(this); | videoDetector = new VideoDetector(this); | ||||
videoDetector.setOnDetectionListener(new Detector.OnDetectionListener() { | videoDetector.setOnDetectionListener(new Detector.OnDetectionListener() { | ||||
@Override | @Override | ||||
passToServiceListener(detectionReport); | passToServiceListener(detectionReport); | ||||
} | } | ||||
}); | }); | ||||
/** Motion Detection**/ | |||||
motionDetector = new Accelerometer(this); | |||||
motionDetector.getSensor(); | |||||
motionDetector.setOnDetectionListener(new Detector.OnDetectionListener() { | |||||
@Override | |||||
public void onDetection(@NonNull DetectionReport detectionReport) { | |||||
passToServiceListener(detectionReport); | |||||
} | |||||
}); | |||||
/** Audio Detection **/ | |||||
audioDetector = new MicrophoneDetector(this); | |||||
audioDetector.setOnDetectionListener(new Detector.OnDetectionListener() { | |||||
@Override | |||||
public void onDetection(@NonNull DetectionReport detectionReport) { | |||||
passToServiceListener(detectionReport); | |||||
} | |||||
}); | |||||
/** Audio Recorder**/ | |||||
audioRecorder = new AudioRecorder(this); | audioRecorder = new AudioRecorder(this); | ||||
isServiceRunning = true; | |||||
wifiCommunication = new WifiCommunication (1234); | |||||
wifiCommunication.setOnConnectionListener(new WifiCommunication.OnConnectionListener() { | |||||
@Override | |||||
public void onConnection(StringBuffer data) { | |||||
dataFromWifi = data; | |||||
} | |||||
}); | |||||
isServiceRunning = true; | |||||
return super.onStartCommand(intent, flags, startId); | return super.onStartCommand(intent, flags, startId); | ||||
} | } | ||||
@Override | @Override | ||||
public void onDestroy() { | public void onDestroy() { | ||||
super.onDestroy(); | super.onDestroy(); | ||||
} | } | ||||
/** Video Detection */ | |||||
public void startVideoDetection() { | |||||
if(videoDetector != null) | |||||
videoDetector.startDetection(); | |||||
} | |||||
public void stopVideoDetection() { | |||||
if(videoDetector != null) | |||||
videoDetector.stopDetection(); | |||||
} | |||||
public boolean isVideoDetectionRunning() { | |||||
if(videoDetector != null) | |||||
return videoDetector.isDetecting(); | |||||
return false; | |||||
} | |||||
public void debugVideoProcessing(ImageView input, ImageView output) { | |||||
if(videoDetector != null) | |||||
videoDetector.debugProcessing(input, output); | |||||
} | |||||
/** Audio Detection */ | |||||
public void startAudioDetection() { | |||||
} | |||||
public void stopAudioDetection() { | |||||
} | |||||
/** Motion Detection */ | |||||
public void startMotionDetection() { | |||||
} | |||||
public void stopMotionDetection() { | |||||
} | |||||
/** Video Recording */ | |||||
public void startVideoRecording() { | |||||
if(videoDetector != null) | |||||
videoDetector.startRecording(); | |||||
} | |||||
public void stopVideoRecording() { | |||||
if(videoDetector != null) | |||||
videoDetector.stopRecording(); | |||||
} | |||||
public boolean isVideoRecordingRunning() { | |||||
if(videoDetector != null) | |||||
return videoDetector.isRecording(); | |||||
return false; | |||||
} | |||||
public void setVideoRecordingDir(File outputDir) { | |||||
if (videoDetector != null) | |||||
videoDetector.setOutputDir(outputDir); | |||||
} | |||||
/** Audio Recording */ | |||||
public void startAudioRecording() { | |||||
if(audioRecorder != null) | |||||
audioRecorder.startRecording(); | |||||
} | |||||
public void stopAudioRecording() { | |||||
if(audioRecorder != null) | |||||
audioRecorder.stopRecording(); | |||||
} | |||||
public boolean isAudioRecordingRunning() { | |||||
if(videoDetector != null) | |||||
return audioRecorder.isRecording(); | |||||
return false; | |||||
} | |||||
public void setAudioRecordingDir(File outputDir) { | |||||
if (audioRecorder != null) | |||||
audioRecorder.setOutputDir(outputDir); | |||||
} | |||||
/** 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(DetectionReport detectionReport) { | ||||
if (listener != null) { | if (listener != null) { | ||||
listener.onDetection(detectionReport); | listener.onDetection(detectionReport); |
/** | /** | ||||
* Video Detector inherits some methods from abstract Detector class (more info there) | * Video Detector inherits some methods from abstract Detector class (more info there) | ||||
* USE FROM MAIN ACTIVITY: | |||||
* VideoDetector vd = new VideoDetector(this); | |||||
* */ | * */ | ||||
public void stopDetection() { | public void stopDetection() { | ||||
if (!isDetecting || imageAnalysis == null) | if (!isDetecting || imageAnalysis == null) | ||||
return; | return; | ||||
cameraProvider.unbind(imageAnalysis); | |||||
if (!isRecording) | |||||
cameraProvider.unbindAll(); | |||||
else | |||||
cameraProvider.unbind(imageAnalysis); | |||||
isDetecting = false; | isDetecting = false; | ||||
allowReportViolation = false; | allowReportViolation = false; | ||||
} | } | ||||
return; | return; | ||||
videoCapture.stopRecording(); | videoCapture.stopRecording(); | ||||
cameraProvider.unbind(videoCapture); | |||||
if (!isDetecting()) | |||||
cameraProvider.unbindAll(); | |||||
else | |||||
cameraProvider.unbind(videoCapture); | |||||
isRecording = false; | isRecording = false; | ||||
} | } | ||||
int n = OpenCVHelper.countNonZeroPixels(processed); | int n = OpenCVHelper.countNonZeroPixels(processed); | ||||
int pixelCount = image.getWidth() * image.getHeight(); | int pixelCount = image.getWidth() * image.getHeight(); | ||||
float percentChanged = (float) n / pixelCount; | |||||
float percentChanged = ((float) n / pixelCount) * 100; | |||||
// Violation Condition | // Violation Condition | ||||
if (percentChanged * 100 > ALARM_THRESHOLD) { | |||||
if (percentChanged> ALARM_THRESHOLD) { | |||||
if (allowReportViolation) | if (allowReportViolation) | ||||
reportViolation("Video", percentChanged); | reportViolation("Video", percentChanged); | ||||
} | } | ||||
/** Start delay until Violation Report is allowed */ | /** Start delay until Violation Report is allowed */ | ||||
private void startViolationTimer(float setupTime) { | private void startViolationTimer(float setupTime) { | ||||
new CountDownTimer((long) (START_DELAY), 100) { | |||||
new CountDownTimer((long) (setupTime), 100) { | |||||
@Override | @Override | ||||
public void onTick(long millisUntilFinished) { | public void onTick(long millisUntilFinished) { | ||||
} | } |
package com.example.ueberwachungssystem; | package com.example.ueberwachungssystem; | ||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.camera.core.ExperimentalGetImage; | |||||
import androidx.fragment.app.Fragment; | |||||
import androidx.fragment.app.FragmentTransaction; | |||||
import androidx.appcompat.app.AppCompatActivity; | import androidx.appcompat.app.AppCompatActivity; | ||||
import androidx.camera.core.ExperimentalGetImage; | |||||
import androidx.camera.view.PreviewView; | |||||
import android.content.ComponentName; | |||||
import android.content.Context; | |||||
import android.content.Intent; | |||||
import android.content.ServiceConnection; | |||||
import android.os.Bundle; | import android.os.Bundle; | ||||
import android.os.IBinder; | |||||
import android.util.Log; | import android.util.Log; | ||||
import android.view.LayoutInflater; | |||||
import android.view.View; | import android.view.View; | ||||
import android.view.ViewGroup; | |||||
import android.widget.Button; | |||||
import android.widget.EditText; | |||||
import android.widget.ScrollView; | |||||
import android.widget.TextView; | |||||
import android.widget.ImageView; | |||||
import android.widget.ToggleButton; | import android.widget.ToggleButton; | ||||
import com.example.ueberwachungssystem.Detection.Accelerometer; | |||||
import com.example.ueberwachungssystem.Detection.AudioRecorder; | |||||
import com.example.ueberwachungssystem.Detection.DetectionReport; | import com.example.ueberwachungssystem.Detection.DetectionReport; | ||||
import com.example.ueberwachungssystem.Detection.Detector; | import com.example.ueberwachungssystem.Detection.Detector; | ||||
import com.example.ueberwachungssystem.Detection.DetectorService; | |||||
import com.example.ueberwachungssystem.Detection.MicrophoneDetector; | |||||
import com.example.ueberwachungssystem.Detection.VideoDetector; | import com.example.ueberwachungssystem.Detection.VideoDetector; | ||||
import com.example.ueberwachungssystem.Fragments.Fragment1; | |||||
import com.example.ueberwachungssystem.Fragments.Fragment2; | |||||
import com.example.ueberwachungssystem.Fragments.Fragment3; | |||||
import org.w3c.dom.Text; | |||||
@ExperimentalGetImage | @ExperimentalGetImage | ||||
public class MainActivity extends AppCompatActivity implements View.OnClickListener { | |||||
private Fragment aktuellesFragment; | |||||
private Fragment1 fragment1; | |||||
private Fragment2 fragment2; | |||||
private Fragment3 fragment3; | |||||
WifiCommunication communication; | |||||
private TextView alarm; | |||||
private String text = "Das ist ein Alarm des Sensors"; | |||||
//Buttons | |||||
private ToggleButton toggleKamera; | |||||
private ToggleButton btnAudio; | |||||
private ToggleButton btnBewegung; | |||||
//Detektoren | |||||
VideoDetector vd = new VideoDetector(this); | |||||
private void log(String nachricht) { | |||||
Log.d(this.getClass().getSimpleName(), nachricht); | |||||
} | |||||
public class MainActivity extends AppCompatActivity { | |||||
private DetectorService detectorService = new DetectorService(); | |||||
ImageView inputImageView; | |||||
ImageView outputImageView; | |||||
ToggleButton toggleButton; | |||||
@Override | @Override | ||||
protected void onCreate(Bundle savedInstanceState) { | protected void onCreate(Bundle savedInstanceState) { | ||||
super.onCreate(savedInstanceState); | super.onCreate(savedInstanceState); | ||||
setTitle(this.getClass().getSimpleName()); | |||||
setContentView(R.layout.activity_main); | setContentView(R.layout.activity_main); | ||||
alarm = findViewById(R.id.Alarm); | |||||
alarm.setText(text); | |||||
toggleKamera = findViewById(R.id.toggleKamera); | |||||
toggleKamera.setOnClickListener(this); | |||||
vd.setOnDetectionListener(new Detector.OnDetectionListener() { | |||||
@Override | |||||
public void onDetection(@NonNull DetectionReport detectionReport) { | |||||
DetectionReport dr = detectionReport; | |||||
String drString = dr.toString(); | |||||
} | |||||
}); | |||||
//boolean isRunning = vd.isRunning(); | |||||
} | |||||
@Override | |||||
public void onClick(View v) { | |||||
if (v == toggleKamera) { | |||||
if (toggleKamera.isChecked()) { | |||||
vd.startDetection(); | |||||
} else { | |||||
vd.stopDetection(); | |||||
} | |||||
} | |||||
} | |||||
@Override | |||||
protected void onPause() { | |||||
super.onPause(); | |||||
communication.stopCommunication(); | |||||
} | |||||
inputImageView = findViewById(R.id.inputImageView); | |||||
outputImageView = findViewById(R.id.outputImageView); | |||||
toggleButton = findViewById(R.id.toggleButton); | |||||
PermissionHandler permissionHandler = new PermissionHandler(this); | |||||
permissionHandler.getPermissions(); | |||||
if (permissionHandler.hasPermissions()) { | |||||
Intent serviceIntent = new Intent(this, DetectorService.class); | |||||
bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE); | |||||
startService(serviceIntent); | |||||
toggleButton.setOnClickListener(new View.OnClickListener() { | |||||
@Override | |||||
public void onClick(View v) { | |||||
if (toggleButton.isChecked()) | |||||
{ | |||||
if (detectorService != null){ | |||||
detectorService.videoDetector.debugProcessing(inputImageView, outputImageView); | |||||
detectorService.videoDetector.startDetection(); | |||||
detectorService.audioDetector.startDetection(); | |||||
detectorService.motionDetector.startDetection(); | |||||
detectorService.audioRecorder.stopRecording(); | |||||
detectorService.videoDetector.startRecording(); | |||||
} | |||||
} | |||||
else { | |||||
detectorService.videoDetector.stopDetection(); | |||||
detectorService.audioDetector.stopDetection(); | |||||
detectorService.motionDetector.stopDetection(); | |||||
detectorService.audioRecorder.stopRecording(); | |||||
detectorService.videoDetector.stopRecording(); | |||||
} | |||||
} | |||||
}); | |||||
@Override | |||||
protected void onResume() { | |||||
super.onResume(); | |||||
communication = new WifiCommunication(1234); | |||||
} | |||||
public void onClickZeigeFragment1(View view) { | |||||
Button button = (Button) view; | |||||
log(button.getText() + " ausgewählt"); | |||||
zeigeFragment(fragment1.erstellen("Fragment 1 wurde angeklickt")); | |||||
} | |||||
public void onClickZeigeFragment2(View view) { | |||||
Button button = (Button) view; | |||||
log(button.getText() + " ausgewählt"); | |||||
zeigeFragment(fragment2.erstellen("Fragment 2 wurde angeklickt")); | |||||
} | |||||
public void onClickZeigeFragment3(View view) { | |||||
Button button = (Button) view; | |||||
log(button.getText() + " ausgewählt"); | |||||
zeigeFragment(fragment3.erstellen("Fragment 3 wurde angeklickt")); | |||||
} | |||||
public void onClickEntferneFragment(View view) { | |||||
entferneFragment(); | |||||
} | |||||
private void zeigeFragment(Fragment fragment) { | |||||
FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); | |||||
ft.replace(R.id.frame, fragment); | |||||
ft.commit(); | |||||
aktuellesFragment = fragment; | |||||
} | |||||
private void entferneFragment() { | |||||
if (aktuellesFragment != null) { | |||||
FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); | |||||
ft.remove(aktuellesFragment); | |||||
ft.commit(); | |||||
aktuellesFragment = null ; | |||||
} | } | ||||
} | } | ||||
private ServiceConnection serviceConnection = new ServiceConnection() { | |||||
@Override | |||||
public void onServiceConnected(ComponentName name, IBinder service) { | |||||
DetectorService.ServiceBinder binder = (DetectorService.ServiceBinder) service; | |||||
detectorService = binder.getBoundService(); | |||||
detectorService.setOnDetectionListener(new DetectorService.OnDetectionListener() { | |||||
@Override | |||||
public void onDetection(@NonNull DetectionReport detectionReport) { | |||||
Log.d("onDetection", detectionReport.toMessage()); | |||||
} | |||||
}); | |||||
} | |||||
@Override | |||||
public void onServiceDisconnected(ComponentName name) {} | |||||
}; | |||||
} | } |
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
xmlns:app="http://schemas.android.com/apk/res-auto" | |||||
xmlns:tools="http://schemas.android.com/tools" | xmlns:tools="http://schemas.android.com/tools" | ||||
android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
android:layout_height="match_parent" | android:layout_height="match_parent" | ||||
android:background="@android:color/holo_green_dark" | |||||
android:visibility="visible" | |||||
tools:context="com.example.ueberwachungssystem.MainActivity" | |||||
tools:visibility="visible"> | |||||
android:layout_gravity="center" | |||||
android:gravity="top" | |||||
android:orientation="vertical" | |||||
tools:context=".MainActivity"> | |||||
<ToggleButton | |||||
android:id="@+id/toggleKamera" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_alignBottom="@id/toggleAudio" | |||||
android:layout_marginRight="15dp" | |||||
android:layout_toStartOf="@+id/toggleAudio" | |||||
android:layout_toLeftOf="@id/toggleAudio" | |||||
android:text="Kamera" /> | |||||
<ToggleButton | |||||
android:id="@+id/toggleAudio" | |||||
android:layout_width="wrap_content" | |||||
<androidx.camera.view.PreviewView | |||||
android:id="@+id/previewView" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
android:layout_alignParentTop="true" | |||||
android:layout_centerHorizontal="true" | |||||
android:text="Audio" /> | |||||
android:backgroundTint="@android:color/black"/> | |||||
<ToggleButton | <ToggleButton | ||||
android:id="@+id/toggleBewegung" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_alignBottom="@id/toggleAudio" | |||||
android:layout_marginLeft="15dp" | |||||
android:layout_toEndOf="@+id/toggleAudio" | |||||
android:layout_toRightOf="@id/toggleAudio" | |||||
android:text="Bewegung" /> | |||||
<Button | |||||
android:id="@+id/btnAudio" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_alignBottom="@id/btnKamera" | |||||
android:layout_marginRight="15dp" | |||||
android:layout_toStartOf="@+id/btnKamera" | |||||
android:onClick="onClickZeigeFragment1" | |||||
android:text="Audio" /> | |||||
<Button | |||||
android:id="@+id/btnKamera" | |||||
android:layout_width="wrap_content" | |||||
android:id="@+id/toggleButton" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
android:layout_below="@id/toggleAudio" | |||||
android:layout_centerHorizontal="true" | |||||
android:onClick="onClickZeigeFragment2" | |||||
android:text="Kamera" /> | |||||
android:text="ToggleButton" /> | |||||
<!-- | |||||
<Button | |||||
android:id="@+id/btnSensorWeg" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_centerHorizontal="true" | |||||
android:layout_below="@+id/btn1" | |||||
android:text="Entferne Sensordarstellung" | |||||
android:onClick="onClickEntferneFragment"/> | |||||
--> | |||||
<Button | |||||
android:id="@+id/btnBewegung" | |||||
<ImageView | |||||
android:id="@+id/inputImageView" | |||||
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
android:layout_alignBottom="@id/btnKamera" | |||||
android:layout_marginLeft="15dp" | |||||
android:layout_toEndOf="@+id/btnKamera" | |||||
android:layout_toRightOf="@id/btnKamera" | |||||
android:onClick="onClickZeigeFragment3" | |||||
android:text="Bewegung" /> | |||||
tools:srcCompat="@tools:sample/avatars" /> | |||||
<Button | |||||
android:id="@+id/btnAufnahme" | |||||
<ImageView | |||||
android:id="@+id/outputImageView" | |||||
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
android:layout_below="@+id/btnKamera" | |||||
android:layout_toLeftOf="@id/btnKamera" | |||||
android:layout_marginRight="15dp" | |||||
android:onClick="onClickEntferneFragment" | |||||
android:text="Aufnahme" /> | |||||
tools:srcCompat="@tools:sample/avatars" /> | |||||
<Button | |||||
android:id="@+id/btnWiedergabe" | |||||
<androidx.camera.view.PreviewView | |||||
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/btnKamera" | |||||
android:layout_toRightOf="@id/btnKamera" | |||||
android:layout_marginLeft="15dp" | |||||
android:onClick="onClickEntferneFragment" | |||||
android:text="Wiedergabe" /> | |||||
<FrameLayout | |||||
android:id="@+id/frame" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="200dp" | |||||
android:layout_below="@+id/btnAufnahme" | |||||
android:layout_alignParentStart="true"> | |||||
</FrameLayout> | |||||
<ScrollView | |||||
android:id= "@+id/scrollView1" | |||||
android:layout_width= "wrap_content" | |||||
android:layout_height= "wrap_content" | |||||
android:layout_below= "@id/frame"> | |||||
<LinearLayout | |||||
android:layout_width= "match_parent" | |||||
android:layout_height= "match_parent" | |||||
android:orientation= "vertical" > | |||||
<TextView | |||||
android:id= "@+id/Alarm" | |||||
android:layout_width= "wrap_content" | |||||
android:layout_height= "wrap_content" /> | |||||
</LinearLayout> | |||||
</ScrollView> | |||||
android:layout_height="wrap_content" /> | |||||
</RelativeLayout> | |||||
</LinearLayout> |