Skip to content

Commit 870c61f

Browse files
CloudyPadmalmakoteq
authored andcommitted
feat: Dust Sensor (fossasia#1986)
update: limits
1 parent bb964e8 commit 870c61f

File tree

14 files changed

+1112
-69
lines changed

14 files changed

+1112
-69
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@
103103
android:name=".activity.GasSensorActivity"
104104
android:screenOrientation="portrait" />
105105
<activity android:name=".activity.MapsActivity" />
106+
<activity
107+
android:name=".activity.DustSensorActivity"
108+
android:screenOrientation="portrait"/>
106109

107110
<receiver android:name=".receivers.USBDetachReceiver" />
108111

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
package io.pslab.activity;
2+
3+
import android.content.SharedPreferences;
4+
import android.preference.PreferenceManager;
5+
import android.support.v4.app.Fragment;
6+
7+
import io.pslab.R;
8+
import io.pslab.fragment.DustSensorDataFragment;
9+
import io.pslab.fragment.DustSensorSettingsFragment;
10+
import io.pslab.models.DustSensorData;
11+
import io.pslab.models.PSLabSensor;
12+
import io.pslab.models.SensorDataBlock;
13+
import io.pslab.others.LocalDataLog;
14+
import io.realm.RealmObject;
15+
import io.realm.RealmResults;
16+
17+
public class DustSensorActivity extends PSLabSensor {
18+
19+
private static final String PREF_NAME = "customDialogPreference";
20+
public RealmResults<DustSensorData> recordedDustSensorData;
21+
22+
@Override
23+
public int getMenu() {
24+
return R.menu.sensor_data_log_menu;
25+
}
26+
27+
@Override
28+
public SharedPreferences getStateSettings() {
29+
return this.getSharedPreferences(PREF_NAME, MODE_PRIVATE);
30+
}
31+
32+
@Override
33+
public String getFirstTimeSettingID() {
34+
return "DustSensorFirstTime";
35+
}
36+
37+
@Override
38+
public String getSensorName() {
39+
return getResources().getString(R.string.dust_sensor);
40+
}
41+
42+
@Override
43+
public int getGuideTitle() {
44+
return R.string.dust_sensor;
45+
}
46+
47+
@Override
48+
public int getGuideAbstract() {
49+
return R.string.dust_sensor_intro;
50+
}
51+
52+
@Override
53+
public int getGuideSchematics() {
54+
return 0;
55+
}
56+
57+
@Override
58+
public int getGuideDescription() {
59+
return R.string.dust_sensor_desc;
60+
}
61+
62+
@Override
63+
public int getGuideExtraContent() {
64+
return 0;
65+
}
66+
67+
@Override
68+
public void recordSensorDataBlockID(SensorDataBlock block) {
69+
realm.beginTransaction();
70+
realm.copyToRealm(block);
71+
realm.commitTransaction();
72+
}
73+
74+
@Override
75+
public void recordSensorData(RealmObject sensorData) {
76+
realm.beginTransaction();
77+
realm.copyToRealm((DustSensorData) sensorData);
78+
realm.commitTransaction();
79+
}
80+
81+
@Override
82+
public void stopRecordSensorData() {
83+
LocalDataLog.with().refresh();
84+
}
85+
86+
@Override
87+
public Fragment getSensorFragment() {
88+
return DustSensorDataFragment.newInstance();
89+
}
90+
91+
@Override
92+
protected void onResume() {
93+
super.onResume();
94+
reinstateConfigurations();
95+
}
96+
97+
private void reinstateConfigurations() {
98+
SharedPreferences luxMeterConfigurations;
99+
luxMeterConfigurations = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
100+
locationEnabled = luxMeterConfigurations.getBoolean(DustSensorSettingsFragment.KEY_INCLUDE_LOCATION, true);
101+
DustSensorDataFragment.setParameters(
102+
getValueFromText(luxMeterConfigurations.getString(DustSensorSettingsFragment.KEY_HIGH_LIMIT, "4.0"),
103+
0.0, 5.0),
104+
getValueFromText(luxMeterConfigurations.getString(DustSensorSettingsFragment.KEY_UPDATE_PERIOD, "1000"),
105+
100, 1000),
106+
luxMeterConfigurations.getString(DustSensorSettingsFragment.KEY_DUST_SENSOR_TYPE, "0"));
107+
}
108+
109+
private int getValueFromText(String strValue, int lowerBound, int upperBound) {
110+
if (strValue.isEmpty()) return lowerBound;
111+
int value = Integer.parseInt(strValue);
112+
if (value > upperBound) return upperBound;
113+
else if (value < lowerBound) return lowerBound;
114+
else return value;
115+
}
116+
117+
private double getValueFromText(String strValue, double lowerBound, double upperBound) {
118+
if (strValue.isEmpty()) return lowerBound;
119+
double value = Double.parseDouble(strValue);
120+
if (value > upperBound) return upperBound;
121+
else if (value < lowerBound) return lowerBound;
122+
else return value;
123+
}
124+
125+
@Override
126+
public void getDataFromDataLogger() {
127+
if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) {
128+
viewingData = true;
129+
recordedDustSensorData = LocalDataLog.with()
130+
.getBlockOfDustSensorRecords(getIntent().getExtras().getLong(DATA_BLOCK));
131+
String title = titleFormat.format(recordedDustSensorData.get(0).getTime());
132+
getSupportActionBar().setTitle(title);
133+
}
134+
}
135+
}

app/src/main/java/io/pslab/activity/SettingsActivity.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.pslab.fragment.AccelerometerSettingsFragment;
2121
import io.pslab.fragment.BaroMeterSettingsFragment;
2222
import io.pslab.fragment.CompassSettingsFragment;
23+
import io.pslab.fragment.DustSensorSettingsFragment;
2324
import io.pslab.fragment.GyroscopeSettingsFragment;
2425
import io.pslab.fragment.LuxMeterSettingFragment;
2526
import io.pslab.fragment.MultimeterSettingsFragment;
@@ -80,6 +81,9 @@ protected void onCreate(Bundle savedInstanceState) {
8081
case PSLabSensor.COMPASS_CONFIGURATIONS:
8182
fragment = new CompassSettingsFragment();
8283
break;
84+
case PSLabSensor.DUSTSENSOR_CONFIGURATIONS:
85+
fragment = new DustSensorSettingsFragment();
86+
break;
8387
default:
8488
fragment = new SettingsFragment();
8589
break;

0 commit comments

Comments
 (0)