我尝试构建一个简单的应用程序,它使用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
的追加方法,我得到的结果是图表只绘制了最新值(在我的情况下, x轴的值)和“丢弃”前一个。这是我得到的截图:
我还试图通过访问jjoe64's examples on Github来了解如何进行实时图表,但我无法找到应该更改代码的位置。
我在SO上做了一些搜索:
Android graphview not automatically updating Android graphview all x-axis values are set to the latest value
但他们都不能真正帮助我。
有人可以开导我吗?
干杯。