Отображение данных в формате MP Android Line Chart - PullRequest
0 голосов
/ 07 мая 2020

Я сейчас читаю данные с 7 датчиков по bluetooth и отображаю их 7 строками на графике. Мне удалось заставить приложение работать, для каждого поступающего данных я реализую функцию addEntry ниже, чтобы обновить диаграмму и перемещать окно по оси x, чтобы показать самые обновленные данные.

Однако передача данных осуществляется на частоте 100 Гц, и приложение будет работать более часа, я обнаружил, что приложение зависает и может не справиться с этим иногда после запуска приложения в течение определенного периода времени. , скажем 20 минут. Учитывая большой объем данных, с которыми нужно иметь дело, я хотел бы просто хранить данные в течение 10-15 секунд на диаграмме (т.е. даже если я прокручиваю назад к началу диаграммы, она просто показывает данные за 10-15 секунд). После некоторого исследования я просто нашел способ mChart.getData().notifyDataChanged(); для обновления данных, который не позволяет мне просто отображать выбранную часть arrayylist. Могли бы какие-нибудь советы?

Заранее спасибо.

        private void addEntry(){
        Log.d(TAG, "add Entry called");
        LineDataSet[] sensorSet = new LineDataSet[7];;
        if (mChart.getData() != null && mChart.getData().getDataSetCount() > 0){

            for (int k = 0; k<7; k++) {
                sensorSet[k] = (LineDataSet) mChart.getData().getDataSetByIndex(k);
                sensorSet[k].setValues(SensorData.getSensor()[k]);
            }

            mChart.getData().notifyDataChanged();

            Log.d(TAG, "notified");
            mChart.notifyDataSetChanged();

            mChart.setVisibleXRange(0,5000);
            int temp = mChart.getData().getEntryCount();
            Log.d(TAG, "Entry count: " + mChart.getData().getEntryCount());
            mChart.moveViewToX(mChart.getLineData().getXMax()-1000);
        }else{
            for (int k = 0; k<7; k++) {
                sensorSet[k] = createSet(k);
            }
            LineData data = new LineData(sensorSet);
            mChart.setData(data);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...