From f1d8a12bfafa651ce96c2c69208a1512aedb6074 Mon Sep 17 00:00:00 2001 From: dumushui Date: Mon, 24 May 2021 15:13:51 +0800 Subject: [PATCH] Plot x,y,z --- .../realtimeaccelerometer/MainActivity.java | 96 ++++++++++++++----- 1 file changed, 72 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/example/mbreath/realtimeaccelerometer/MainActivity.java b/app/src/main/java/com/example/mbreath/realtimeaccelerometer/MainActivity.java index 696c747..257d682 100644 --- a/app/src/main/java/com/example/mbreath/realtimeaccelerometer/MainActivity.java +++ b/app/src/main/java/com/example/mbreath/realtimeaccelerometer/MainActivity.java @@ -21,6 +21,7 @@ import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; import com.github.mikephil.charting.utils.ColorTemplate; +import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements SensorEventListener { @@ -39,6 +40,9 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_main); mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); + // if you wanna checkout gravity, set this "TYPE_ACCELEROMETER_UNCALIBRATED" flag and change + // the LeftAxis.setAxisMinimum to -13f + // mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER_UNCALIBRATED); mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION); List sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL); @@ -71,7 +75,7 @@ protected void onCreate(Bundle savedInstanceState) { mChart.setBackgroundColor(Color.WHITE); LineData data = new LineData(); - data.setValueTextColor(Color.WHITE); + data.setValueTextColor(Color.BLACK); // add empty data mChart.setData(data); @@ -81,19 +85,19 @@ protected void onCreate(Bundle savedInstanceState) { // modify the legend ... l.setForm(Legend.LegendForm.LINE); - l.setTextColor(Color.WHITE); + l.setTextColor(Color.BLACK); XAxis xl = mChart.getXAxis(); - xl.setTextColor(Color.WHITE); + xl.setTextColor(Color.BLACK); xl.setDrawGridLines(true); xl.setAvoidFirstLastClipping(true); xl.setEnabled(true); YAxis leftAxis = mChart.getAxisLeft(); - leftAxis.setTextColor(Color.WHITE); + leftAxis.setTextColor(Color.BLACK); leftAxis.setDrawGridLines(false); leftAxis.setAxisMaximum(10f); - leftAxis.setAxisMinimum(0f); + leftAxis.setAxisMinimum(-10f); leftAxis.setDrawGridLines(true); YAxis rightAxis = mChart.getAxisRight(); @@ -110,32 +114,76 @@ protected void onCreate(Bundle savedInstanceState) { private void addEntry(SensorEvent event) { LineData data = mChart.getData(); - if (data != null) { - ILineDataSet set = data.getDataSetByIndex(0); - // set.addEntry(...); // can be called as well - if (set == null) { - set = createSet(); - data.addDataSet(set); + LineData newData = createLinesSet(); + mChart.setData(newData); } + else{ + ILineDataSet set1 = data.getDataSetByLabel("X",false); + ILineDataSet set2 = data.getDataSetByLabel("Y",false); + ILineDataSet set3 = data.getDataSetByLabel("Z",false); + set1.addEntry(new Entry(set1.getEntryCount(), event.values[0])); + set2.addEntry(new Entry(set2.getEntryCount(), event.values[1])); + set3.addEntry(new Entry(set3.getEntryCount(), -event.values[2])); + data.notifyDataChanged(); + mChart.notifyDataSetChanged(); + mChart.setVisibleXRangeMaximum(150); + mChart.moveViewToX(data.getEntryCount()); + } + } + } -// data.addEntry(new Entry(set.getEntryCount(), (float) (Math.random() * 80) + 10f), 0); - data.addEntry(new Entry(set.getEntryCount(), event.values[0] + 5), 0); - data.notifyDataChanged(); - - // let the chart know it's data has changed - mChart.notifyDataSetChanged(); - - // limit the number of visible entries - mChart.setVisibleXRangeMaximum(150); - // mChart.setVisibleYRange(30, AxisDependency.LEFT); - // move to the latest entry - mChart.moveViewToX(data.getEntryCount()); - } + private LineData createLinesSet() { + List valsComp1 = new ArrayList(); + Entry c1e1 = new Entry(0f, 0f); + valsComp1.add(c1e1); + List valsComp2 = new ArrayList(); + Entry c2e1 = new Entry(0f, 0f); + valsComp2.add(c2e1); + List valsComp3 = new ArrayList(); + Entry c3e1 = new Entry(0f, 0f); + valsComp3.add(c3e1); + + LineDataSet set1 = new LineDataSet(valsComp1, "X"); + set1.setAxisDependency(YAxis.AxisDependency.LEFT); + set1.setLineWidth(3f); + set1.setColor(Color.MAGENTA); + set1.setHighlightEnabled(false); + set1.setDrawValues(false); + set1.setDrawCircles(false); + set1.setMode(LineDataSet.Mode.LINEAR); + set1.setCubicIntensity(0.2f); + + LineDataSet set2 = new LineDataSet(valsComp2, "Y"); + set2.setAxisDependency(YAxis.AxisDependency.LEFT); + set2.setLineWidth(3f); + set2.setColor(Color.BLUE); + set2.setHighlightEnabled(false); + set2.setDrawValues(false); + set2.setDrawCircles(false); + set2.setMode(LineDataSet.Mode.LINEAR); + set2.setCubicIntensity(0.2f); + + LineDataSet set3 = new LineDataSet(valsComp3, "Z"); + set3.setAxisDependency(YAxis.AxisDependency.LEFT); + set3.setLineWidth(3f); + set3.setColor(Color.BLACK); + set3.setHighlightEnabled(false); + set3.setDrawValues(false); + set3.setDrawCircles(false); + set3.setMode(LineDataSet.Mode.LINEAR); + set3.setCubicIntensity(0.2f); + + List dataSets = new ArrayList(); + dataSets.add(set1); + dataSets.add(set2); + dataSets.add(set3); + LineData output_data = new LineData(dataSets); + return output_data; } private LineDataSet createSet() {