DiggieMon 2015-03-27 05:44 采纳率: 100%
浏览 2379
已采纳

android 扫描了WiFi信号强度,如何将他们赋给数组?

Handler handler = new Handler() {

public void handleMessage(Message msg) {

if (msg.what == 1) {

String wserviceName = Context.WIFI_SERVICE;

WifiManager wm = (WifiManager) getSystemService(wserviceName);

            WifiInfo info = wm.getConnectionInfo();     
            int strength = info.getRssi();  
            int speed = info.getLinkSpeed();    
            String units = WifiInfo.LINK_SPEED_UNITS;    
            String ssid = info.getSSID();    

            tv  = (TextView) findViewById(R.id.textView1);  

            List<ScanResult> results = wm.getScanResults();  
            String otherwifi = "检测到AP点: \n\n";  


            int[] ap;
            ap = new int[10];
            for (ScanResult result : results) {
                if(result.SSID.equals("9#729"))
                {
                    //apname.append(result.SSID + "");
                    ap[0]=result.level*(-1);
                    d0=(float) (0.02*(java.lang.Math.pow(2.71828,(strength*-0.1))));
                }
                if(result.SSID.equals("YHY"))
                {
                    //apname.append(result.SSID + "");
                    ap[1]=result.level*(-1);
                    d1=(float) (0.02*(java.lang.Math.pow(2.71828,(strength*-0.1))));
                }
                if(result.SSID.equals("9#731"))
                {
                    //apname.append(result.SSID + "");
                    ap[2]=result.level*(-1);
                    d2=(float) (0.02*(java.lang.Math.pow(2.71828,(strength*-0.1))));
                }
                if(result.SSID.equals("TP-LINK_366388"))
                {
                    //apname.append(result.SSID + "");
                    ap[3]=result.level*(-1);
                    d3=(float) (0.02*(java.lang.Math.pow(2.71828,(strength*-0.1))));
                }

                //otherwifi += result.SSID  + ":  " + result.level*(-1) + "\n";  
                float A[][] = {{-7,0},{-7,12},{0,12}};
            float b[] = {(float) (java.lang.Math.pow(d3,2)-java.lang.Math.pow(d0,2)-12.25),
                    (float) ((java.lang.Math.pow(d3,2)-java.lang.Math.pow(d1,2)-10000)+23.75),
                    (float) ((java.lang.Math.pow(d3,2)-java.lang.Math.pow(d2,2)-10000)+36)};

           //float At[][] ={{-200,-200,0},{0,400,400}}; 
           float AtA1At[][] = {{(float) -0.095,(float) -0.048,(float) 0.048},
                               {(float) -0.028,(float) 0.028,(float) 0.056}};
           float zuobiao[] = {(float) ((-0.095*(java.lang.Math.pow(d3,2)-java.lang.Math.pow(d0,2)-12.25))+(-.048*((java.lang.Math.pow(d3,2)-java.lang.Math.pow(d1,2))+23.75))+(0.048*((java.lang.Math.pow(d3,2)-java.lang.Math.pow(d2,2))+36))),
                                       (float) ((-0.028*(java.lang.Math.pow(d3,2)-java.lang.Math.pow(d0,2)-12.25))+(0.028*((java.lang.Math.pow(d3,2)-java.lang.Math.pow(d1,2))+23.75)+(0.056*((java.lang.Math.pow(d3,2)-java.lang.Math.pow(d2,2))+36))))};

            otherwifi = "你现在的位置:\n\n"+"("+(int) ((-0.095*(java.lang.Math.pow(d3,2)-java.lang.Math.pow(d0,2)-12.25))+(-.048*((java.lang.Math.pow(d3,2)-java.lang.Math.pow(d1,2))+23.75))+(0.048*((java.lang.Math.pow(d3,2)-java.lang.Math.pow(d2,2))+36)))
                            +","+
                            (int) ((-0.028*(java.lang.Math.pow(d3,2)-java.lang.Math.pow(d0,2)-12.25))+(0.028*((java.lang.Math.pow(d3,2)-java.lang.Math.pow(d1,2))+23.75)+(0.056*((java.lang.Math.pow(d3,2)-java.lang.Math.pow(d2,2))+36))))
                            +")"+"\n\n"+d0+"\n\n"+d1+"\n\n"+d2+"\n\n"+d3+"\n\n";


            }
           //  double y =java.lang.StrictMath.pow(strength*-1,1.0/n);
            //+ " at " + String.valueOf(speed) + "   " + String.valueOf(units)
            //String text = "[现在连接到] " + ssid  + ". 强度 : " + ((strength)+200) + "\n\n" + "[距离AP点大致距离]:\n"+ 0.02*(java.lang.Math.pow(2.71828,(strength*-0.1)))+"米";  
            //otherwifi += "\n\n";  
            //otherwifi += text;  

            tv.setText(otherwifi);  
        }  
        super.handleMessage(msg);  
    };  
};




    我就想问,那个strength变量,第一个if判断成功后,他的值就不变了,导致后面几个wifi的强度都一样………………谁能教我怎么改一下…………
  • 写回答

4条回答 默认 最新

  • Leafact 2015-03-27 05:59
    关注

    没大看懂,不是很理解你的意思,
    WifiInfo info = wm.getConnectionInfo();

    int strength = info.getRssi();
    这不是获得连接的wifi的信号强度么?不是本来就是一个定死的数值么?
    ScanResult有一个方法getRssi可以后的扫描到的ap的信号强度,不知道这是不是你想要的?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退