Skip to content

Commit fb82ed9

Browse files
committed
Added play/pause functionality
1 parent 4de3a46 commit fb82ed9

File tree

10 files changed

+130
-67
lines changed

10 files changed

+130
-67
lines changed

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

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public boolean onCreateOptionsMenu(Menu menu) {
114114
@Override
115115
public boolean onOptionsItemSelected(MenuItem item) {
116116
switch (item.getItemId()) {
117-
case R.id.record_pause_data:
117+
case R.id.record_data:
118118
if (ContextCompat.checkSelfPermission(this,
119119
Manifest.permission.WRITE_EXTERNAL_STORAGE)
120120
!= PackageManager.PERMISSION_GRANTED) {
@@ -154,7 +154,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
154154
break;
155155
case R.id.record_csv_data:
156156
if (isDataRecorded) {
157-
MenuItem item1 = menu.findItem(R.id.record_pause_data);
157+
MenuItem item1 = menu.findItem(R.id.record_data);
158158
item1.setIcon(R.drawable.record_icon);
159159

160160
// Export Data
@@ -203,19 +203,6 @@ public void onClick(DialogInterface dialogInterface, int i) {
203203
CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.nothing_to_export), null, null);
204204
}
205205
break;
206-
case R.id.delete_csv_data:
207-
if (isDataRecorded) {
208-
MenuItem item1 = menu.findItem(R.id.record_pause_data);
209-
item1.setIcon(R.drawable.record_icon);
210-
adapter.setRecordingStatus(false);
211-
recordData = false;
212-
isRecordingStarted = false;
213-
isDataRecorded = false;
214-
accLogger.deleteFile();
215-
CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.data_deleted), null, null);
216-
} else
217-
CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.nothing_to_delete), null, null);
218-
break;
219206
case R.id.show_map:
220207
if (ContextCompat.checkSelfPermission(this,
221208
Manifest.permission.WRITE_EXTERNAL_STORAGE)

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

Lines changed: 19 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ public class LuxMeterActivity extends AppCompatActivity {
5353
public boolean exportData = false;
5454
public boolean recordingStarted = false;
5555
public GPSLogger gpsLogger;
56-
public boolean locationPref;
5756
public CSVLogger luxLogger;
5857
private Menu menu;
5958

@@ -84,6 +83,8 @@ public class LuxMeterActivity extends AppCompatActivity {
8483
@BindView(R.id.custom_dialog_desc)
8584
TextView bottomSheetDesc;
8685
private boolean checkGpsOnResume = false;
86+
public boolean locationPref;
87+
private LuxMeterFragmentData selectedFragment;
8788

8889
@Override
8990
protected void onCreate(Bundle savedInstanceState) {
@@ -121,7 +122,7 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
121122
});
122123
try {
123124
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
124-
Fragment selectedFragment = LuxMeterFragmentData.newInstance();
125+
selectedFragment = LuxMeterFragmentData.newInstance();
125126
transaction.replace(R.id.frame_layout_lux_meter, selectedFragment, selectedFragment.getTag());
126127
transaction.commit();
127128
} catch (Exception e) {
@@ -198,15 +199,22 @@ public boolean onTouchEvent(MotionEvent event) {
198199
@Override
199200
public boolean onCreateOptionsMenu(Menu menu) {
200201
MenuInflater inflater = getMenuInflater();
201-
inflater.inflate(R.menu.data_log_menu, menu);
202+
inflater.inflate(R.menu.lux_data_log_menu, menu);
202203
this.menu = menu;
203204
return true;
204205
}
205206

207+
@Override
208+
public boolean onPrepareOptionsMenu(Menu menu) {
209+
MenuItem item = menu.findItem(R.id.record_data);
210+
item.setIcon(recordData? R.drawable.ic_record_stop: R.drawable.ic_record);
211+
return super.onPrepareOptionsMenu(menu);
212+
}
213+
206214
@Override
207215
public boolean onOptionsItemSelected(MenuItem item) {
208216
switch (item.getItemId()) {
209-
case R.id.record_pause_data:
217+
case R.id.record_data:
210218
if (ContextCompat.checkSelfPermission(this,
211219
Manifest.permission.WRITE_EXTERNAL_STORAGE)
212220
!= PackageManager.PERMISSION_GRANTED) {
@@ -215,16 +223,15 @@ public boolean onOptionsItemSelected(MenuItem item) {
215223
return true;
216224
}
217225
if (recordData) {
218-
item.setIcon(R.drawable.record_icon);
226+
((LuxMeterFragmentData)selectedFragment).stopSensorFetching();
227+
invalidateOptionsMenu();
219228
recordData = false;
220-
CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.data_recording_paused), null, null);
221229
} else {
222-
item.setIcon(R.drawable.pause_icon);
223-
if (!recordingStarted) {
224-
luxLogger = new CSVLogger(getString(R.string.lux_meter));
225-
luxLogger.writeCSVFile("Timestamp,X,Y\n");
226-
recordingStarted = true;
227-
}
230+
luxLogger = new CSVLogger(getString(R.string.lux_meter));
231+
luxLogger.writeCSVFile("Timestamp,X,Y,Z\n");
232+
recordData = true;
233+
((LuxMeterFragmentData)selectedFragment).startSensorFetching();
234+
invalidateOptionsMenu();
228235
if (locationPref) {
229236
gpsLogger = new GPSLogger(this, (LocationManager) getSystemService(Context.LOCATION_SERVICE));
230237
if (gpsLogger.isGPSEnabled()) {
@@ -240,28 +247,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
240247
}
241248
}
242249
break;
243-
case R.id.record_csv_data:
244-
if (recordingStarted) {
245-
MenuItem item1 = menu.findItem(R.id.record_pause_data);
246-
item1.setIcon(R.drawable.record_icon);
247-
exportData = true;
248-
recordingStarted = false;
249-
recordData = false;
250-
} else {
251-
CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.nothing_to_export), null, null);
252-
}
253-
break;
254-
case R.id.delete_csv_data:
255-
if (recordingStarted) {
256-
MenuItem item1 = menu.findItem(R.id.record_pause_data);
257-
item1.setIcon(R.drawable.record_icon);
258-
luxLogger.deleteFile();
259-
recordingStarted = false;
260-
recordData = false;
261-
CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.data_deleted), null, null);
262-
} else
263-
CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.nothing_to_delete), null, null);
264-
break;
265250
case R.id.show_map:
266251
if (ContextCompat.checkSelfPermission(this,
267252
Manifest.permission.WRITE_EXTERNAL_STORAGE)

app/src/main/java/io/pslab/fragment/LuxMeterFragmentData.java

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import android.os.Bundle;
1414
import android.support.design.widget.CoordinatorLayout;
1515
import android.support.v4.app.Fragment;
16+
import android.support.v4.content.ContextCompat;
1617
import android.view.LayoutInflater;
1718
import android.view.View;
1819
import android.view.ViewGroup;
@@ -82,6 +83,9 @@ public class LuxMeterFragmentData extends Fragment {
8283
private Unbinder unbinder;
8384
private long previousTimeElapsed = (System.currentTimeMillis() - startTime) / 1000;
8485
private GPSLogger gpsLogger;
86+
private Thread dataThread;
87+
private Runnable runnable;
88+
private long previousRunTime = 0;
8589

8690
public static LuxMeterFragmentData newInstance() {
8791
return new LuxMeterFragmentData();
@@ -98,6 +102,7 @@ public void onCreate(Bundle savedInstanceState) {
98102
super.onCreate(savedInstanceState);
99103
setRetainInstance(true);
100104
currentMin = 10000;
105+
currentMax = 30;
101106
entries = new ArrayList<>();
102107
switch (sensorType) {
103108
case 0:
@@ -135,7 +140,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
135140
Bundle savedInstanceState) {
136141
View view = inflater.inflate(R.layout.fragment_lux_meter_data, container, false);
137142
unbinder = ButterKnife.bind(this, view);
138-
Runnable runnable = new Runnable() {
143+
runnable = new Runnable() {
139144
@Override
140145
public void run() {
141146
if (flag == 0) {
@@ -189,8 +194,6 @@ public void run() {
189194
}
190195
}
191196
};
192-
Thread dataThread = new Thread(runnable);
193-
dataThread.start();
194197

195198
lightMeter.setMaxSpeed(10000);
196199

@@ -304,7 +307,7 @@ private void visualizeData() {
304307
else
305308
lightMeter.setPointerColor(Color.WHITE);
306309

307-
timeElapsed = (System.currentTimeMillis() - startTime) / 1000;
310+
timeElapsed = ((System.currentTimeMillis() - startTime) / 1000);
308311
if (timeElapsed != previousTimeElapsed) {
309312
previousTimeElapsed = timeElapsed;
310313
entries.add(new Entry((float) timeElapsed, data));
@@ -370,7 +373,7 @@ public void onClick(DialogInterface dialogInterface, int i) {
370373

371374
mChart.setData(data);
372375
mChart.notifyDataSetChanged();
373-
mChart.setVisibleXRangeMaximum(20);
376+
mChart.setVisibleXRangeMaximum(80);
374377
mChart.moveViewToX(data.getEntryCount());
375378
mChart.invalidate();
376379
}
@@ -386,4 +389,27 @@ private void unRegisterListener() {
386389
sensorManager.unregisterListener(this);
387390
}
388391
}
392+
393+
public void startSensorFetching() {
394+
entries.clear();
395+
mChart.invalidate();
396+
mChart.clear();
397+
monitor = true;
398+
flag = 0;
399+
lightMeter.setWithTremble(true);
400+
dataThread = new Thread(runnable);
401+
dataThread.start();
402+
}
403+
404+
public void stopSensorFetching() {
405+
monitor = false;
406+
if (sensor != null && sensorDataFetch != null) {
407+
sensorManager.unregisterListener(sensorDataFetch);
408+
sensorDataFetch.cancel(true);
409+
lightMeter.setWithTremble(false);
410+
lightMeter.speedTo(0f, 500);
411+
lightMeter.setPointerColor(ContextCompat.getColor(getActivity(), R.color.white));
412+
}
413+
}
414+
389415
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<vector android:height="24dp" android:tint="#F9FBFF"
2+
android:viewportHeight="24.0" android:viewportWidth="24.0"
3+
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
4+
<path android:fillColor="#FF000000" android:pathData="M6,19h4L10,5L6,5v14zM14,5v14h4L18,5h-4z"/>
5+
</vector>

app/src/main/res/drawable/ic_play_arrow_black_24dp.xml

Lines changed: 0 additions & 9 deletions
This file was deleted.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<vector android:height="24dp" android:viewportHeight="512"
2+
android:viewportWidth="512" android:width="24dp"
3+
xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android">
4+
<path android:fillColor="#303C42" android:pathData="M256,0C114.833,0 0,114.844 0,256s114.833,256 256,256s256,-114.844 256,-256S397.167,0 256,0z"/>
5+
<path android:fillColor="#E6E6E6" android:pathData="M256,490.667C126.604,490.667 21.333,385.396 21.333,256S126.604,21.333 256,21.333S490.667,126.604 490.667,256S385.396,490.667 256,490.667z"/>
6+
<path android:fillColor="#303C42" android:pathData="M256,256m-106.667,0a106.667,106.667 0,1 1,213.334 0a106.667,106.667 0,1 1,-213.334 0"/>
7+
<path android:fillColor="#D32F2F" android:pathData="M256,256m-85.333,0a85.333,85.333 0,1 1,170.666 0a85.333,85.333 0,1 1,-170.666 0"/>
8+
<path android:fillAlpha="0.1" android:fillColor="#FF000000"
9+
android:pathData="M304.389,185.844c2.978,8.673 4.944,17.819 4.944,27.49c0,47.052 -38.271,85.333 -85.333,85.333c-17.978,0 -34.621,-5.65 -48.389,-15.177c11.508,33.527 43,57.844 80.389,57.844c47.063,0 85.333,-38.281 85.333,-85.333C341.333,226.922 326.665,201.258 304.389,185.844z" android:strokeAlpha="0.1"/>
10+
<path android:pathData="M335.12,185.133c16.935,18.888 27.547,43.565 27.547,70.867c0,58.813 -47.854,106.667 -106.667,106.667c-27.426,0 -52.216,-10.695 -71.134,-27.767l-0.194,0.214l143.926,143.926c70.947,-23.155 127.06,-79.21 150.319,-150.109L335.12,185.133z">
11+
<aapt:attr name="android:fillColor">
12+
<gradient android:endX="421.64627" android:endY="421.90463"
13+
android:startX="259.77988" android:startY="260.0169" android:type="linear">
14+
<item android:color="#19000000" android:offset="0"/>
15+
<item android:color="#00000000" android:offset="1"/>
16+
</gradient>
17+
</aapt:attr>
18+
</path>
19+
<path android:pathData="M256,0C114.833,0 0,114.844 0,256s114.833,256 256,256s256,-114.844 256,-256S397.167,0 256,0z">
20+
<aapt:attr name="android:fillColor">
21+
<gradient android:endX="488.00992" android:endY="364.19592"
22+
android:startX="23.993576" android:startY="147.8464" android:type="linear">
23+
<item android:color="#33FFFFFF" android:offset="0"/>
24+
<item android:color="#00FFFFFF" android:offset="1"/>
25+
</gradient>
26+
</aapt:attr>
27+
</path>
28+
</vector>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<vector android:height="24dp" android:viewportHeight="512"
2+
android:viewportWidth="512" android:width="24dp"
3+
xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android">
4+
<path android:fillColor="#303C42" android:pathData="M256,0C114.833,0 0,114.844 0,256s114.833,256 256,256s256,-114.844 256,-256S397.167,0 256,0z"/>
5+
<path android:fillColor="#E6E6E6" android:pathData="M256,490.667C126.604,490.667 21.333,385.396 21.333,256S126.604,21.333 256,21.333S490.667,126.604 490.667,256S385.396,490.667 256,490.667z"/>
6+
<path android:pathData="M335.12,185.133c16.935,18.888 27.547,43.565 27.547,70.867c0,58.813 -47.854,106.667 -106.667,106.667c-27.426,0 -52.216,-10.695 -71.134,-27.767l-0.194,0.214l143.926,143.926c70.947,-23.155 127.06,-79.21 150.319,-150.109L335.12,185.133z">
7+
<aapt:attr name="android:fillColor">
8+
<gradient android:endX="421.64627" android:endY="421.90463"
9+
android:startX="259.77988" android:startY="260.0169" android:type="linear">
10+
<item android:color="#19000000" android:offset="0"/>
11+
<item android:color="#00000000" android:offset="1"/>
12+
</gradient>
13+
</aapt:attr>
14+
</path>
15+
<path android:fillAlpha="1" android:fillColor="#d32f2f"
16+
android:pathData="M152.962,157.738h210.853v209.898h-210.853z"
17+
android:strokeAlpha="1" android:strokeColor="#303c42" android:strokeWidth="17.3420372"/>
18+
<path android:fillAlpha="0.09" android:fillColor="#303c42"
19+
android:pathData="M235.94,362.985 L355.032,232.119 356.299,361.217Z"
20+
android:strokeAlpha="0.09" android:strokeColor="#303c42"
21+
android:strokeLineCap="butt" android:strokeLineJoin="miter" android:strokeWidth="1.5669961"/>
22+
</vector>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<shape xmlns:android="http://schemas.android.com/apk/res/android">
33
<solid android:color="#FFFFFF"/>
4-
<stroke android:width="3dip" android:color="#B1BCBE" />
4+
<stroke android:width="1dip" android:color="@color/colorPrimary" />
55
<corners android:radius="10dip"/>
66
<padding android:left="0dip" android:top="0dip" android:right="0dip" android:bottom="0dip" />
77
</shape>

app/src/main/res/layout/fragment_lux_meter_data.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@
176176
android:layout_marginLeft="@dimen/card_margin"
177177
android:layout_marginRight="@dimen/card_margin"
178178
android:layout_weight="@dimen/weight_1"
179-
android:background="@drawable/rounded_custom_border"
179+
android:background="@drawable/control_edittext"
180180
android:gravity="center_vertical"
181181
android:textAlignment="center"
182182
android:textColor="@color/black"
@@ -190,7 +190,7 @@
190190
android:layout_marginLeft="@dimen/card_margin"
191191
android:layout_marginRight="@dimen/card_margin"
192192
android:layout_weight="@dimen/weight_1"
193-
android:background="@drawable/rounded_custom_border"
193+
android:background="@drawable/control_edittext"
194194
android:gravity="center_vertical"
195195
android:textAlignment="center"
196196
android:textColor="@color/black"
@@ -204,7 +204,7 @@
204204
android:layout_marginLeft="@dimen/card_margin"
205205
android:layout_marginRight="@dimen/card_margin"
206206
android:layout_weight="@dimen/weight_1"
207-
android:background="@drawable/rounded_custom_border"
207+
android:background="@drawable/control_edittext"
208208
android:gravity="center_vertical"
209209
android:textAlignment="center"
210210
android:textColor="@color/black"
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<menu xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto">
4+
<item
5+
android:id="@+id/record_data"
6+
android:icon="@drawable/ic_record"
7+
android:title="@string/record_csv_data"
8+
app:showAsAction="always" />
9+
<item
10+
android:id="@+id/show_map"
11+
android:icon="@drawable/menu_icon_map"
12+
android:title="@string/view_map"
13+
app:showAsAction="never" />
14+
<item
15+
android:id="@+id/settings"
16+
android:title="@string/nav_settings"
17+
app:showAsAction="never" />
18+
</menu>
19+

0 commit comments

Comments
 (0)