我查了文档,
好象应该在 WifiManager 中使用 EXTRA_NEW_RSSI
可是我不知道该怎样使用,请高手指教

解决方案 »

  1.   

    监听Wifi状态发生改变的广播,通过Intent的方法getExtra(WifiManager.EXTRA_NEW_RSSI
    )或者getXxxExtra()获取相应的值
      

  2.   

    能给写点代码吗?
    我现在还不会用 Intent 和广播
    非常感谢
      

  3.   

    public class WifisignalActivity extends Activity {
            TextView mainText;
            WifiManager mainWifi;
            WifiReceiver receiverWifi;
            List<ScanResult> wifiList;
            StringBuilder sb = new StringBuilder();        public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.main);
                    setTitle("eoe教程: Wifi Test.  -by:IceskYsl");
                    mainText = (TextView) findViewById(R.id.wifi);
                    mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);                receiverWifi = new WifiReceiver();
                    registerReceiver(receiverWifi, new IntentFilter(
                                    WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
                    mainWifi.startScan();
                    mainText.setText("\nStarting Scan...\n");
            }        public boolean onCreateOptionsMenu(Menu menu) {
                    menu.add(0, 0, 0, "Refresh");
                    return super.onCreateOptionsMenu(menu);
            }        public boolean onMenuItemSelected(int featureId, MenuItem item) {
                    mainWifi.startScan();
                    mainText.setText("Starting Scan");
                    return super.onMenuItemSelected(featureId, item);
            }        protected void onPause() {
                    unregisterReceiver(receiverWifi);
                    super.onPause();
            }        protected void onResume() {
                    registerReceiver(receiverWifi, new IntentFilter(
                                    WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
                    super.onResume();
            }        class WifiReceiver extends BroadcastReceiver 
            {
                    public void onReceive(Context c, Intent intent) 
                    {
                     //Bundle bd = intent.getExtras();
                     //if (bd != null)
                     //{
                     // int nrssi = bd.getInt(WifiManager.EXTRA_NEW_RSSI);
                     //}
                            sb = new StringBuilder();
                            wifiList = mainWifi.getScanResults();
                            //bd = intent.getExtras();
                            for (int i = 0; i < wifiList.size(); i++) 
                            {
                                    sb.append(new Integer(i + 1).toString() + ".");
                                    sb.append((wifiList.get(i)).toString());
                                    sb.append("\n\n");
                            }
                            mainText.setText(sb);
                    }
            }
    这是我在网上找的代码,运行后信号强度一直显示 -1,而且除了程序启动时能进入到 WifiReceiver 中,运行期间都没有进入过该函数,我有三个WIFI信号源
    注释的几行是我写的 INTENT,取到的 bundle 是 null 
    请大家指点下该怎样做,哪怕是个提示也行啊
      

  4.   


    不明白,我看到的 ScanResult 里的 level 都是 -1
      

  5.   

    using System;
    using System.Diagnostics;namespace WifiTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                Process proc = new Process();
                proc.StartInfo.CreateNoWindow = true;
                proc.StartInfo.FileName = "netsh";
                proc.StartInfo.Arguments = "wlan show networks mode=bssid";
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.UseShellExecute = false;
                proc.Start();
                string output = proc.StandardOutput.ReadToEnd();
                proc.WaitForExit();            Console.WriteLine(output);
                Console.Read();
            }
        }
    }