android 得到當前已串連的wifi的訊號強度

來源:互聯網
上載者:User

 得到當前已串連的wifi資訊

WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifi_service.getConnectionInfo();

其中wifiInfo有以下的方法:

wifiinfo.getBSSID();

wifiinfo.getSSID();

wifiinfo.getIpAddress();擷取IP地址。

wifiinfo.getMacAddress();擷取MAC地址。

wifiinfo.getNetworkId();擷取網路ID。

wifiinfo.getLinkSpeed();擷取連線速度,可以讓使用者獲知這一資訊。

wifiinfo.getRssi();擷取RSSI,RSSI就是接受訊號強度指示。在這可以直 接和華為提供的Wi-Fi訊號閾值進行比較來提供給使用者,讓使用者對網路或地理位置做出調整來獲得最好的串連效果。

這裡得到訊號強度就靠wifiinfo.getRssi();這個方法。

 

得到的值是一個0到-100的區間值,是一個int型資料,其中0到-50表示訊號最好,-50到-70表示訊號偏差,小於-70表示最差,有可能串連不上或者掉線。

這裡我做的是根據訊號強度來更換圖片。設定設定檔wifi_sel.xml如下:

<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:maxLevel="50" android:drawable="@drawable/library_template_05" />
    <item android:maxLevel="70" android:drawable="@drawable/library_template_05_2" />
    <item android:maxLevel="100" android:drawable="@drawable/library_template_05_3" />
</level-list>

注意這裡都是絕對值,因為在imageView.setImageLevel(level)時,level必須是絕對值,否則程式會報告null 指標。

接下來就是註冊偵聽,和android 電池偵聽顯示類似

// wifi相關
IntentFilter wifiIntentFilter; // wifi監聽器

在oncreate方法中加入:

// wifi
        wifiIntentFilter = new IntentFilter();
        wifiIntentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);

然後再:

// 聲明wifi訊息處理過程
    private BroadcastReceiver wifiIntentReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            int wifi_state = intent.getIntExtra("wifi_state", 0);
            int level = Math.abs(((WifiManager)getSystemService(WIFI_SERVICE)).getConnectionInfo().getRssi());
            Log.i(Global.TAG, "1111:" + level);
            switch (wifi_state) {
            case WifiManager.WIFI_STATE_DISABLING:
                Log.i(Global.TAG, "1111:" + WifiManager.WIFI_STATE_DISABLING);
                wifi_image.setImageResource(R.drawable.wifi_sel);
                wifi_image.setImageLevel(level);
                break;
            case WifiManager.WIFI_STATE_DISABLED:
                Log.i(Global.TAG, "2222:" + WifiManager.WIFI_STATE_DISABLED);
                wifi_image.setImageResource(R.drawable.wifi_sel);
                wifi_image.setImageLevel(level);
                break;
            case WifiManager.WIFI_STATE_ENABLING:
                wifi_image.setImageResource(R.drawable.wifi_sel);
                wifi_image.setImageLevel(level);
                Log.i(Global.TAG, "33333:" + WifiManager.WIFI_STATE_ENABLING);
                break;
            case WifiManager.WIFI_STATE_ENABLED:
                Log.i(Global.TAG, "4444:" + WifiManager.WIFI_STATE_ENABLED);
                wifi_image.setImageResource(R.drawable.wifi_sel);
                wifi_image.setImageLevel(level);
                break;
            case WifiManager.WIFI_STATE_UNKNOWN:
                Log.i(Global.TAG, "5555:" + WifiManager.WIFI_STATE_UNKNOWN);
                wifi_image.setImageResource(R.drawable.wifi_sel);
                wifi_image.setImageLevel(level);
                break;
            }
        }
    };

在onResume方法中註冊,在onPause方法中銷毀:

@Override
    protected void onResume() {
        super.onResume(); 
        // 註冊wifi訊息處理器
        registerReceiver(wifiIntentReceiver, wifiIntentFilter);
    }

    @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(wifiIntentReceiver);
    }

最後加入許可權:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

註明:QQ技術交流群:108614806   感興趣的加一下。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.