1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package com.feemers.android.fftdrawer.SignalProcessing;
-
- import android.hardware.Sensor;
- import android.hardware.SensorEvent;
- import android.hardware.SensorEventListener;
- import android.hardware.SensorManager;
- import android.util.Log;
-
- public class MySensor extends SensorImpl implements SensorEventListener {
- private SensorManager sensorManager;
- private Sensor m_sensor;
- private int sensorType = Sensor.TYPE_ACCELEROMETER;
- private long time_former_value;
- private long time_current_value;
-
- private int sample_cnt;
-
- public MySensor()
- {
- m_sensor = null;
- time_former_value = 0;
- time_current_value = 0;
- sample_cnt = 0;
- }
-
- @Override
- public void onSensorChanged(SensorEvent event)
- {
- //Log.d("MySensor","onSensorChanged()\n");
-
- // Calculating the sample rate
- time_current_value = System.currentTimeMillis();
- long period = time_current_value - time_former_value;
- if ((time_former_value != 0) && (period != 0)) {
- m_sampleRate = (double) (1.0 / period) * 1000.0; // in Hz
- m_detector.setSampleRate(m_sampleRate);
- }
-
- /*if (sample_cnt == 100) //TODO: Delete this part before final use (inc. sample_cnt) -> only meant for debugging
- {
- Log.d("MySensor", "m_sampleRate:" + m_sampleRate + "\n");
- Log.d("MySensor", "time_current_value:" + time_current_value + "\n");
- Log.d("MySensor", "time_former_value:" + time_former_value + "\n");
- Log.d("MySensor", "currentTimeMillis:" + System.currentTimeMillis() + "\n");
- Log.d("MySensor", "period:" + period + "\n");
- sample_cnt = 0;
- }*/
-
- time_former_value = time_current_value;
- // Calculating the acceleration
- double acceleration = (Math.sqrt(event.values[0] * event.values[0] + event.values[1] * (event.values[1] + event.values[2] * event.values[2]))) - 9.81;
- m_detector.onNewSample(acceleration);
- sample_cnt++;
- }
-
- @Override
- public void onAccuracyChanged(Sensor sensor, int accuracy) {
- Log.d("MySensor","onAccuracyChanged()\n");
- }
-
- @Override
- public double getSampleRate() {
- return m_sampleRate;
- }
-
- @Override
- public void startSampling() {
- if (m_sensor != null) {
- if (sensorManager.registerListener(this, m_sensor, SensorManager.SENSOR_DELAY_GAME)) {
- Log.d("MySensor", "Bei Sensor angemeldet.\n");
- } else {
- Log.d("MySensor", "Kann dem Sensor keinen Beobachter hinzufügen\n");
- }
- }
- }
-
- @Override
- public void stopSampling() {
- if (m_sensor != null) {
- sensorManager.unregisterListener(this, m_sensor);
- Log.d("MySensor","Von Sensor abgemeldet.\n");
- }
- }
-
-
- public void connectSensorManager(SensorManager sensorManager){
- this.sensorManager = sensorManager;
- if (sensorManager.getSensorList(sensorType).size() == 0) {
- Log.d("MySensor", "Es gibt den Sensor nicht.\n");
- m_sensor = null;
- } else {
- m_sensor = sensorManager.getSensorList(sensorType).get(0);
- }
- }
- }
|