Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 62 additions & 17 deletions app/src/main/java/io/pslab/activity/LuxMeterActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import io.pslab.R;
import io.pslab.fragment.LuxMeterFragmentConfig;
import io.pslab.fragment.LuxMeterFragmentData;
import io.pslab.others.CSVLogger;
import io.pslab.others.CustomSnackBar;
import io.pslab.others.GPSLogger;
import io.pslab.others.MathUtils;
Expand All @@ -43,19 +44,28 @@
import butterknife.ButterKnife;

public class LuxMeterActivity extends AppCompatActivity {
BottomSheetBehavior bottomSheetBehavior;
GestureDetector gestureDetector;

private static final String PREF_NAME = "customDialogPreference";
private static final int MY_PERMISSIONS_REQUEST_STORAGE_FOR_DATA = 101;
private static final int MY_PERMISSIONS_REQUEST_STORAGE_FOR_MAPS = 102;

public boolean recordData = false;
public boolean exportData = false;
public boolean recordingStarted = false;
public GPSLogger gpsLogger;
public boolean locationPref;
public CSVLogger luxLogger;
private Menu menu;

BottomSheetBehavior bottomSheetBehavior;
GestureDetector gestureDetector;

@BindView(R.id.navigation_lux_meter)
BottomNavigationView bottomNavigationView;
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.cl)
CoordinatorLayout coordinatorLayout;

//bottomSheet
@BindView(R.id.bottom_sheet)
LinearLayout bottomSheet;
Expand All @@ -73,11 +83,7 @@ public class LuxMeterActivity extends AppCompatActivity {
ImageView bottomSheetSchematic;
@BindView(R.id.custom_dialog_desc)
TextView bottomSheetDesc;

public boolean saveData = false;
public GPSLogger gpsLogger;
private boolean checkGpsOnResume = false;
public boolean locationPref;

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand Down Expand Up @@ -193,38 +199,68 @@ public boolean onTouchEvent(MotionEvent event) {
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.data_log_menu, menu);
this.menu = menu;
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.save_csv_data:
case R.id.record_pause_data:
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_STORAGE_FOR_DATA);
return true;
}
if (saveData) {
saveData = false;
if (recordData) {
item.setIcon(R.drawable.record_icon);
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;
}
if (locationPref) {
gpsLogger = new GPSLogger(this, (LocationManager) getSystemService(Context.LOCATION_SERVICE));
if (gpsLogger.isGPSEnabled()) {
saveData = true;
recordData = true;
CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.data_recording_start) + "\n" + getString(R.string.location_enabled), null, null);
} else {
checkGpsOnResume = true;
}
gpsLogger.startFetchingLocation();
} else {
saveData = true;
recordData = true;
CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.data_recording_start) + "\n" + getString(R.string.location_disabled), null, null);
}
}
invalidateOptionsMenu();
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,
Expand All @@ -251,10 +287,10 @@ protected void onResume() {
super.onResume();
if (checkGpsOnResume) {
if (gpsLogger.isGPSEnabled()) {
saveData = true;
recordData = true;
CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.data_recording_start), null, null);
} else {
saveData = false;
recordData = false;
Toast.makeText(getApplicationContext(), getString(R.string.gps_not_enabled),
Toast.LENGTH_SHORT).show();
}
Expand All @@ -270,14 +306,14 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
if (locationPref) {
gpsLogger = new GPSLogger(this, (LocationManager) getSystemService(Context.LOCATION_SERVICE));
if (gpsLogger.isGPSEnabled()) {
saveData = true;
recordData = true;
CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.data_recording_start) + "\n" + getString(R.string.location_enabled), null, null);
} else {
checkGpsOnResume = true;
}
gpsLogger.startFetchingLocation();
} else {
saveData = true;
recordData = true;
CustomSnackBar.showSnackBar(coordinatorLayout, getString(R.string.data_recording_start) + "\n" + getString(R.string.location_disabled), null, null);
}
} else {
Expand All @@ -289,4 +325,13 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
startActivity(MAP);
}
}

