Android Achartengine:实时条形图

时间:2014-04-20 13:58:18

标签: android broadcastreceiver real-time bar-chart achartengine

我正试图获得一个条形图,实时绘制wifi接收信号强度。 好吧,我正在使用brodcastreceiver,以获得RSSI更改,以及achartengine来绘制这些信息。但我只是获得了第一个接收数据的条形图,并且如果RSSI数据发生变化,我的图表上没有任何反应。

修改

嗯,我想我知道为什么我有第一张图表,方法getTruitonBarDataset正在执行一次,有人可以告诉我如何解决这个问题。谢谢你。

这是来自brodcastreceiver类的onReceive方法:

public void onReceive(Context context, Intent intent) {

            int length ;
            if(intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)){
                 List<ScanResult> results = wifi.getScanResults();
                 length=results.size();

                   Log.i("length1",length +"");
                    XYMultipleSeriesRenderer renderer = getTruitonBarRenderer(results.size());
                    myChartSettings(renderer);

                       if (mChartView == null)
                       {mChartView = ChartFactory.getBarChartView(WifiChartsRealTime.this, getTruitonBarDataset( results), renderer, Type.STACKED); 
                       layout.addView(mChartView);} 
                       else {mChartView.repaint();}  


             }


        }

提前谢谢。

1 个答案:

答案 0 :(得分:2)

感谢waqaslam和this post,它正在工作,这是我的接收方法:

public void onReceive(Context context, Intent intent) {
            WifiManager wifiMan=(WifiManager)WifiChartsRealTime.this.getSystemService(Context.WIFI_SERVICE);
              wifiMan.startScan();


            if(intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)){
                 results = wifi.getScanResults();
                 length=results.size();


                   Log.i("length1",length +"");
                    XYMultipleSeriesRenderer renderer = getTruitonBarRenderer(results.size());
                    myChartSettings(renderer);




                       layout = (LinearLayout) findViewById(R.id.chart);
                       if (mChartView != null) {
                           layout.removeView(mChartView);
                        }
                       mChartView = ChartFactory.getBarChartView(WifiChartsRealTime.this, getTruitonBarDataset( results), renderer, Type.STACKED); 
                       layout.addView(mChartView, 0, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));


            }



        }`