使用Android GraphView实时绘制图形时会出现混蛋

时间:2018-07-04 16:18:45

标签: android android-graphview

我正在用我的Android手机上的传感器实时绘制绘图数据来编写应用程序。 对于实时绘图,我使用GraphView库和方法appendData。 我从BroadcastReceiver中的传感器逐点获取数据,然后调用该方法appendData

private BroadcastReceiver sensorsDataReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction() == BROADCAST_ACTION) {
            if (intent.getIntExtra(MyService.SENSOR_TYPE, 9999) == Sensor.TYPE_ACCELEROMETER) {
                float[] data = intent.getFloatArrayExtra(MyService.SENSOR_DATA);
                mAccelerometerSeries.appendData(new DataPoint(mGraphXAxisSamples[0]++, data[0]), false, 600);
            } else if (intent.getIntExtra(MyService.SENSOR_TYPE, 9999) == Sensor.TYPE_GYROSCOPE) {
                float[] data = intent.getFloatArrayExtra(MyService.SENSOR_DATA);
                mGyroscopeSeries.appendData(new DataPoint(mGraphXAxisSamples[1]++, data[0]), false, 600);
            }
        }
    }
};

主要问题是-情节被抽搐更新(带有暂停)。该图形将实时更新到第8点,然后有一个延迟,此后一次绘制另外8个点(最多16个)。 20日之后相同,依此类推。

添加:

我还尝试(HB建议)将appendData中的Handler包裹在延迟状态:

Handler h = new Handler(Looper.getMainLooper());

h.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        mAccelerometerSeries.appendData(new DataPoint(mGraphXAxisSamples[0]++, data[0]), false, 600);
                    }
                }, 100);

但这不会改变情况:(

0 个答案:

没有答案