我正在用我的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);
但这不会改变情况:(