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 @@ - - - diff --git a/app/src/main/res/drawable/ic_record_stop_white.xml b/app/src/main/res/drawable/ic_record_stop_white.xml new file mode 100644 index 000000000..ff13e3487 --- /dev/null +++ b/app/src/main/res/drawable/ic_record_stop_white.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_record_white.xml b/app/src/main/res/drawable/ic_record_white.xml new file mode 100644 index 000000000..ec6323806 --- /dev/null +++ b/app/src/main/res/drawable/ic_record_white.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/rounded_custom_border.xml b/app/src/main/res/drawable/rounded_custom_border.xml index 17b45e5cc..e7ad4668f 100644 --- a/app/src/main/res/drawable/rounded_custom_border.xml +++ b/app/src/main/res/drawable/rounded_custom_border.xml @@ -1,7 +1,7 @@ - + diff --git a/app/src/main/res/layout/fragment_lux_meter_data.xml b/app/src/main/res/layout/fragment_lux_meter_data.xml index ad997bb10..420e3171d 100644 --- a/app/src/main/res/layout/fragment_lux_meter_data.xml +++ b/app/src/main/res/layout/fragment_lux_meter_data.xml @@ -176,7 +176,7 @@ android:layout_marginLeft="@dimen/card_margin" android:layout_marginRight="@dimen/card_margin" android:layout_weight="@dimen/weight_1" - android:background="@drawable/rounded_custom_border" + android:background="@drawable/control_edittext" android:gravity="center_vertical" android:textAlignment="center" android:textColor="@color/black" @@ -190,7 +190,7 @@ android:layout_marginLeft="@dimen/card_margin" android:layout_marginRight="@dimen/card_margin" android:layout_weight="@dimen/weight_1" - android:background="@drawable/rounded_custom_border" + android:background="@drawable/control_edittext" android:gravity="center_vertical" android:textAlignment="center" android:textColor="@color/black" @@ -204,7 +204,7 @@ android:layout_marginLeft="@dimen/card_margin" android:layout_marginRight="@dimen/card_margin" android:layout_weight="@dimen/weight_1" - android:background="@drawable/rounded_custom_border" + android:background="@drawable/control_edittext" android:gravity="center_vertical" android:textAlignment="center" android:textColor="@color/black" diff --git a/app/src/main/res/menu/lux_data_log_menu.xml b/app/src/main/res/menu/lux_data_log_menu.xml new file mode 100644 index 000000000..494ad9931 --- /dev/null +++ b/app/src/main/res/menu/lux_data_log_menu.xml @@ -0,0 +1,19 @@ + + + + + + +