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.

Accelerometer.java 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package com.example.ueberwachungssystem.Detection;
  2. import static java.lang.Math.sqrt;
  3. import android.content.Context;
  4. import android.hardware.Sensor;
  5. import android.hardware.SensorEvent;
  6. import android.hardware.SensorEventListener;
  7. import android.hardware.SensorManager;
  8. /**
  9. * Accelerometer inherits some methods from abstract Detector class (more info there)
  10. *
  11. *
  12. * USE FROM MAIN ACTIVITY:
  13. *
  14. * Accelerometer beschleunigungssensor = new Accelerometer(this);
  15. * onCreate:
  16. * //Accelerometer Setup
  17. * beschleunigungssensor = new Accelerometer(this, logger, textViewLog); //logger and textview only for debugging necessary
  18. * beschleunigungssensor.getSensor();
  19. *
  20. * //Starting Detection:
  21. * beschleunigungssensor.startDetection();
  22. * //Stopping Detection: also recommended at onPause to avoid unnecessary battery consumption
  23. * beschleunigungssensor.stopDetection();
  24. *
  25. * */
  26. public class Accelerometer extends Detector implements SensorEventListener {
  27. public SensorManager sensorManager;
  28. private static final int sensorType = Sensor.TYPE_LINEAR_ACCELERATION;
  29. private Sensor accelerometer;
  30. private Context context;
  31. boolean alarm = false;
  32. //Preallocate memory for the data of each axis of the acceleration sensor
  33. float x;
  34. float y;
  35. float z;
  36. float betrag; //Betrag aller drei Achsen sqrt(x*x + y*y + z*z)
  37. private DetectionReport detectionReport;
  38. // In constructor pass Activity, Context and TextView from MainActivity in Accelerometer class
  39. public Accelerometer(Context context){
  40. super(); //von Detektor
  41. this.context = context;
  42. }
  43. public void getSensor(){
  44. sensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
  45. if(sensorManager.getSensorList(sensorType).size()==0) {
  46. accelerometer = null;
  47. }
  48. else {
  49. accelerometer = sensorManager.getSensorList(sensorType).get(0);
  50. }
  51. }
  52. @Override
  53. public void onSensorChanged(SensorEvent event) {
  54. try {
  55. checkAlarm(event);
  56. } catch (InterruptedException e) {
  57. throw new RuntimeException(e);
  58. }
  59. }
  60. public void checkAlarm (SensorEvent event) throws InterruptedException {
  61. x = event.values[0];
  62. y = event.values[1];
  63. z = event.values[2];
  64. betrag = (float) sqrt(x*x + y*y + z*z);
  65. float threshold = 1.5F;
  66. if (!alarm) {
  67. if (betrag > threshold) {
  68. alarm = true;
  69. reportViolation("Bewegung", betrag);
  70. }
  71. } else {
  72. if (betrag < threshold) {
  73. alarm = false;
  74. } else {
  75. }
  76. }
  77. }
  78. @Override
  79. public void onAccuracyChanged(Sensor sensor, int accuracy) {
  80. }
  81. @Override
  82. public void startDetection() {
  83. // entspricht void start()
  84. //getSensor();
  85. if (accelerometer != null) {
  86. sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_GAME);
  87. }
  88. }
  89. @Override
  90. public void stopDetection() {
  91. // entspricht void stop()
  92. sensorManager.unregisterListener(this, accelerometer);
  93. }
  94. }