0

我正在使用jjoe64 的 GraphView 项目,但是在动态添加数据时遇到了问题。我正在尝试在折线图上绘制麦克风音量,但该图拒绝更新。这是我所拥有的:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    LinearLayout layout = (LinearLayout) findViewById(R.id.GraphLayout);

    graph = new LineGraphView(this, "Sounds");
    data = new GraphViewSeries(new GraphView.GraphViewData[] { new GraphView.GraphViewData(X++, 0) });
    graph.addSeries(data);
    graph.setManualYAxis(true);
    graph.setManualYAxisBounds(32767, 0);
    graph.setViewPort(3, 100);
    graph.setScrollable(true);
    layout.addView(graph);

    final MediaRecorder media = new MediaRecorder();
    media.setAudioSource(MediaRecorder.AudioSource.MIC);
    media.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    media.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    media.setOutputFile("/dev/null");
    try {
        media.prepare();
    } catch (Throwable t) {}
    media.start();

    new Timer().scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            final int amp = media.getMaxAmplitude();
            MaxSoFar = Math.max(amp, MaxSoFar);
            MainActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    data.appendData(new GraphView.GraphViewData(X++, amp), true);
                    //Here I try few different things
                    TextView output = (TextView)findViewById(R.id.output);
                    String info = MaxSoFar + "" + nl;
                    info += amp + "";
                    output.setText(info);
                }
            });
        }
    }, 0, 100);
}

data.appendData(...)在使用 , 之类的东西之后,我一直在在线上做很多实验graph.redrawAll();graph.invalidate();或者graph.postInvalidate();什么都没有。如果我放下手指并拖动图表,我只能重新绘制图表。任何类型的触摸输入都会导致图形正确绘制。它可能与它的存在有关,runOnUiThread但我想不出为什么这可能是一个问题而不是一个要求。

我正在运行 Cyanogenmod 10.1 Nightlies (Android 4.2.2) 的 Galaxy S3 上对此进行调试。

4

1 回答 1

0

在做了一些研究和实验之后,我发现有这个问题,Lauszus 说他有这个修复。我进行了这些更改并重建了 GraphView,它运行得非常好。

于 2013-06-18T16:34:43.397 回答