Skip to content

Commit 61374ef

Browse files
committed
Added play/pause functionality
1 parent a762b55 commit 61374ef

File tree

8 files changed

+57
-20
lines changed

8 files changed

+57
-20
lines changed

app/src/main/java/org/fossasia/pslab/activity/LuxMeterActivity.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public class LuxMeterActivity extends AppCompatActivity {
7878
public GPSLogger gpsLogger;
7979
private boolean checkGpsOnResume = false;
8080
public boolean locationPref;
81+
private LuxMeterFragmentData selectedFragment;
8182

8283
@Override
8384
protected void onCreate(Bundle savedInstanceState) {
@@ -115,7 +116,7 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
115116
});
116117
try {
117118
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
118-
Fragment selectedFragment = LuxMeterFragmentData.newInstance();
119+
selectedFragment = LuxMeterFragmentData.newInstance();
119120
transaction.replace(R.id.frame_layout_lux_meter, selectedFragment, selectedFragment.getTag());
120121
transaction.commit();
121122
} catch (Exception e) {
@@ -196,6 +197,13 @@ public boolean onCreateOptionsMenu(Menu menu) {
196197
return true;
197198
}
198199

200+
@Override
201+
public boolean onPrepareOptionsMenu(Menu menu) {
202+
MenuItem item = menu.findItem(R.id.save_csv_data);
203+
item.setIcon(saveData? R.drawable.ic_pause_white_24dp: R.drawable.ic_play_arrow_white_24dp);
204+
return super.onPrepareOptionsMenu(menu);
205+
}
206+
199207
@Override
200208
public boolean onOptionsItemSelected(MenuItem item) {
201209
switch (item.getItemId()) {
@@ -208,8 +216,12 @@ public boolean onOptionsItemSelected(MenuItem item) {
208216
return true;
209217
}
210218
if (saveData) {
219+
((LuxMeterFragmentData)selectedFragment).stopSensorFetching();
220+
invalidateOptionsMenu();
211221
saveData = false;
212222
} else {
223+
((LuxMeterFragmentData)selectedFragment).startSensorFetching();
224+
invalidateOptionsMenu();
213225
if (locationPref) {
214226
gpsLogger = new GPSLogger(this, (LocationManager) getSystemService(Context.LOCATION_SERVICE));
215227
if (gpsLogger.isGPSEnabled()) {

app/src/main/java/org/fossasia/pslab/fragment/LuxMeterFragmentData.java

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import android.os.Bundle;
1313
import android.support.design.widget.CoordinatorLayout;
1414
import android.support.v4.app.Fragment;
15+
import android.support.v4.content.ContextCompat;
1516
import android.view.LayoutInflater;
1617
import android.view.View;
1718
import android.view.ViewGroup;
@@ -83,6 +84,9 @@ public class LuxMeterFragmentData extends Fragment {
8384
private boolean logged = false, writeHeader = false;
8485
private long previousTimeElapsed = (System.currentTimeMillis() - startTime) / 1000;
8586
private GPSLogger gpsLogger;
87+
private Thread dataThread;
88+
private Runnable runnable;
89+
private long previousRunTime = 0;
8690

8791
public static LuxMeterFragmentData newInstance() {
8892
return new LuxMeterFragmentData();
@@ -99,6 +103,7 @@ public void onCreate(Bundle savedInstanceState) {
99103
super.onCreate(savedInstanceState);
100104
setRetainInstance(true);
101105
currentMin = 10000;
106+
currentMax = 30;
102107
entries = new ArrayList<>();
103108
switch (sensorType) {
104109
case 0:
@@ -136,7 +141,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
136141
Bundle savedInstanceState) {
137142
View view = inflater.inflate(R.layout.fragment_lux_meter_data, container, false);
138143
unbinder = ButterKnife.bind(this, view);
139-
Runnable runnable = new Runnable() {
144+
runnable = new Runnable() {
140145
@Override
141146
public void run() {
142147
if (flag == 0) {
@@ -190,8 +195,6 @@ public void run() {
190195
}
191196
}
192197
};
193-
Thread dataThread = new Thread(runnable);
194-
dataThread.start();
195198

196199
lightMeter.setMaxSpeed(10000);
197200

@@ -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) + previousRunTime;
308311
if (timeElapsed != previousTimeElapsed) {
309312
previousTimeElapsed = timeElapsed;
310313
entries.add(new Entry((float) timeElapsed, data));
@@ -371,7 +374,7 @@ public void onClick(DialogInterface dialogInterface, int i) {
371374

372375
mChart.setData(data);
373376
mChart.notifyDataSetChanged();
374-
mChart.setVisibleXRangeMaximum(20);
377+
mChart.setVisibleXRangeMaximum(80);
375378
mChart.moveViewToX(data.getEntryCount());
376379
mChart.invalidate();
377380
}
@@ -387,4 +390,25 @@ private void unRegisterListener() {
387390
sensorManager.unregisterListener(this);
388391
}
389392
}
393+
394+
public void startSensorFetching() {
395+
monitor = true;
396+
flag = 0;
397+
lightMeter.setWithTremble(true);
398+
dataThread = new Thread(runnable);
399+
dataThread.start();
400+
}
401+
402+
public void stopSensorFetching() {
403+
monitor = false;
404+
if (sensor != null && sensorDataFetch != null) {
405+
sensorManager.unregisterListener(sensorDataFetch);
406+
sensorDataFetch.cancel(true);
407+
lightMeter.setWithTremble(false);
408+
lightMeter.speedTo(0f, 500);
409+
lightMeter.setPointerColor(ContextCompat.getColor(getActivity(), R.color.white));
410+
}
411+
previousRunTime = previousTimeElapsed;
412+
}
413+
390414
}
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: 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="M8,5v14l11,-7z"/>
5+
</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"

app/src/main/res/menu/data_log_menu.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
xmlns:app="http://schemas.android.com/apk/res-auto">
44
<item
55
android:id="@+id/save_csv_data"
6-
android:icon="@drawable/menu_icon_save"
6+
android:icon="@drawable/ic_play_arrow_white_24dp"
77
android:title="@string/save_csv_data"
88
app:showAsAction="ifRoom" />
99
<item

0 commit comments

Comments
 (0)