Следующие проблемы с созданием кода:
for (int i = x1, index = 0, j = y; i < x2; ++i, ++index)
{
float waveLength = (float) calib_a * i + (float) calib_b;
int pixel = rotated.getPixel(i, j);
float I = (Color.red(pixel) + Color.blue(pixel) + Color.green(pixel)) / 765.0f;
values.add(new Entry((int) waveLength, I));
Log.d("[SPECTRAl]", " WAVE: " +waveLength + " I: " + I);
// i += 4;
}
Сначала вам нужно изменить приведение int к float в следующую строку, так как эта библиотека получает значения с плавающей точкой в качестве ввода:
values.add(new Entry((float) waveLength, I));
Вместо васможете удалить приведение, так как ваша длина волны уже является плавающей точкой:
values.add(new Entry(waveLength, I));
Во-вторых: values.add(new Entry(100, 6));
эта строка работает как values.add(new Entry(x, y));
Так что вам нужно дать диаграмме правильные значения x и соответствующие yзначения для генерации графика. Значения x должны быть в правильной последовательности для создания диаграммы, если значение x в n (здесь n - индекс входа) равно или меньше значения x в n-1 в любой точке, тогда вы не сможете сгенерироватьдиаграмма. Так что исправление кода цикла for, как я описал выше, будет работать правильно. Желаем удачи:)