我正试图获得一个条形图,实时绘制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();}
}
}
提前谢谢。
答案 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));
}
}`