Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions app/src/main/java/io/pslab/activity/SettingsActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import io.pslab.fragment.GyroscopeSettingsFragment;
import io.pslab.fragment.LuxMeterSettingFragment;
import io.pslab.fragment.SettingsFragment;
import io.pslab.fragment.ThermometerSettingsFragment;
import io.pslab.models.PSLabSensor;
import io.pslab.others.GPSLogger;

Expand Down Expand Up @@ -68,6 +69,9 @@ protected void onCreate(Bundle savedInstanceState) {
case PSLabSensor.ACCELEROMETER_CONFIGURATIONS:
fragment = new AccelerometerSettingsFragment();
break;
case PSLabSensor.THERMOMETER_CONFIGURATIONS:
fragment = new ThermometerSettingsFragment();
break;
default:
fragment = new SettingsFragment();
break;
Expand Down
27 changes: 27 additions & 0 deletions app/src/main/java/io/pslab/activity/ThermometerActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import android.content.SharedPreferences;
import android.support.v4.app.Fragment;
import android.support.v7.preference.PreferenceManager;

import io.pslab.R;
import io.pslab.fragment.ThermometerDataFragment;
import io.pslab.fragment.ThermometerSettingsFragment;
import io.pslab.models.PSLabSensor;
import io.pslab.models.SensorDataBlock;
import io.pslab.models.ThermometerData;
Expand Down Expand Up @@ -98,4 +100,29 @@ public void getDataFromDataLogger() {
getSupportActionBar().setTitle(title);
}
}

@Override
protected void onResume() {
super.onResume();
reinstateConfigurations();
}

private void reinstateConfigurations() {
SharedPreferences thermometerConfigurations;
thermometerConfigurations = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
locationEnabled = thermometerConfigurations.getBoolean(ThermometerSettingsFragment.KEY_INCLUDE_LOCATION, true);
ThermometerDataFragment.setParameters(
getValueFromText(thermometerConfigurations.getString(ThermometerSettingsFragment.KEY_UPDATE_PERIOD, "1000"),
100, 1000),
thermometerConfigurations.getString(ThermometerSettingsFragment.KEY_THERMO_SENSOR_TYPE, "0"),
thermometerConfigurations.getString(ThermometerSettingsFragment.KEY_THERMO_UNIT, "°C"));
}

