diff --git a/app/src/main/java/io/pslab/fragment/AccelerometerDataFragment.java b/app/src/main/java/io/pslab/fragment/AccelerometerDataFragment.java index e57337ba7..744adf79f 100644 --- a/app/src/main/java/io/pslab/fragment/AccelerometerDataFragment.java +++ b/app/src/main/java/io/pslab/fragment/AccelerometerDataFragment.java @@ -34,6 +34,7 @@ import io.pslab.R; import io.pslab.activity.AccelerometerActivity; +import io.pslab.interfaces.OperationCallback; import io.pslab.models.AccelerometerData; import io.pslab.models.SensorDataBlock; import io.pslab.others.CSVDataLine; @@ -47,7 +48,7 @@ * Created by Kunal on 18-12-18 */ -public class AccelerometerDataFragment extends Fragment { +public class AccelerometerDataFragment extends Fragment implements OperationCallback { private static final CSVDataLine CSV_HEADER = new CSVDataLine() .add("Timestamp") @@ -267,6 +268,7 @@ public void run() { }, 0, timeGap); } + @Override public void playData() { resetInstrumentData(); accelerometerSensor.startedPlay = true; @@ -284,6 +286,7 @@ public void playData() { } } + @Override public void stopData() { if (graphTimer != null) { graphTimer.cancel(); @@ -300,6 +303,7 @@ public void stopData() { accelerometerSensor.invalidateOptionsMenu(); } + @Override public void saveGraph() { accelerometerSensor.csvLogger.prepareLogFile(); accelerometerSensor.csvLogger.writeMetaData(getResources().getString(R.string.accelerometer)); diff --git a/app/src/main/java/io/pslab/fragment/BaroMeterDataFragment.java b/app/src/main/java/io/pslab/fragment/BaroMeterDataFragment.java index 6674668bd..8b72e11e2 100644 --- a/app/src/main/java/io/pslab/fragment/BaroMeterDataFragment.java +++ b/app/src/main/java/io/pslab/fragment/BaroMeterDataFragment.java @@ -49,6 +49,7 @@ import io.pslab.communication.ScienceLab; import io.pslab.communication.peripherals.I2C; import io.pslab.communication.sensors.BMP180; +import io.pslab.interfaces.OperationCallback; import io.pslab.models.BaroData; import io.pslab.models.PSLabSensor; import io.pslab.models.SensorDataBlock; @@ -64,7 +65,7 @@ * Created by Padmal on 12/13/18. */ -public class BaroMeterDataFragment extends Fragment { +public class BaroMeterDataFragment extends Fragment implements OperationCallback { private static final CSVDataLine CSV_HEADER = new CSVDataLine() .add("Timestamp") @@ -331,6 +332,7 @@ public void run() { }, 0, timeGap); } + @Override public void playData() { resetInstrumentData(); baroSensor.startedPlay = true; @@ -348,6 +350,7 @@ public void playData() { } } + @Override public void stopData() { if (graphTimer != null) { graphTimer.cancel(); @@ -362,6 +365,7 @@ public void stopData() { baroSensor.invalidateOptionsMenu(); } + @Override public void saveGraph() { baroSensor.csvLogger.prepareLogFile(); baroSensor.csvLogger.writeMetaData(getResources().getString(R.string.baro_meter)); diff --git a/app/src/main/java/io/pslab/fragment/CompassDataFragment.java b/app/src/main/java/io/pslab/fragment/CompassDataFragment.java index 9eb6cccac..86a3e6ab6 100644 --- a/app/src/main/java/io/pslab/fragment/CompassDataFragment.java +++ b/app/src/main/java/io/pslab/fragment/CompassDataFragment.java @@ -38,6 +38,7 @@ import io.pslab.activity.CompassActivity; import io.pslab.communication.ScienceLab; import io.pslab.communication.peripherals.I2C; +import io.pslab.interfaces.OperationCallback; import io.pslab.models.CompassData; import io.pslab.models.SensorDataBlock; import io.pslab.others.CSVDataLine; @@ -48,7 +49,7 @@ import static android.content.Context.SENSOR_SERVICE; import static io.pslab.others.CSVLogger.CSV_DIRECTORY; -public class CompassDataFragment extends Fragment { +public class CompassDataFragment extends Fragment implements OperationCallback { private static final CSVDataLine CSV_HEADER = new CSVDataLine() .add("Timestamp") @@ -246,6 +247,7 @@ public void onResume() { } } + @Override public void saveGraph() { compassActivity.csvLogger.prepareLogFile(); compassActivity.csvLogger.writeMetaData(getResources().getString(R.string.compass)); @@ -382,6 +384,7 @@ public void run() { }, 0, timeGap); } + @Override public void playData() { resetInstrumentData(); compassActivity.startedPlay = true; @@ -399,6 +402,7 @@ public void playData() { } } + @Override public void stopData() { if (graphTimer != null) { graphTimer.cancel(); diff --git a/app/src/main/java/io/pslab/fragment/DustSensorDataFragment.java b/app/src/main/java/io/pslab/fragment/DustSensorDataFragment.java index 2ccaeef55..2135d33d9 100644 --- a/app/src/main/java/io/pslab/fragment/DustSensorDataFragment.java +++ b/app/src/main/java/io/pslab/fragment/DustSensorDataFragment.java @@ -40,6 +40,7 @@ import io.pslab.R; import io.pslab.activity.DustSensorActivity; import io.pslab.communication.ScienceLab; +import io.pslab.interfaces.OperationCallback; import io.pslab.models.DustSensorData; import io.pslab.models.GasSensorData; import io.pslab.models.SensorDataBlock; @@ -50,7 +51,7 @@ import static io.pslab.others.CSVLogger.CSV_DIRECTORY; -public class DustSensorDataFragment extends Fragment { +public class DustSensorDataFragment extends Fragment implements OperationCallback { private static final CSVDataLine CSV_HEADER = new CSVDataLine() @@ -260,6 +261,7 @@ public void run() { }, 0, timeGap); } + @Override public void playData() { resetInstrumentData(); dustSensorActivity.startedPlay = true; @@ -277,6 +279,7 @@ public void playData() { } } + @Override public void stopData() { if (graphTimer != null) { graphTimer.cancel(); @@ -291,6 +294,7 @@ public void stopData() { dustSensorActivity.invalidateOptionsMenu(); } + @Override public void saveGraph() { dustSensorActivity.csvLogger.prepareLogFile(); dustSensorActivity.csvLogger.writeMetaData(getResources().getString(R.string.gas_sensor)); diff --git a/app/src/main/java/io/pslab/fragment/GasSensorDataFragment.java b/app/src/main/java/io/pslab/fragment/GasSensorDataFragment.java index aca452fc8..165e88959 100644 --- a/app/src/main/java/io/pslab/fragment/GasSensorDataFragment.java +++ b/app/src/main/java/io/pslab/fragment/GasSensorDataFragment.java @@ -40,6 +40,7 @@ import io.pslab.R; import io.pslab.activity.GasSensorActivity; import io.pslab.communication.ScienceLab; +import io.pslab.interfaces.OperationCallback; import io.pslab.models.GasSensorData; import io.pslab.models.SensorDataBlock; import io.pslab.others.CSVDataLine; @@ -49,7 +50,7 @@ import static io.pslab.others.CSVLogger.CSV_DIRECTORY; -public class GasSensorDataFragment extends Fragment { +public class GasSensorDataFragment extends Fragment implements OperationCallback { private static final CSVDataLine CSV_HEADER = new CSVDataLine() .add("Timestamp") @@ -238,6 +239,7 @@ public void run() { }, 0, timeGap); } + @Override public void playData() { resetInstrumentData(); gasSensorActivity.startedPlay = true; @@ -255,6 +257,7 @@ public void playData() { } } + @Override public void stopData() { if (graphTimer != null) { graphTimer.cancel(); @@ -269,6 +272,7 @@ public void stopData() { gasSensorActivity.invalidateOptionsMenu(); } + @Override public void saveGraph() { gasSensorActivity.csvLogger.prepareLogFile(); gasSensorActivity.csvLogger.writeMetaData(getResources().getString(R.string.gas_sensor)); diff --git a/app/src/main/java/io/pslab/fragment/GyroscopeDataFragment.java b/app/src/main/java/io/pslab/fragment/GyroscopeDataFragment.java index 57b3dd6e2..d079ecdb7 100644 --- a/app/src/main/java/io/pslab/fragment/GyroscopeDataFragment.java +++ b/app/src/main/java/io/pslab/fragment/GyroscopeDataFragment.java @@ -36,6 +36,7 @@ import io.pslab.R; import io.pslab.activity.GyroscopeActivity; +import io.pslab.interfaces.OperationCallback; import io.pslab.models.GyroData; import io.pslab.models.SensorDataBlock; import io.pslab.others.CSVDataLine; @@ -45,7 +46,7 @@ import static android.content.Context.SENSOR_SERVICE; import static io.pslab.others.CSVLogger.CSV_DIRECTORY; -public class GyroscopeDataFragment extends Fragment { +public class GyroscopeDataFragment extends Fragment implements OperationCallback { private static final CSVDataLine CSV_HEADER = new CSVDataLine() .add("Timestamp") @@ -272,6 +273,7 @@ public void run() { }, 0, timeGap); } + @Override public void playData() { resetInstrumentData(); gyroSensor.startedPlay = true; @@ -289,6 +291,7 @@ public void playData() { } } + @Override public void stopData() { if (graphTimer != null) { graphTimer.cancel(); @@ -305,6 +308,7 @@ public void stopData() { gyroSensor.invalidateOptionsMenu(); } + @Override public void saveGraph() { gyroSensor.csvLogger.prepareLogFile(); gyroSensor.csvLogger.writeMetaData(getResources().getString(R.string.gyroscope)); diff --git a/app/src/main/java/io/pslab/fragment/LuxMeterDataFragment.java b/app/src/main/java/io/pslab/fragment/LuxMeterDataFragment.java index 2793fb106..3da428420 100644 --- a/app/src/main/java/io/pslab/fragment/LuxMeterDataFragment.java +++ b/app/src/main/java/io/pslab/fragment/LuxMeterDataFragment.java @@ -48,6 +48,7 @@ import io.pslab.communication.peripherals.I2C; import io.pslab.communication.sensors.BH1750; import io.pslab.communication.sensors.TSL2561; +import io.pslab.interfaces.OperationCallback; import io.pslab.models.LuxData; import io.pslab.models.PSLabSensor; import io.pslab.models.SensorDataBlock; @@ -63,7 +64,7 @@ * Created by Padmal on 11/2/18. */ -public class LuxMeterDataFragment extends Fragment { +public class LuxMeterDataFragment extends Fragment implements OperationCallback { private static final CSVDataLine CSV_HEADER = new CSVDataLine() @@ -298,6 +299,7 @@ public void run() { }, 0, timeGap); } + @Override public void stopData() { if (graphTimer != null) { graphTimer.cancel(); @@ -312,6 +314,7 @@ public void stopData() { luxSensor.invalidateOptionsMenu(); } + @Override public void playData() { resetInstrumentData(); luxSensor.startedPlay = true; @@ -329,6 +332,7 @@ public void playData() { } } + @Override public void saveGraph() { luxSensor.csvLogger.prepareLogFile(); luxSensor.csvLogger.writeMetaData(getResources().getString(R.string.lux_meter)); diff --git a/app/src/main/java/io/pslab/fragment/SoundMeterDataFragment.java b/app/src/main/java/io/pslab/fragment/SoundMeterDataFragment.java index 089696ef1..a1b451f1e 100644 --- a/app/src/main/java/io/pslab/fragment/SoundMeterDataFragment.java +++ b/app/src/main/java/io/pslab/fragment/SoundMeterDataFragment.java @@ -38,6 +38,7 @@ import butterknife.Unbinder; import io.pslab.R; import io.pslab.activity.SoundMeterActivity; +import io.pslab.interfaces.OperationCallback; import io.pslab.models.PSLabSensor; import io.pslab.models.SensorDataBlock; import io.pslab.models.SoundData; @@ -51,7 +52,7 @@ /** * @author reckoner1429 */ -public class SoundMeterDataFragment extends Fragment { +public class SoundMeterDataFragment extends Fragment implements OperationCallback { public static final String TAG = "SoundMeterFragment"; private static final CSVDataLine CSV_HEADER = @@ -284,6 +285,7 @@ private void updateChart(short[] buffer) { /** * Method to play data which was previously recorded */ + @Override public void playData() { CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), getString(R.string.in_progress), null, null, Snackbar.LENGTH_SHORT); @@ -296,6 +298,7 @@ public void playData() { /** * Method to stop playing the previously recorded data */ + @Override public void stopData() { CustomSnackBar.showSnackBar(getActivity().findViewById(android.R.id.content), getString(R.string.in_progress), null, null, Snackbar.LENGTH_SHORT); @@ -347,6 +350,7 @@ private void writeLog(long timestamp, float dB) { } } + @Override public void saveGraph() { soundMeter.csvLogger.prepareLogFile(); soundMeter.csvLogger.writeMetaData(getResources().getString(R.string.lux_meter)); diff --git a/app/src/main/java/io/pslab/fragment/ThermometerDataFragment.java b/app/src/main/java/io/pslab/fragment/ThermometerDataFragment.java index 4c0ed6883..011503350 100644 --- a/app/src/main/java/io/pslab/fragment/ThermometerDataFragment.java +++ b/app/src/main/java/io/pslab/fragment/ThermometerDataFragment.java @@ -47,6 +47,7 @@ import io.pslab.communication.ScienceLab; import io.pslab.communication.peripherals.I2C; import io.pslab.communication.sensors.SHT21; +import io.pslab.interfaces.OperationCallback; import io.pslab.models.PSLabSensor; import io.pslab.models.SensorDataBlock; import io.pslab.models.ThermometerData; @@ -58,7 +59,7 @@ import static android.content.Context.SENSOR_SERVICE; import static io.pslab.others.CSVLogger.CSV_DIRECTORY; -public class ThermometerDataFragment extends Fragment { +public class ThermometerDataFragment extends Fragment implements OperationCallback { private static final String TEMPERATURE = "temperature"; private static final CSVDataLine CSV_HEADER = new CSVDataLine() @@ -297,6 +298,7 @@ public void run() { }, 0, timeGap); } + @Override public void stopData() { if (graphTimer != null) { graphTimer.cancel(); @@ -311,6 +313,7 @@ public void stopData() { thermoSensor.invalidateOptionsMenu(); } + @Override public void playData() { resetInstrumentData(); thermoSensor.startedPlay = true; @@ -328,6 +331,7 @@ public void playData() { } } + @Override public void saveGraph() { thermoSensor.csvLogger.prepareLogFile(); thermoSensor.csvLogger.writeMetaData(getResources().getString(R.string.thermometer)); diff --git a/app/src/main/java/io/pslab/interfaces/OperationCallback.java b/app/src/main/java/io/pslab/interfaces/OperationCallback.java new file mode 100644 index 000000000..b9f584425 --- /dev/null +++ b/app/src/main/java/io/pslab/interfaces/OperationCallback.java @@ -0,0 +1,10 @@ +package io.pslab.interfaces; + +/** + * created by VIKAS9899 on 14/05/2020 + */ +public interface OperationCallback { + void playData(); + void stopData(); + void saveGraph(); +} diff --git a/app/src/main/java/io/pslab/models/PSLabSensor.java b/app/src/main/java/io/pslab/models/PSLabSensor.java index 86a495a84..786527068 100644 --- a/app/src/main/java/io/pslab/models/PSLabSensor.java +++ b/app/src/main/java/io/pslab/models/PSLabSensor.java @@ -50,6 +50,7 @@ import io.pslab.fragment.LuxMeterDataFragment; import io.pslab.fragment.SoundMeterDataFragment; import io.pslab.fragment.ThermometerDataFragment; +import io.pslab.interfaces.OperationCallback; import io.pslab.others.CSVLogger; import io.pslab.others.CustomSnackBar; import io.pslab.others.GPSLogger; @@ -314,6 +315,9 @@ private void prepareMarkers() { @Override public boolean onOptionsItemSelected(MenuItem item) { + + Fragment fragment; + switch (item.getItemId()) { /* When record data button has been pressed, check if the device has write permission @@ -335,65 +339,21 @@ public boolean onOptionsItemSelected(MenuItem item) { case R.id.play_data: playingData = !playingData; if (!startedPlay) { - if (getSensorFragment() instanceof LuxMeterDataFragment) { - ((LuxMeterDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).playData(); - } else if (getSensorFragment() instanceof BaroMeterDataFragment) { - ((BaroMeterDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).playData(); - } else if (getSensorFragment() instanceof GyroscopeDataFragment) { - ((GyroscopeDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).playData(); - } else if (getSensorFragment() instanceof CompassDataFragment) { - ((CompassDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).playData(); - } else if (getSensorFragment() instanceof AccelerometerDataFragment) { - ((AccelerometerDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).playData(); - } else if (getSensorFragment() instanceof ThermometerDataFragment){ - ((ThermometerDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).playData(); - } else if (getSensorFragment() instanceof GasSensorDataFragment){ - ((GasSensorDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).playData(); - } else if (getSensorFragment() instanceof DustSensorDataFragment) { - ((DustSensorDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).playData(); - } else if(getSensorFragment() instanceof SoundMeterDataFragment) { - ((SoundMeterDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).playData(); + fragment = getSupportFragmentManager() + .findFragmentByTag(getSensorName()); + + if (fragment instanceof OperationCallback) { + ((OperationCallback) fragment).playData(); } } invalidateOptionsMenu(); break; case R.id.stop_data: - if (getSensorFragment() instanceof LuxMeterDataFragment) { - ((LuxMeterDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).stopData(); - } else if (getSensorFragment() instanceof BaroMeterDataFragment) { - ((BaroMeterDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).stopData(); - } else if (getSensorFragment() instanceof GyroscopeDataFragment) { - ((GyroscopeDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).stopData(); - } else if (getSensorFragment() instanceof CompassDataFragment) { - ((CompassDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).stopData(); - } else if (getSensorFragment() instanceof AccelerometerDataFragment) { - ((AccelerometerDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).stopData(); - } else if (getSensorFragment() instanceof ThermometerDataFragment){ - ((ThermometerDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).stopData(); - } else if (getSensorFragment() instanceof GasSensorDataFragment){ - ((GasSensorDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).stopData(); - } else if (getSensorFragment() instanceof DustSensorDataFragment) { - ((DustSensorDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).stopData(); - } else if(getSensorFragment() instanceof SoundMeterDataFragment) { - ((SoundMeterDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).stopData(); + fragment = getSupportFragmentManager() + .findFragmentByTag(getSensorName()); + + if (fragment instanceof OperationCallback) { + ((OperationCallback) fragment).stopData(); } break; case R.id.show_map: @@ -420,33 +380,11 @@ public boolean onOptionsItemSelected(MenuItem item) { break; case R.id.save_graph: displayLogLocationOnSnackBar(); - if (getSensorFragment() instanceof LuxMeterDataFragment) { - ((LuxMeterDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).saveGraph(); - } else if (getSensorFragment() instanceof BaroMeterDataFragment) { - ((BaroMeterDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).saveGraph(); - } else if (getSensorFragment() instanceof GyroscopeDataFragment) { - ((GyroscopeDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).saveGraph(); - } else if (getSensorFragment() instanceof CompassDataFragment) { - ((CompassDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).saveGraph(); - } else if (getSensorFragment() instanceof AccelerometerDataFragment) { - ((AccelerometerDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).saveGraph(); - } else if (getSensorFragment() instanceof ThermometerDataFragment) { - ((ThermometerDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).saveGraph(); - } else if (getSensorFragment() instanceof GasSensorDataFragment){ - ((GasSensorDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).saveGraph(); - } else if (getSensorFragment() instanceof DustSensorDataFragment) { - ((DustSensorDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).saveGraph(); - } else if(getSensorFragment() instanceof SoundMeterDataFragment) { - ((SoundMeterDataFragment) getSupportFragmentManager() - .findFragmentByTag(getSensorName())).saveGraph(); + fragment = getSupportFragmentManager() + .findFragmentByTag(getSensorName()); + + if (fragment instanceof OperationCallback) { + ((OperationCallback) fragment).saveGraph(); } break; case android.R.id.home: @@ -523,7 +461,7 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis startActivity(map); } else { CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.no_permission_for_maps),null,null,Snackbar.LENGTH_LONG); + getString(R.string.no_permission_for_maps), null, null, Snackbar.LENGTH_LONG); } break; case PSLabPermission.LOG_PERMISSION: @@ -676,7 +614,7 @@ protected void onResume() { getDataFromDataLogger(); } catch (ArrayIndexOutOfBoundsException e) { CustomSnackBar.showSnackBar(findViewById(android.R.id.content), - getString(R.string.no_data_fetched),null,null,Snackbar.LENGTH_LONG); + getString(R.string.no_data_fetched), null, null, Snackbar.LENGTH_LONG); } if (checkGPSOnResume) { isRecording = true;