DiggieMon
DiggieMon
2015-03-27 05:44
采纳率: 100%
浏览 2.3k

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
    Leafact 2015-03-27 05:59
    已采纳

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

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

    点赞 评论
  • DiggieMon
    DiggieMon 2015-03-27 05:48

    跪求大神解答…………………………小弟新手+菜鸟,万分无助中………………………………

    点赞 评论
  • leafact
    Leafact 2015-03-27 06:01

    ScanResult 的Rssi貌似只有蓝牙有,wifi 的扫描结果只有一个level,说说你的想法,我没大理解

    点赞 评论
  • leafact
    Leafact 2015-03-27 07:23

    android中scanResult.level获取到的level和Wi-Fi的RSSI值有没有区别?若没区别为什么level总为负而RSSI总为正?若有区别通过level能否得到RSSI?

    
    网友回复:
    
    

    网友回复:
    RSSI = level - NoiceFloor

    NoiceFloor一般取-96dBm

    这样如果 level 是 -60dBm, RSSI 就是 36

    点赞 评论

相关推荐