Android獲取當(dāng)前已連接的wifi信號強(qiáng)度的方法
本文實(shí)例講述了Android獲取當(dāng)前已連接的wifi信號強(qiáng)度的方法,是Android程序開發(fā)中非常常見的重要技巧。分享給大家供大家參考之用。具體方法如下:
1.得到當(dāng)前已連接的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();獲取網(wǎng)絡(luò)ID。
wifiinfo.getLinkSpeed();獲取連接速度,可以讓用戶獲知這一信息。
wifiinfo.getRssi();獲取RSSI,RSSI就是接受信號強(qiáng)度指示。在這可以直接和華為提供的Wi-Fi信號閾值進(jìn)行比較來提供給用戶,讓用戶對網(wǎng)絡(luò)或地理位置做出調(diào)整來獲得最好的連接效果。
這里得到信號強(qiáng)度就靠wifiinfo.getRssi();這個(gè)方法。
2.得到的值是一個(gè)0到-100的區(qū)間值,是一個(gè)int型數(shù)據(jù),其中0到-50表示信號最好,-50到-70表示信號偏差,小于-70表示最差,有可能連接不上或者掉線。
這里我做的是根據(jù)信號強(qiáng)度來更換圖片。設(shè)置配置文件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>
注意這里都是絕對值,因?yàn)樵趇mageView.setImageLevel(level)時(shí),level必須是絕對值,否則程序會(huì)報(bào)告空指針。
3.注冊偵聽,和android 電池偵聽顯示類似
// wifi相關(guān) IntentFilter wifiIntentFilter; // wifi監(jiān)聽器
在oncreate方法中加入:
// wifi wifiIntentFilter = new IntentFilter(); wifiIntentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
4.然后再:
// 聲明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;
}
}
};
5.在onResume方法中注冊,在onPause方法中銷毀:
@Override
protected void onResume() {
super.onResume();
// 注冊wifi消息處理器
registerReceiver(wifiIntentReceiver, wifiIntentFilter);
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(wifiIntentReceiver);
}
6.最后加入權(quán)限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
相信本文所述對大家的Android程序設(shè)計(jì)有一定的借鑒價(jià)值。
- 解決Android 6.0獲取wifi Mac地址為02:00:00:00:00:00問題
- Android開發(fā)實(shí)現(xiàn)在Wifi下獲取本地IP地址的方法
- Android編程獲取Wifi名稱(SSID)的方法
- Android獲取周圍WIFI熱點(diǎn)服務(wù)
- Android獲取當(dāng)前手機(jī)網(wǎng)絡(luò)類型(2g、3g、4g、wifi)以及手機(jī)型號、版本號代碼
- Android編程實(shí)現(xiàn)獲取當(dāng)前連接wifi名字的方法
- android連接wifi時(shí)獲取廣播地址代碼
- Android獲取wifi列表的方法
相關(guān)文章
Android提高之MediaPlayer播放網(wǎng)絡(luò)視頻的實(shí)現(xiàn)方法
這篇文章主要介紹了Android的MediaPlayer播放網(wǎng)絡(luò)視頻的實(shí)現(xiàn)方法,是一個(gè)非常實(shí)用的功能,需要的朋友可以參考下2014-08-08
Android實(shí)現(xiàn)第三方授權(quán)登錄、分享以及獲取用戶資料
本篇文章介紹了Android實(shí)現(xiàn)第三方授權(quán)登錄、分享以及獲取用戶資料,詳細(xì)的介紹了第三方授權(quán)登錄的實(shí)現(xiàn)代碼,有需要的朋友可以了解一下。2016-11-11
android為ListView每個(gè)Item上面的按鈕添加事件
本篇文章主要介紹了android為ListView每個(gè)Item上面的按鈕添加事件,有興趣的同學(xué)可以了解一下。2016-11-11
android 捕捉異常并上傳至服務(wù)器的簡單實(shí)現(xiàn)
本篇文章主要介紹了android 捕捉異常并上傳至服務(wù)器的簡單實(shí)現(xiàn),具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04
Android中TextView顯示圓圈背景或設(shè)置圓角的方法
TextView顯示文本給用戶,并允許他們選擇編輯。TextView是一個(gè)完整的文本編輯器,但是其基本類配置為不允許編輯。下面這篇文章主要給大家介紹了關(guān)于Android中TextView顯示圓圈背景或設(shè)置圓角的方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-05-05
Android 8.0版本更新無法自動(dòng)安裝問題的解決方法
這篇文章主要為大家詳細(xì)介紹了Android 8.0版本更新無法自動(dòng)安裝問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
android 判斷網(wǎng)絡(luò)是否可用與連接的網(wǎng)絡(luò)是否能上網(wǎng)
下面小編就為大家分享一篇android 判斷網(wǎng)絡(luò)是否可用與連接的網(wǎng)絡(luò)是否能上網(wǎng),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
Android 單例模式的四種實(shí)現(xiàn)方式
單例模式作為設(shè)計(jì)模式之一,使用場景非常多。本文講述了Android實(shí)現(xiàn)單例模式的幾種方式2021-05-05
Kotlin中l(wèi)et()with()run()apply()also()函數(shù)的使用方法與區(qū)別
在Kotlin中的源碼標(biāo)準(zhǔn)庫(Standard.kt)中提供了一些Kotlin擴(kuò)展的內(nèi)置函數(shù)可以優(yōu)化kotlin的編碼,今天為大家聊聊let,with,run,apply,also幾個(gè)函數(shù)的用法與區(qū)別2018-03-03

