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();
}
}
};
加速度計の値を正しく取得できますが、どういうわけか の append メソッドを適切に使用しなかった可能性がありますGraphView
。得られた結果は、グラフが最新の値 (私の場合は x 軸の値) のみを描画することでした。前のものを「捨てる」。これが私が得たもののスクリーンショットです:
また、Github の jjoe64 の例にアクセスして、リアルタイム グラフを実行する方法を見つけようとしましたが、コードを変更する必要がある場所が見つかりませんでした。
私はSOでいくつかの検索を行いました:
Android グラフビューが自動的に更新されない Android グラフビューのすべての x 軸の値が最新の値に設定される
しかし、どちらも私を助けることはできません。
誰かがこれについて私に教えてもらえますか?
乾杯。