@Override
protected void onDestroy() {
super.onDestroy();
if(recordingStarted) {
luxLogger.deleteFile();
recordingStarted = false;
}
}
}
81 changes: 37 additions & 44 deletions app/src/main/java/io/pslab/fragment/LuxMeterFragmentData.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ public class LuxMeterFragmentData extends Fragment {
private static int highLimit = 2000;
private static int updatePeriod = 100;
private final Object lock = new Object();
public CSVLogger lux_logger;

@BindView(R.id.lux_stat_max)
TextView statMax;
Expand All @@ -81,7 +80,6 @@ public class LuxMeterFragmentData extends Fragment {
private YAxis y;
private volatile boolean monitor = true;
private Unbinder unbinder;
private boolean logged = false, writeHeader = false;
private long previousTimeElapsed = (System.currentTimeMillis() - startTime) / 1000;
private GPSLogger gpsLogger;

Expand Down Expand Up @@ -313,53 +311,48 @@ private void visualizeData() {
final LuxMeterActivity parent = (LuxMeterActivity) getActivity();
for (Entry item : entries) {
assert parent != null;
if (parent.saveData) {
if (!writeHeader) {
gpsLogger = parent.gpsLogger;
lux_logger = new CSVLogger(getString(R.string.lux_meter));
lux_logger.writeCSVFile("Timestamp,X,Y\n");
writeHeader = true;
}

if (parent.recordData) {
gpsLogger = parent.gpsLogger;
String data = String.valueOf(System.currentTimeMillis()) + "," +
item.getX() + "," + item.getY() + "\n";
lux_logger.writeCSVFile(data);
logged = true;
} else {
if (logged) {
writeHeader = false;
logged = false;
if (parent.locationPref && gpsLogger != null) {
String data;
Location location = gpsLogger.getBestLocation();
if (location != null) {
data = "\nLocation" + "," + String.valueOf(location.getLatitude()) + "," + String.valueOf(location.getLongitude() + "\n");
} else {
data = "\nLocation" + "," + "null" + "," + "null";
}
lux_logger.writeCSVFile(data);
gpsLogger.removeUpdate();
parent.luxLogger.writeCSVFile(data);
}

if (parent.exportData) {
parent.exportData = false;
if (parent.locationPref && gpsLogger != null) {
String data;
Location location = gpsLogger.getBestLocation();
if (location != null) {
data = "\nLocation" + "," + String.valueOf(location.getLatitude()) + "," + String.valueOf(location.getLongitude() + "\n");
} else {
data = "\nLocation" + "," + "null" + "," + "null";
}
CustomSnackBar.showSnackBar((CoordinatorLayout) parent.findViewById(R.id.cl),
getString(R.string.csv_store_text) + " " + lux_logger.getCurrentFilePath()
, getString(R.string.delete_capital), new View.OnClickListener() {
@Override
public void onClick(View view) {
new AlertDialog.Builder(parent, R.style.AlertDialogStyle)
.setTitle(R.string.delete_file)
.setMessage(R.string.delete_warning)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
lux_logger.deleteFile();
}
})
.setNegativeButton(R.string.cancel, null)
.create()
.show();
}
});
parent.luxLogger.writeCSVFile(data);
gpsLogger.removeUpdate();
}
CustomSnackBar.showSnackBar((CoordinatorLayout) parent.findViewById(R.id.cl),
getString(R.string.csv_store_text) + " " + parent.luxLogger.getCurrentFilePath()
, getString(R.string.delete_capital), new View.OnClickListener() {
@Override
public void onClick(View view) {
new AlertDialog.Builder(parent, R.style.AlertDialogStyle)
.setTitle(R.string.delete_file)
.setMessage(R.string.delete_warning)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
parent.luxLogger.deleteFile();
}
})
.setNegativeButton(R.string.cancel, null)
.create()
.show();
}
});
}

count++;
sum += item.getY();
}
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/io/pslab/others/GPSLogger.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public void onProviderEnabled(String s) { /**/}

@Override
public void onProviderDisabled(String s) {
callerActivity.saveData = false;
callerActivity.recordData = false;
new AlertDialog.Builder(callerActivity, R.style.AlertDialogStyle)
.setTitle(R.string.allow_gps)
.setMessage(R.string.allow_gps_info)
Expand Down
9 changes: 9 additions & 0 deletions app/src/main/res/drawable/delete_icon.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FFF"
android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z" />
</vector>
9 changes: 9 additions & 0 deletions app/src/main/res/drawable/pause_icon.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FFF"
android:pathData="M6,19h4L10,5L6,5v14zM14,5v14h4L18,5h-4z" />
</vector>
9 changes: 9 additions & 0 deletions app/src/main/res/drawable/record_icon.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FFF"
android:pathData="M12,12m-8,0a8,8 0,1 1,16 0a8,8 0,1 1,-16 0" />
</vector>
16 changes: 13 additions & 3 deletions app/src/main/res/menu/data_log_menu.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,25 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/save_csv_data"
android:id="@+id/record_pause_data"
android:icon="@drawable/record_icon"
android:title="@string/record_csv_data"
app:showAsAction="always" />
<item
android:id="@+id/delete_csv_data"
android:icon="@drawable/delete_icon"
android:title="@string/delete_csv_data"
app:showAsAction="ifRoom" />
<item
android:id="@+id/record_csv_data"
android:icon="@drawable/menu_icon_save"
android:title="@string/save_csv_data"
app:showAsAction="ifRoom" />
app:showAsAction="never" />
<item
android:id="@+id/show_map"
android:icon="@drawable/menu_icon_map"
android:title="@string/view_map"
app:showAsAction="ifRoom" />
app:showAsAction="never" />
<item
android:id="@+id/settings"
android:title="@string/nav_settings"
Expand Down
11 changes: 9 additions & 2 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -894,7 +894,7 @@
<string name="barometer_description">Measures the pressure of the atmosphere</string>
<string name="barometer">Barometer</string>

<string name="navigation_lux_meter_data">Data</string>
<string name="navigation_lux_meter_data">Data Plot</string>
<string name="navigation_lux_meter_configure">Configure</string>
<string name="high_limit">High Limit</string>
<string name="update_period">Update Period</string>
Expand All @@ -919,9 +919,16 @@
</string-array>
<string name="lux_meter_none">None</string>

<string name="save_csv_data">Save CSV Data</string>
<string name="save_csv_data">Export Data</string>
<string name="delete_csv_data">Delete CSV Data</string>
<string name="record_csv_data">Record Data</string>
<string name="pause_recording_data">Pause Recording</string>
<string name="view_map">View Map</string>
<string name="data_recording_start">Data Recording: Started</string>
<string name="data_recording_paused">Data Recording: Paused</string>
<string name="data_deleted">Recorded data deleted successfully</string>
<string name="nothing_to_delete">Nothing to delete</string>
<string name="nothing_to_export">Please record some data</string>
<string name="csv_store_text">CSV file stored at </string>

<string name="delete_warning">Are you sure you want to delete this file?</string>
Expand Down