如何在Android的GraphView中添加静态数据和实时数据?

如何在Android的GraphView中添加静态数据和实时数据?,android,graph,real-time,android-graphview,android-thread,Android,Graph,Real Time,Android Graphview,Android Thread,我需要从数组中添加数据,然后实时添加数据。我可以分别做这两件事,但当我想一起做每件事时,应用程序会在启动前关闭 这个想法是为了显示我通过蓝牙接收到的数据,当我接收到5个系列时,这个想法是为了能够在任何时候可视化5个系列。然后我想做的是绘制已经到达我的数据,并添加我正在接收的数据,然后我可以通过重置图形并加载另一个系列的值来查看不同的系列 我附上代码 多谢各位 public class MainActivity extends AppCompatActivity { private static

我需要从数组中添加数据,然后实时添加数据。我可以分别做这两件事,但当我想一起做每件事时,应用程序会在启动前关闭

这个想法是为了显示我通过蓝牙接收到的数据,当我接收到5个系列时,这个想法是为了能够在任何时候可视化5个系列。然后我想做的是绘制已经到达我的数据,并添加我正在接收的数据,然后我可以通过重置图形并加载另一个系列的值来查看不同的系列

我附上代码

多谢各位

public class MainActivity extends AppCompatActivity {

private static final Random RANDOM = new Random();
private LineGraphSeries<DataPoint> series;
private int lastX = 0;

double[] x= new double[10];
double[] y= new double[10];

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // we get graph view instance
    values();
    LineGraphSeries<DataPoint> series;
    GraphView graph = (GraphView) findViewById(R.id.graph);
    // data
    series = new LineGraphSeries<>(data());
    graph.addSeries(series);
    // customize a little bit viewport
    Viewport viewport = graph.getViewport();
    viewport.setYAxisBoundsManual(true);
    viewport.setXAxisBoundsManual(true);
    viewport.setMinY(0);
    viewport.setMaxY(10);
    viewport.setMinX(0);
    viewport.setMaxX(30);
    series.setThickness(1);
}

@Override
protected void onResume() {
    super.onResume();
    // we're going to simulate real time with thread that append data to the graph
    new Thread(new Runnable() {

        @Override
        public void run() {
            // we add 100 new entries
            for (int i = 0; i < 10; i++) {
                runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        addEntry();
                    }
                });

                // sleep to slow down the add of entries
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // manage error ...
                }
            }
        }
    }).start();
}

// add random data to graph
private void addEntry() {
    // here, we choose to display max 10 points on the viewport and we scroll to end

    series.appendData(new DataPoint(lastX++, RANDOM.nextDouble() * 10d), false, 1800);
}

public DataPoint[] data(){
    DataPoint[] values = new DataPoint[10];     //creating an object of type DataPoint[] of size 'n'
    for(int i=0;i<10;i++){
        DataPoint v = new DataPoint(x[i],y[i]);
        values[i] = v;
    }
    return values;
}

private void values(){
    for(int i=0;i<10;i++) {
    x[i]=i;
    y[i]=i;
    }
}

}
public类MainActivity扩展了AppCompatActivity{
私有静态最终随机=新随机();
专用线图系列;
private int lastX=0;
double[]x=新的double[10];
双精度[]y=新双精度[10];
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//我们得到了图形视图实例
值();
线条系列;
GraphView图形=(GraphView)findViewById(R.id.graph);
//资料
series=新的LineGraphSeries(data());
图.addSeries(系列);
//自定义一点视口
Viewport=graph.getViewport();
viewport.setYAxisBoundsManual(true);
viewport.setXAxisBoundsManual(真);
viewport.setMinY(0);
viewport.setMaxY(10);
viewport.setMinX(0);
viewport.setMaxX(30);
系列。设定厚度(1);
}
@凌驾
受保护的void onResume(){
super.onResume();
//我们将使用将数据附加到图形中的线程来模拟实时
新线程(newrunnable()){
@凌驾
公开募捐{
//我们添加了100个新条目
对于(int i=0;i<10;i++){
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
加法();
}
});
//sleep可减慢条目的添加速度
试一试{
睡眠(1000);
}捕捉(中断异常e){
//管理错误。。。
}
}
}
}).start();
}
//向图形中添加随机数据
专用无效补遗(){
//在这里,我们选择在视口上最多显示10个点,然后滚动到末尾
series.appendData(新数据点(lastX++,RANDOM.nextDouble()*10d),false,1800);
}
公共数据点[]数据(){
DataPoint[]值=新DataPoint[10];//正在创建大小为“n”的DataPoint[]类型的对象
对于(int i=0;i