Я работаю над продуктом, который регистрирует частоту сердечных сокращений и отправляет эти данные в мое приложение для Android.Приложение представляет эти данные, используя MPAndroidChart в режиме реального времени .Обратите внимание, что я использую последнюю версию библиотеки.
У меня возникли проблемы с некоторыми телефонами.Я протестировал его на Moto G2, Realme 1, OnePlus 5t, OnePlus 6, Lenovo K8 plus.
Диаграмма на телефоне OnePlus 6 (это неверно):
Диаграмма на телефоне Moto G2 (это правильно):
Обновление Код:
private void initHeartLineChart(){
lineChartHeart.getDescription().setEnabled(false);
lineChartHeart.getAxisRight().setEnabled(false);
lineChartHeart.getLegend().setEnabled(false);
lineChartHeart.setDrawGridBackground(false);
lineChartHeart.setPinchZoom(false);
lineChartHeart.setScaleEnabled(false);
lineChartHeart.setDoubleTapToZoomEnabled(false);
lineChartHeart.setScaleYEnabled(false);
lineChartHeart.setDragXEnabled(false);
lineChartHeart.setDragYEnabled(false);
XAxis xAxis = lineChartHeart.getXAxis();
xAxis.setEnabled(false);
xAxis.setDrawGridLines(false);
xAxis.setGranularity(1f);
YAxis yAxisHeart = lineChartHeart.getAxisLeft();
yAxisHeart.setEnabled(false);
yAxisHeart.setAxisMaximum(600f);
yAxisHeart.setAxisMinimum(-600f);
yAxisHeart.setDrawAxisLine(false);
yAxisHeart.setDrawZeroLine(false);
//add empty data
lineChartHeart.setData(new LineData());
lineChartHeart.setViewPortOffsets(0,0,0,0);
}
private LineDataSet createHeartDataSet() {
LineDataSet set = new LineDataSet(null, "Live Heart");
set.setAxisDependency(YAxis.AxisDependency.LEFT);
set.setColor(getResources().getColor(R.color.heart_color));
set.setLineWidth(1f);
set.setDrawCircles(false);
set.setHighlightEnabled(false);
set.setDrawValues(false);
set.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER);
set.setCubicIntensity(0.2f);
return set;
}
private void addNewHeartEntry(double heartRate) {
LineData data = lineChartHeart.getData();
if (data != null) {
ILineDataSet set = data.getDataSetByIndex(0);
if (set == null) {
set = createHeartDataSet();
data.addDataSet(set);
}
data.addEntry(new Entry(set.getEntryCount(), (float) heartRate), 0);
data.notifyDataChanged();
lineChartHeart.notifyDataSetChanged();
lineChartHeart.setVisibleXRangeMaximum(625);
// move to the latest entry
lineChartHeart.moveViewToX(set.getEntryCount());
}
}
Код, лицо и устройство одинаковы для обоих случаев.Я проверял это много раз.Я также проверил данные, которые я отправлял на график.Данные были правильными.График просто не строит это правильно.Если вы, возможно, заметили, диаграмма отображает данные в виде шаблона.Это повторение двух пунктов 3-5 раз.Я думаю, что это происходит только на хороших или последних телефонах, таких как Realme, OnePlus.Но я не могу понять, почему это происходит.
Любая помощь будет признательна.