Android: Broadcastreceiver with Achartengine ,don't display updates -


i'm trying display information got wifi scan broadcast receiver ,into bar chart using achartengine. want have real time chart ,every time receive data onreceive() method ,i update chart. achaeive ,i create chart objects in onreceive() method .but chart first result ,there no update ,although can see changes on wifi scan. know problem. this code i'm using:

public class wifichartsrealtime extends activity {   linearlayout layout; list<int[]> values = new arraylist<int[]>(); //list<scanresult> classobject = new arraylist<scanresult>(); int [ ] [ ] center_frequency_2 = {   { 1,2,3,4,5,6,7,8,9,10,11,12,13,14 },         { 2412, 2417, 2422, 2427, 2432,2437,2442,2447,2452 ,2457,2462,2467,2472,2484},     };  wifimanager wifi; button      enab; string resultsstring ;  string[] mystringarray; int aa = 10; public class receiver extends broadcastreceiver{        @override     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();              toast.maketext(getapplicationcontext(),                         "resultsstring***************** :"+results , toast.length_long)                         .show();               toast.maketext(getapplicationcontext(),                         "length1 :"+length , toast.length_long)                         .show();                 log.i("length1",length +"");                 xymultipleseriesrenderer renderer = gettruitonbarrenderer(results.size());                 mychartsettings(renderer);         /* intent intent1 = chartfactory.getbarchartintent(wifichartsrealtime.this,gettruitonbardataset(),renderer,type.default);             startactivity(intent1);*/         graphicalview mchartview = chartfactory.getbarchartview(wifichartsrealtime.this, gettruitonbardataset( results), renderer, type.stacked);         layout.addview(mchartview);       //  mchartview.refreshdrawablestate();         mchartview.repaint();           }      }  } @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_wifi_charts_real_time);      layout = (linearlayout) findviewbyid(r.id.chart);     connectivitymanager cxmgr = (connectivitymanager)getsystemservice(context.connectivity_service);      wifi = (wifimanager)getsystemservice(context.wifi_service);      receiver receiver = new receiver();      registerreceiver(receiver,new intentfilter(connectivitymanager.connectivity_action));      registerreceiver(receiver,new intentfilter(wifimanager.scan_results_available_action)); }   private xymultipleseriesdataset gettruitonbardataset( list<scanresult> classobject) {        int series_nr  ; //the number of columns display,        arraylist<string> legendtitles = new arraylist<string>();         xymultipleseriesdataset dataset = new xymultipleseriesdataset();           toast.maketext(getapplicationcontext(),                  "position xymultipleseriesdataset:"+classobject , toast.length_long)                  .show();          toast.maketext(getapplicationcontext(),                  "size xymultipleseriesdataset:"+classobject.size() , toast.length_long)                  .show();        // length = classobject.size();           (int j=0;j<classobject.size();j++){             values.add(new int[] { classobject.get(j).level}); //every serie concern access point , contain 1 rssi             }          (int k = 0; k < classobject.size(); k++) {              legendtitles.add(classobject.get(k).ssid);//every serie have legend ssid         }          //determination des canaux          int[] channelstab = new int[classobject.size()];         for(int i=0;i<classobject.size();i++){               if  (classobject.get(i).frequency /1000 == 2) {                 (int j =0;j<14;j++)                 { if (center_frequency_2[1][j] == classobject.get(i).frequency)                     channelstab[i]= center_frequency_2[0][j] ;                 }                 }             }          //fin determination des canaux           series_nr = classobject.size() ;//number of access point           (int = 0; < series_nr; i++) {//loop every series                 categoryseries series = new categoryseries(legendtitles.get(i));                 int[] v = values.get(i);                 int serieslength = v.length;                 dataset.addseries(series.toxyseries());                             (int k = 0; k < serieslength; k++) {                      log.i("stoop series_nr",series_nr+"");                      log.i("stoop ii",i+"");                      log.i("stoop",k+"");                      log.i("stoop",v[k]+"");                      log.i("stoop",v[k] / 10+"");                     /* xyseries tempserie = dataset.getseriesat(i);                         tempserie.add(i, 40 - v[k] %10);*/                      switch (v[k] / 10){                     case -9 :                         //series.add(classobject[k]);                         if (v[k] %10 == 0)                             //series.add(40);                         {xyseries tempserie = dataset.getseriesat(i);                         tempserie.add(channelstab[i], 30);                         tempserie.addannotation(legendtitles.get(i)+":"+v[k], channelstab[i], 30);                         }                         else                          //series.add(40 - v[k] %10);                         {xyseries tempserie = dataset.getseriesat(i);                         tempserie.add(channelstab[i], 30 - v[k] %10);                         tempserie.addannotation(legendtitles.get(i)+":"+v[k] , channelstab[i], 30 - v[k] %10);                         }                             break;                     case -8 :                         //series.add(classobject[k]);                         if (v[k] %10 == 0)                             //series.add(40);                         {xyseries tempserie = dataset.getseriesat(i);                         tempserie.add(channelstab[i], 40);                         tempserie.addannotation(legendtitles.get(i)+":"+v[k], channelstab[i], 40);                         }                         else                          //series.add(40 - v[k] %10);                         {xyseries tempserie = dataset.getseriesat(i);                         tempserie.add(channelstab[i], 40 - v[k] %10);                         tempserie.addannotation(legendtitles.get(i)+":"+v[k], channelstab[i], 40 - v[k] %10);                         }                             break;                     case -7 :                         //series.add(classobject[k]);                         if (v[k] %10 == 0)                             {                             xyseries tempserie = dataset.getseriesat(i);                            tempserie.add(channelstab[i], 50);                             tempserie.addannotation(legendtitles.get(i)+":"+v[k], channelstab[i], 50);                              }                          else                         //series.add(50 - v[k] %10);                             {xyseries tempserie = dataset.getseriesat(i);                            tempserie.add(channelstab[i],50 - v[k] %10);                             tempserie.addannotation(legendtitles.get(i)+":"+v[k], channelstab[i], 50 - v[k] %10);                     //  series.toxyseries().add(7.5,50 - v[k] %10);                             }                          break;                     case -6 :                         //series.add(classobject[k]);                         if (v[k] %10 == 0)                             //series.add(60);                         {xyseries tempserie = dataset.getseriesat(i);                         tempserie.add(channelstab[i], 60);                         tempserie.addannotation(legendtitles.get(i)+":"+v[k], channelstab[i], 60);                          }                         else                         //series.add(60 - v[k] %10);                         {xyseries tempserie = dataset.getseriesat(i);                         tempserie.add(channelstab[i], 60 - v[k] %10);                         tempserie.addannotation(legendtitles.get(i)+":"+v[k], channelstab[i], 60 - v[k] %10);                          }                          break;                      case -5 :                         //series.add(classobject[k]);                         if (v[k] %10 == 0)                             //series.add(70);                         {xyseries tempserie = dataset.getseriesat(i);                         tempserie.add(channelstab[i], 70);                         tempserie.addannotation(legendtitles.get(i)+":"+v[k], channelstab[i], 70);                          }                         else                         //series.add(70 - v[k] %10);                         {xyseries tempserie = dataset.getseriesat(i);                         tempserie.add(channelstab[i], 70 - v[k] %10);                         tempserie.addannotation(legendtitles.get(i)+":"+v[k], channelstab[i], 70 - v[k] %10);                          }                          break;                     case -4 :                         //series.add(classobject[k]);                         if (v[k] %10 == 0)                             //series.add(80);                         {xyseries tempserie = dataset.getseriesat(i);                         tempserie.add(channelstab[i], 80);                         tempserie.addannotation(legendtitles.get(i)+":"+v[k], channelstab[i], 80);                          }                          else                         {xyseries tempserie = dataset.getseriesat(i);                         tempserie.add(channelstab[i], 80 - v[k] %10);                         tempserie.addannotation(legendtitles.get(i)+":"+v[k], channelstab[i], 80 - v[k] %10);                          }                           break;                     case -3 :                         //series.add(classobject[k]);                         if (v[k] %10 == 0)                         {xyseries tempserie = dataset.getseriesat(i);                         tempserie.add(channelstab[i], 90);                         tempserie.addannotation(legendtitles.get(i)+":"+v[k], channelstab[i], 90);                          }                         else                         //series.add(90 - v[k] %10);                         {xyseries tempserie = dataset.getseriesat(i);                         tempserie.add(channelstab[i], 90 - v[k] %10);                         tempserie.addannotation(legendtitles.get(i)+":"+v[k], channelstab[i], 90 - v[k] %10);                          }                          break;                       }                  }                }             return dataset;     }   public xymultipleseriesrenderer gettruitonbarrenderer(int length) {     xymultipleseriesrenderer renderer = new xymultipleseriesrenderer();     renderer.setaxistitletextsize(10);     renderer.setcharttitletextsize(20);     renderer.setlabelstextsize(10);     renderer.setlegendtextsize(10);     renderer.setmargins(new int[] { 30, 40, 15, 0 });     (int k = 0; k < length; k++)     {   log.i("simpleseriesrenderer" ,k+"");         simpleseriesrenderer r = new simpleseriesrenderer();         r.setcolor(color.rgb((int)(math.random() * 255), (int)(math.random() * 255), (int)math.random() * 255));         renderer.addseriesrenderer(r);     }       return renderer; }  @suppresswarnings("deprecation") private void mychartsettings(xymultipleseriesrenderer renderer) {     renderer.setcharttitle("wifi channels");     renderer.setxaxismin(-1);     renderer.setxaxismax(16);     renderer.setyaxismin(20);     renderer.setyaxismax(100);     renderer.addxtextlabel(1, "1");     renderer.addxtextlabel(2, "2");     renderer.addxtextlabel(3, "3");     renderer.addxtextlabel(4, "4");     renderer.addxtextlabel(5, "5");     renderer.addxtextlabel(6, "6");     renderer.addxtextlabel(7, "7");     renderer.addxtextlabel(8, "8");     renderer.addxtextlabel(9, "9");     renderer.addxtextlabel(10, "10");     renderer.addxtextlabel(11, "11");     renderer.addxtextlabel(12, "12");     renderer.addxtextlabel(13, "13");     renderer.addxtextlabel(14, "14");      renderer.addytextlabel(0, "");     renderer.addytextlabel(20, "-100");     renderer.addytextlabel(30, "-90");     renderer.addytextlabel(40, "-80");     renderer.addytextlabel(50, "-70");     renderer.addytextlabel(60, "-60");     renderer.addytextlabel(70, "-50");     renderer.addytextlabel(80, "-40");     renderer.addytextlabel(90, "-30");     renderer.addytextlabel(100, "");     renderer.setpanenabled(true, true);     renderer.setzoomenabled(true, true);        renderer.setapplybackgroundcolor(true);     renderer.setbackgroundcolor(color.black);     renderer.setylabelsalign(align.right);     renderer.setbarspacing(0.5);     renderer.setxtitle("canal du wifi");     renderer.setytitle("puissance du signal[dbm]");     renderer.setshowgrid(true);     renderer.setgridcolor(color.gray);     renderer.setxlabels(0); // sets number of integer labels appear   renderer.setxlabels((int) 0.5);//25     renderer.setylabels(10);     renderer.setbarwidth(10);// bar width     renderer.setxlabelsalign(align.left);  }       } 

well resolved problem ,to have eal time chart (bar chart ) ,i have change tho onreceive method bellow.i hope someone.

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));           }        }` 

Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -