我尝试构建一个简单的应用程序,它使用 jjoe64 的GraphView库来绘制加速度计的实时值。
我已经完成了加速度计的值读取部分,现在我在将这些值实时放到图形上时遇到了一个小问题。
这是我的代码:
我设置了一个发送加速度计值广播的服务,在我的图形绘制活动中,我使用BroadcastReceiver
来检索这样的值:
...
private String sensorType = "";
private float[] sensorVal;
private GraphView mGraphView;
private GraphViewSeries xSeries;
private GraphViewData xData;
private int counter = 0;
...
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getFloatArrayExtra(sensorType) != null) {
sensorVal = intent.getFloatArrayExtra(sensorType);
++counter;
xSeries.appendData(new GraphViewData(counter, sensorVal[0]), true, 500);
// mGraphView.redrawAll(); // Same result if I use redrawAll();
}
}
};
我可以正确获取加速度计的值,但不知何故,也许我没有正确使用GraphView
'append 方法,我得到的结果是图表仅绘制了最新值(在我的情况下,是 x 轴的值)和“丢弃”前一个。这是我得到的截图:
我还尝试通过访问jjoe64 在 Github 上的示例来了解如何制作实时图表,但我找不到应该更改代码的地方。
我对SO进行了一些搜索:
Android graphview不会自动更新 Android graphview所有x轴值都设置为最新值
但他们都不能真正为我提供帮助。
有人可以启发我吗?
干杯。