1. Wifi 상태를 나타낼떄, 단계별로 나눠야할떄가 있다.
2. 아래 소스를 참고하여 5단계로 나누어 보여줄 수 있다.
(0 ~ 4 레벨로 표시)
private int beforeWifiLevel = 0; // 이전 wifi 수신 레벨
@Override
protected void onResume() {
super.onResume();
// wifi 수신감도 체크 리시버 등록
IntentFilter rssiFilter = new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
this.registerReceiver(myRssiChangeReceiver, rssiFilter);
WifiManager wifiMan=(WifiManager)getSystemService(Context.WIFI_SERVICE);
wifiMan.startScan();
}
@Override
public void onPause() {
super.onPause();
// wifi 수신감도 리시버 삭제
this.unregisterReceiver(myRssiChangeReceiver);
}
/**
* wifi 수신감도 리시버
* @author 임성진
* @since 오전 12:35
**/
private BroadcastReceiver myRssiChangeReceiver
= new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
WifiManager wifiMan=(WifiManager)getSystemService(Context.WIFI_SERVICE);
wifiMan.startScan();
int numberOfLevels = 5;
WifiInfo wifiInfo = wifiMan.getConnectionInfo();
int level = WifiManager.calculateSignalLevel(wifiInfo.getRssi(), numberOfLevels);
if (beforeWifiLevel != level) {
Toast.makeText(this, "" + level, Toast.LENGTH_SHORT).show();
}
beforeWifiLevel = level;
}};