diff --git a/app/src/main/java/io/pslab/activity/LuxMeterActivity.java b/app/src/main/java/io/pslab/activity/LuxMeterActivity.java
index 34509c6e0..7340f25c1 100644
--- a/app/src/main/java/io/pslab/activity/LuxMeterActivity.java
+++ b/app/src/main/java/io/pslab/activity/LuxMeterActivity.java
@@ -53,7 +53,6 @@ public class LuxMeterActivity extends AppCompatActivity {
public boolean exportData = false;
public boolean recordingStarted = false;
public GPSLogger gpsLogger;
- public boolean locationPref;
public CSVLogger luxLogger;
private Menu menu;
@@ -84,6 +83,8 @@ public class LuxMeterActivity extends AppCompatActivity {
@BindView(R.id.custom_dialog_desc)
TextView bottomSheetDesc;
private boolean checkGpsOnResume = false;
+ public boolean locationPref;
+ private LuxMeterFragmentData selectedFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -121,7 +122,7 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
});
try {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
- Fragment selectedFragment = LuxMeterFragmentData.newInstance();
+ selectedFragment = LuxMeterFragmentData.newInstance();
transaction.replace(R.id.frame_layout_lux_meter, selectedFragment, selectedFragment.getTag());
transaction.commit();
} catch (Exception e) {
@@ -198,15 +199,22 @@ public boolean onTouchEvent(MotionEvent event) {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.data_log_menu, menu);
+ inflater.inflate(R.menu.lux_data_log_menu, menu);
this.menu = menu;
return true;
}
+ @Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
+ MenuItem item = menu.findItem(R.id.record_data);
+ item.setIcon(recordData? R.drawable.ic_record_stop_white: R.drawable.ic_record_white);
+ return super.onPrepareOptionsMenu(menu);
+ }
+
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
- case R.id.record_pause_data:
+ case R.id.record_data:
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
@@ -215,16 +223,15 @@ public boolean onOptionsItemSelected(MenuItem item) {
return true;
}
if (recordData) {
- item.setIcon(R.drawable.record_icon);
+ ((LuxMeterFragmentData)selectedFragment).stopSensorFetching();
+ invalidateOptionsMenu();
recordData = false;
- CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.data_recording_paused), null, null);
} else {
- item.setIcon(R.drawable.pause_icon);
- if (!recordingStarted) {
- luxLogger = new CSVLogger(getString(R.string.lux_meter));
- luxLogger.writeCSVFile("Timestamp,X,Y\n");
- recordingStarted = true;
- }
+ luxLogger = new CSVLogger(getString(R.string.lux_meter));
+ luxLogger.writeCSVFile("Timestamp,X,Y,Z\n");
+ recordData = true;
+ ((LuxMeterFragmentData)selectedFragment).startSensorFetching();
+ invalidateOptionsMenu();
if (locationPref) {
gpsLogger = new GPSLogger(this, (LocationManager) getSystemService(Context.LOCATION_SERVICE));
if (gpsLogger.isGPSEnabled()) {
@@ -240,28 +247,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
}
}
break;
- case R.id.record_csv_data:
- if (recordingStarted) {
- MenuItem item1 = menu.findItem(R.id.record_pause_data);
- item1.setIcon(R.drawable.record_icon);
- exportData = true;
- recordingStarted = false;
- recordData = false;
- } else {
- CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.nothing_to_export), null, null);
- }
- break;
- case R.id.delete_csv_data:
- if (recordingStarted) {
- MenuItem item1 = menu.findItem(R.id.record_pause_data);
- item1.setIcon(R.drawable.record_icon);
- luxLogger.deleteFile();
- recordingStarted = false;
- recordData = false;
- CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.data_deleted), null, null);
- } else
- CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.nothing_to_delete), null, null);
- break;
case R.id.show_map:
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
diff --git a/app/src/main/java/io/pslab/fragment/LuxMeterFragmentData.java b/app/src/main/java/io/pslab/fragment/LuxMeterFragmentData.java
index f33296488..5671879bb 100644
--- a/app/src/main/java/io/pslab/fragment/LuxMeterFragmentData.java
+++ b/app/src/main/java/io/pslab/fragment/LuxMeterFragmentData.java
@@ -13,6 +13,7 @@
import android.os.Bundle;
import android.support.design.widget.CoordinatorLayout;
import android.support.v4.app.Fragment;
+import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -82,6 +83,7 @@ public class LuxMeterFragmentData extends Fragment {
private Unbinder unbinder;
private long previousTimeElapsed = (System.currentTimeMillis() - startTime) / 1000;
private GPSLogger gpsLogger;
+ private Runnable runnable;
public static LuxMeterFragmentData newInstance() {
return new LuxMeterFragmentData();
@@ -98,6 +100,7 @@ public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
currentMin = 10000;
+ currentMax = 30;
entries = new ArrayList<>();
switch (sensorType) {
case 0:
@@ -135,7 +138,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_lux_meter_data, container, false);
unbinder = ButterKnife.bind(this, view);
- Runnable runnable = new Runnable() {
+ runnable = new Runnable() {
@Override
public void run() {
if (flag == 0) {
@@ -189,8 +192,6 @@ public void run() {
}
}
};
- Thread dataThread = new Thread(runnable);
- dataThread.start();
lightMeter.setMaxSpeed(10000);
@@ -304,7 +305,7 @@ private void visualizeData() {
else
lightMeter.setPointerColor(Color.WHITE);
- timeElapsed = (System.currentTimeMillis() - startTime) / 1000;
+ timeElapsed = ((System.currentTimeMillis() - startTime) / 1000);
if (timeElapsed != previousTimeElapsed) {
previousTimeElapsed = timeElapsed;
entries.add(new Entry((float) timeElapsed, data));
@@ -370,7 +371,7 @@ public void onClick(DialogInterface dialogInterface, int i) {
mChart.setData(data);
mChart.notifyDataSetChanged();
- mChart.setVisibleXRangeMaximum(20);
+ mChart.setVisibleXRangeMaximum(80);
mChart.moveViewToX(data.getEntryCount());
mChart.invalidate();
}
@@ -386,4 +387,27 @@ private void unRegisterListener() {
sensorManager.unregisterListener(this);
}
}
+
+ public void startSensorFetching() {
+ entries.clear();
+ mChart.invalidate();
+ mChart.clear();
+ monitor = true;
+ flag = 0;
+ lightMeter.setWithTremble(true);
+ Thread dataThread = new Thread(runnable);
+ dataThread.start();
+ }
+
+ public void stopSensorFetching() {
+ monitor = false;
+ if (sensor != null && sensorDataFetch != null) {
+ sensorManager.unregisterListener(sensorDataFetch);
+ sensorDataFetch.cancel(true);
+ lightMeter.setWithTremble(false);
+ lightMeter.speedTo(0f, 500);
+ lightMeter.setPointerColor(ContextCompat.getColor(getActivity(), R.color.white));
+ }
+ }
+
}
diff --git a/app/src/main/res/drawable/ic_play_arrow_black_24dp.xml b/app/src/main/res/drawable/ic_play_arrow_black_24dp.xml
deleted file mode 100644
index bf9b895ac..000000000
--- a/app/src/main/res/drawable/ic_play_arrow_black_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-