From 0cf40b9d21d3a172f8afa7682d8f8927bc30d4be Mon Sep 17 00:00:00 2001 From: Graham Jones Date: Sat, 13 Jan 2024 20:37:39 +0000 Subject: [PATCH] Formatted HR history graph --- .../openseizuredetector/FragmentHrAlg.java | 64 +++++++++++++++---- .../openseizuredetector/MainActivity2.java | 3 +- app/src/main/res/layout/fragment_hr_alg.xml | 24 +++---- app/src/main/res/values/strings.xml | 1 + 4 files changed, 66 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/uk/org/openseizuredetector/FragmentHrAlg.java b/app/src/main/java/uk/org/openseizuredetector/FragmentHrAlg.java index 3989cd6..a2e26fc 100644 --- a/app/src/main/java/uk/org/openseizuredetector/FragmentHrAlg.java +++ b/app/src/main/java/uk/org/openseizuredetector/FragmentHrAlg.java @@ -11,11 +11,14 @@ import android.widget.TextView; import androidx.appcompat.widget.SwitchCompat; import com.github.mikephil.charting.charts.LineChart; +import com.github.mikephil.charting.components.XAxis; +import com.github.mikephil.charting.components.YAxis; import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.data.LineData; import com.github.mikephil.charting.data.LineDataSet; -import com.github.mikephil.charting.utils.ColorTemplate; +import com.github.mikephil.charting.utils.ValueFormatter; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -25,7 +28,7 @@ import java.util.Objects; public class FragmentHrAlg extends FragmentOsdBaseClass { String TAG = "FragmentOsdAlg"; - LineChart lineChart; + LineChart mLineChart; LineData lineData; LineDataSet lineDataSet; List hrHistory = new ArrayList<>(); @@ -50,10 +53,12 @@ public class FragmentHrAlg extends FragmentOsdBaseClass { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); lineDataSet = new LineDataSet(new ArrayList(),"Heart rate history" ); - lineDataSet.setColors(ColorTemplate.JOYFUL_COLORS); + //lineDataSet.setColors(ColorTemplate.JOYFUL_COLORS); lineDataSet.setValueTextColor(Color.BLACK); lineDataSet.setValueTextSize(18f); lineDataSet.setDrawValues(false); + lineDataSet.setCircleSize(0f); + lineDataSet.setLineWidth(3f); //lineDataSetAverage = new LineDataSet(new ArrayList(),"Heart rate history" ); //lineDataSetAverage.setColors(ColorTemplate.JOYFUL_COLORS); //lineDataSetAverage.setValueTextColor(Color.BLACK); @@ -61,6 +66,38 @@ public class FragmentHrAlg extends FragmentOsdBaseClass { } + @Override + public void onResume() { + super.onResume(); + mLineChart = mRootView.findViewById(R.id.lineChart); + XAxis xAxis = mLineChart.getXAxis(); + xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); + xAxis.setTextSize(10f); + xAxis.setDrawAxisLine(true); + xAxis.setDrawLabels(true); + // Note: the default text colour is BLACK, so does not show up on black background!!! + // This took a lot of finding.... + xAxis.setTextColor(Color.WHITE); + + YAxis yAxis = mLineChart.getAxisLeft(); + yAxis.setAxisMinValue(40f); + yAxis.setAxisMaxValue(240f); + yAxis.setDrawGridLines(true); + yAxis.setDrawLabels(true); + yAxis.setTextColor(Color.WHITE); + // Inhibit the decimal part of the y axis labels. + yAxis.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float v) { + DecimalFormat format = new DecimalFormat("###"); + return format.format(v); + } + }); + + YAxis yAxis2 = mLineChart.getAxisRight(); + yAxis2.setDrawGridLines(false); + yAxis2.setEnabled(false); + } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -85,17 +122,16 @@ public class FragmentHrAlg extends FragmentOsdBaseClass { tvAvgAHr.setText( String.valueOf((short)mConnection.mSdServer.mSdData .mAdaptiveHrAverage)); tvCurrent.setText(new StringBuilder() - .append(mConnection.mSdServer.mSdData.mAdaptiveHrAverage) .append("\nResult of checks: Adaptive Hr Alarm Standing: ") .append(mConnection.mSdServer.mSdData.mAdaptiveHrAlarmStanding) .append("\nAverage Hr Alarm Standing: ") .append(mConnection.mSdServer.mSdData.mAdaptiveHrAlarmStanding) .toString()); - switchAverages = mRootView.findViewById(R.id.hr_average_switch); + //switchAverages = mRootView.findViewById(R.id.hr_average_switch); if (Objects.nonNull(mConnection.mSdServer.mSdDataSource.mSdAlgHr)) { - Log.v(TAG,"mSdAlgHr si not null"); + //Log.v(TAG,"mSdAlgHr is not null"); CircBuf hrHist = mConnection.mSdServer.mSdDataSource.mSdAlgHr.getHrHistBuff(); int nHistArr = hrHist.getNumVals(); double hrHistArr[] = hrHist.getVals(); // This gives us a simple vector of hr values to plot. @@ -104,20 +140,22 @@ public class FragmentHrAlg extends FragmentOsdBaseClass { lineDataSet.clear(); String xVals[] = new String[nHistArr]; for (int i = 0; i - + + - - - - - + android:text="TextView" + android:textColor="@color/okTextColor"/> + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index efb9fc3..bc1ca17 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -562,4 +562,5 @@ Hello blank fragment Use new swipeable user interface Use New User Interface + Heart Rate Algorithm