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的強度都一樣………………誰能教我怎麼改一下…………
沒大看懂,不是很理解你的意思,
WifiInfo info = wm.getConnectionInfo();
int strength = info.getRssi();
這不是獲得連接的wifi的信號強度麼?不是本來就是一個定死的數值麼?
ScanResult有一個方法getRssi可以後的掃描到的ap的信號強度,不知道這是不是你想要的?