Gruppe 1
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AudioRecorder.java 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package com.example.ueberwachungssystem.Detection;
  2. import android.content.Context;
  3. import android.media.MediaPlayer;
  4. import android.media.MediaRecorder;
  5. import android.widget.Toast;
  6. import java.io.File;
  7. import java.io.IOException;
  8. import java.time.LocalDateTime;
  9. import java.time.format.DateTimeFormatter;
  10. public class AudioRecorder {
  11. private final Context context;
  12. private MediaRecorder mediaRecorder = null;
  13. private boolean isRecording = false;
  14. private File outputDir; // Default: in app files directory
  15. public AudioRecorder (Context context) {
  16. this.context = context;
  17. this.outputDir = context.getFilesDir();
  18. }
  19. public void startRecording() {
  20. // Handle logic
  21. if (outputDir == null)
  22. return;
  23. if (isRecording)
  24. return;
  25. isRecording = true;
  26. // Setup Audio Recorder for output Format: 3GP
  27. mediaRecorder = new MediaRecorder();
  28. mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
  29. mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
  30. mediaRecorder.setOutputFile(outputDir + "/" + generateFileName() + ".3gp");
  31. mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
  32. try {
  33. mediaRecorder.prepare();
  34. } catch (IOException e) {
  35. e.printStackTrace();
  36. }
  37. mediaRecorder.start();
  38. }
  39. public void stopRecording() {
  40. if (mediaRecorder != null) {
  41. mediaRecorder.stop();
  42. mediaRecorder.reset();
  43. mediaRecorder.release();
  44. mediaRecorder = null;
  45. isRecording = false;
  46. Toast.makeText(context, "audio recording saved", Toast.LENGTH_SHORT).show();
  47. }
  48. }
  49. public boolean isRecording(){
  50. return isRecording;
  51. }
  52. public void setOutputDir(File outputDir) {
  53. this.outputDir = outputDir;
  54. }
  55. private String generateFileName(){
  56. // Get the current timestamp
  57. LocalDateTime currentTime = LocalDateTime.now();
  58. // Define the format for the timestamp
  59. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss");
  60. // Return the timestamp as a string
  61. return currentTime.format(formatter);
  62. }
  63. }