private int getValueFromText(String strValue, int lowerBound, int upperBound) {
if (strValue.isEmpty()) return lowerBound;
int value = Integer.parseInt(strValue);
if (value > upperBound) return upperBound;
else if (value < lowerBound) return lowerBound;
else return value;
}
}
53 changes: 40 additions & 13 deletions app/src/main/java/io/pslab/fragment/ThermometerDataFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public class ThermometerDataFragment extends Fragment {
private int count = 0, turns = 0;
private float sum = 0;
private boolean returningFromPause = false;

private static String unit = "°C";
private float tempValue = -1;

private enum THERMOMETER_SENSOR {INBUILT_SENSOR, SHT21_SENSOR}
Expand All @@ -87,6 +87,12 @@ private enum THERMOMETER_SENSOR {INBUILT_SENSOR, SHT21_SENSOR}
LineChart mChart;
@BindView(R.id.thermo_meter)
PointerSpeedometer thermometer;
@BindView(R.id.label_thermo_stat_min)
TextView label_statMin;
@BindView(R.id.label_thermo_stat_avg)
TextView label_statAvg;
@BindView(R.id.label_thermo_stat_max)
TextView label_statMax;

private Timer graphTimer;
private SensorManager sensorManager;
Expand All @@ -101,16 +107,18 @@ private enum THERMOMETER_SENSOR {INBUILT_SENSOR, SHT21_SENSOR}
private Unbinder unbinder;
private long previousTimeElapsed = (System.currentTimeMillis() - startTime) / updatePeriod;
private ThermometerActivity thermoSensor;
private ThermometerSettingsFragment thermoSettings;
private View rootView;

public static ThermometerDataFragment newInstance() {
return new ThermometerDataFragment();
}

public static void setParameters(int highLimit, int updatePeriod, String type, String gain) {
ThermometerDataFragment.highLimit = highLimit;
public static void setParameters(int updatePeriod, String type, String unit) {
ThermometerDataFragment.updatePeriod = updatePeriod;
ThermometerDataFragment.sensorType = Integer.valueOf(type);
ThermometerDataFragment.unit = unit;

}

@Override
Expand Down Expand Up @@ -147,8 +155,7 @@ public void onResume() {
updateGraphs();
sum = 0;
count = 0;
currentMin = 125;
currentMax = -40;
setUnit();
entries.clear();
mChart.clear();
mChart.invalidate();
Expand Down Expand Up @@ -193,7 +200,7 @@ private void plotAllRecordedData() {
statMin.setText(String.format(Locale.getDefault(), PSLabSensor.THERMOMETER_DATA_FORMAT, currentMin));
statMean.setText(String.format(Locale.getDefault(), PSLabSensor.THERMOMETER_DATA_FORMAT, (sum / recordedThermoArray.size())));

LineDataSet dataSet = new LineDataSet(entries, getString(R.string.thermo_unit));
LineDataSet dataSet = new LineDataSet(entries,PreferenceManager.getDefaultSharedPreferences(getActivity()).getString(thermoSettings.KEY_THERMO_UNIT.toString(),"°C"));
dataSet.setDrawCircles(false);
dataSet.setDrawValues(false);
dataSet.setLineWidth(2);
Expand Down Expand Up @@ -260,15 +267,15 @@ public void run() {
sum += entry.getY();
statMean.setText(DataFormatter.formatDouble((sum / count), PSLabSensor.THERMOMETER_DATA_FORMAT));

LineDataSet dataSet = new LineDataSet(entries, getString(R.string.thermo_unit));
LineDataSet dataSet = new LineDataSet(entries,PreferenceManager.getDefaultSharedPreferences(getActivity()).getString(thermoSettings.KEY_THERMO_UNIT.toString(),"°C"));
dataSet.setDrawCircles(false);
dataSet.setDrawValues(false);
dataSet.setLineWidth(2);
LineData data = new LineData(dataSet);

mChart.setData(data);
mChart.notifyDataSetChanged();
mChart.setVisibleXRangeMaximum(80);
mChart.setVisibleXRangeMaximum(800);
mChart.moveViewToX(data.getEntryCount());
mChart.invalidate();
} catch (IndexOutOfBoundsException e) {
Expand Down Expand Up @@ -354,8 +361,7 @@ public void saveGraph() {


private void setupInstruments() {
thermometer.setMaxSpeed(PreferenceManager.getDefaultSharedPreferences(getActivity()).getFloat(thermoSensor.THERMOMETER_MAX_LIMIT, 125));
thermometer.setMinSpeed(PreferenceManager.getDefaultSharedPreferences(getActivity()).getFloat(thermoSensor.THERMOMETER_MIN_LIMIT,-40));
setUnit();
XAxis x = mChart.getXAxis();
this.y = mChart.getAxisLeft();
YAxis y2 = mChart.getAxisRight();
Expand Down Expand Up @@ -484,7 +490,7 @@ private void visualizeData() {
sum += entry.getY();
statMean.setText(String.format(Locale.getDefault(), PSLabSensor.THERMOMETER_DATA_FORMAT, (sum / count)));

LineDataSet dataSet = new LineDataSet(entries, getString(R.string.thermo_unit));
LineDataSet dataSet = new LineDataSet(entries,PreferenceManager.getDefaultSharedPreferences(getActivity()).getString(thermoSettings.KEY_THERMO_UNIT.toString(),"°C"));
dataSet.setDrawCircles(false);
dataSet.setDrawValues(false);
dataSet.setLineWidth(2);
Expand Down Expand Up @@ -515,8 +521,7 @@ public void onSensorChanged(SensorEvent event) {
private void resetInstrumentData() {
tempValue = 0;
count = 0;
currentMin = 125;
currentMax = -40;
setUnit();
sum = 0;
sensor = null;
if (sensorManager != null) {
Expand Down Expand Up @@ -578,4 +583,26 @@ private void initiateThermoSensor(int type) {
break;
}
}

public void setUnit(){
if("°F".equals(ThermometerDataFragment.unit)){
currentMax = 257;
currentMin = -40;
thermometer.setMaxSpeed(PreferenceManager.getDefaultSharedPreferences(getActivity()).getFloat(thermoSensor.THERMOMETER_MAX_LIMIT, 257));
thermometer.setMinSpeed(PreferenceManager.getDefaultSharedPreferences(getActivity()).getFloat(thermoSensor.THERMOMETER_MIN_LIMIT,-40));
label_statAvg.setText(R.string.avg_thermo_fahrenheit);
label_statMax.setText(R.string.max_thermo_fahrenheit);
label_statMin.setText(R.string.min_thermo_fahrenheit);
thermometer.setUnit("°F");
}else{
currentMax = 125;
currentMin = -40;
thermometer.setMaxSpeed(PreferenceManager.getDefaultSharedPreferences(getActivity()).getFloat(thermoSensor.THERMOMETER_MAX_LIMIT, 125));
thermometer.setMinSpeed(PreferenceManager.getDefaultSharedPreferences(getActivity()).getFloat(thermoSensor.THERMOMETER_MIN_LIMIT,-40));
label_statAvg.setText(R.string.avg_thermo_celcius);
label_statMax.setText(R.string.max_thermo_celcius);
label_statMin.setText(R.string.min_thermo_celcius);
thermometer.setUnit("°C");
}
}
}
101 changes: 101 additions & 0 deletions app/src/main/java/io/pslab/fragment/ThermometerSettingsFragment.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
package io.pslab.fragment;

import android.annotation.SuppressLint;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.preference.CheckBoxPreference;
import android.support.v7.preference.EditTextPreference;
import android.support.v7.preference.ListPreference;
import android.support.v7.preference.PreferenceFragmentCompat;
import android.support.v7.preference.PreferenceManager;
import android.widget.Toast;

import io.pslab.R;
import io.pslab.others.PSLabPermission;

public class ThermometerSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener {

public static final String KEY_INCLUDE_LOCATION = "include_location_sensor_data";
public static final String KEY_UPDATE_PERIOD = "setting_thermo_update_period";
public static final String KEY_THERMO_SENSOR_TYPE = "setting_thermo_sensor_type";
public static final String KEY_THERMO_UNIT = "select_temp_unit";

private PSLabPermission psLabPermission;

private EditTextPreference updatePeriodPref;
private CheckBoxPreference locationPreference;
private ListPreference sensorTypePreference;
private SharedPreferences sharedPref;
private ListPreference unitPref;

@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.thermometer_settings, rootKey);
updatePeriodPref = (EditTextPreference) getPreferenceScreen().findPreference(KEY_UPDATE_PERIOD);
locationPreference = (CheckBoxPreference) getPreferenceScreen().findPreference(KEY_INCLUDE_LOCATION);
sensorTypePreference = (ListPreference) getPreferenceScreen().findPreference(KEY_THERMO_SENSOR_TYPE);
unitPref = (ListPreference) getPreferenceScreen().findPreference(KEY_THERMO_UNIT);
sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity());

psLabPermission = PSLabPermission.getInstance();
if (!psLabPermission.checkPermissions(getActivity(), PSLabPermission.MAP_PERMISSION)) {
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean(ThermometerSettingsFragment.KEY_INCLUDE_LOCATION, true);
editor.apply();
}
}

@Override
public void onResume() {
super.onResume();
locationPreference.setChecked(sharedPref.getBoolean(KEY_INCLUDE_LOCATION, true));
updatePeriodPref.setSummary(updatePeriodPref.getText() + " ms");
sensorTypePreference.setSummary(sensorTypePreference.getEntry());
unitPref.setSummary(unitPref.getEntry());
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}

@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}

@SuppressLint("ApplySharedPref")
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
switch (s) {
case KEY_INCLUDE_LOCATION:
if (locationPreference.isChecked()) {
psLabPermission.checkPermissions(
getActivity(), PSLabPermission.MAP_PERMISSION);
}
break;
case KEY_UPDATE_PERIOD:
try {
Integer updatePeriod = Integer.parseInt(updatePeriodPref.getText());
if (updatePeriod > 1000 || updatePeriod < 100) {
throw new NumberFormatException();
} else {
updatePeriodPref.setSummary(updatePeriod + " ms");
}
} catch (NumberFormatException e) {
Toast.makeText(getActivity(), getActivity().getResources().getString(R.string.update_period_msg), Toast.LENGTH_SHORT).show();
updatePeriodPref.setSummary("1000 ms");
updatePeriodPref.setText("1000");
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(s, "1000");
editor.commit();
}
break;
case KEY_THERMO_SENSOR_TYPE:
sensorTypePreference.setSummary(sensorTypePreference.getEntry());
break;
case KEY_THERMO_UNIT:
unitPref.setSummary(unitPref.getEntry());
break;
default:
break;
}
}
}
2 changes: 0 additions & 2 deletions app/src/main/java/io/pslab/models/PSLabSensor.java
Original file line number Diff line number Diff line change
Expand Up @@ -289,8 +289,6 @@ public boolean onPrepareOptionsMenu(Menu menu) {
stop.setVisible(startedPlay);
if (getSensorName().equals(getResources().getString(R.string.compass))) {
menu.findItem(R.id.settings).setVisible(false);
}else if(getSensorName().equals(getResources().getString(R.string.thermometer))){
menu.findItem(R.id.settings).setVisible(false);
}
return super.onPrepareOptionsMenu(menu);
}
Expand Down
10 changes: 5 additions & 5 deletions app/src/main/res/layout/activity_thermometer.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
<TextView
android:id="@+id/label_thermo_stat_max"
style="@style/thermo_meter_stat_heading"
android:text="@string/max_thermo" />
android:text="@string/max_thermo_celcius" />

<TextView
android:id="@+id/thermo_max"
Expand All @@ -42,7 +42,7 @@
<TextView
android:id="@+id/label_thermo_stat_min"
style="@style/thermo_meter_stat_heading"
android:text="@string/min_thermo" />
android:text="@string/min_thermo_celcius" />

<TextView
android:id="@+id/thermo_min"
Expand All @@ -51,7 +51,7 @@
<TextView
android:id="@+id/label_thermo_stat_avg"
style="@style/thermo_meter_stat_heading"
android:text="@string/avg_thermo" />
android:text="@string/avg_thermo_celcius" />

<TextView
android:id="@+id/thermo_avg"
Expand All @@ -75,7 +75,7 @@
app:sv_speedTextSize="@dimen/thermo_display_font_size"
app:sv_speedometerMode="NORMAL"
app:sv_textSize="@dimen/thermo_guage_font_size"
app:sv_unit="@string/thermo_unit"
app:sv_unit="@string/thermo_unit_celcius"
app:sv_unitTextColor="@color/black"/>

</LinearLayout>
Expand Down Expand Up @@ -114,7 +114,7 @@
<TextView
android:id="@+id/tv_label_left_yaxis_hmc_thermo"
style="@style/graph_y_axis_title_text"
android:text="@string/thermo_unit"
android:text="@string/thermo_unit_celcius"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
Expand Down
Loading