android 信号强度变化,android-监听wifi状态和信号强度变化

// /

// 监听网络网络状态变化

private MyReceiver mMyReceiver;

private final String NETWORK_STATE_CHANGE = "android.net.conn.CONNECTIVITY_CHANGE";

private void registReceiver() {

if (mMyReceiver != null)

return;

mMyReceiver = new MyReceiver();

IntentFilter filter = new IntentFilter();

filter.addAction(NETWORK_STATE_CHANGE);

filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);

filter.addAction(WifiManager.RSSI_CHANGED_ACTION);

registerReceiver(mMyReceiver, filter);

}

private void unregisterReceiver() {

if (mMyReceiver == null)

return;

unregisterReceiver(mMyReceiver);

mMyReceiver = null;

}

int[] wifiStateImgs = new int[] { R.drawable.selector_wifi_1,

R.drawable.selector_wifi_2, R.drawable.selector_wifi_3,

R.drawable.selector_wifi_4 };

private class MyReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

Logcat.d(TAG, "action: " + action);

if (action.equals(NETWORK_STATE_CHANGE)) {

boolean isNetOK = NetHelper

.isNetworkAvailable(MainActivity.this);

Logcat.d(TAG, "网络状态发生变化,是否可用:" + isNetOK);

if (isNetOK) {

initWifiState();

} else {

btnWifi.setBackgroundResource(R.drawable.selector_wifi_0);

}

} else if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {

int wifistate = intent.getIntExtra(

WifiManager.EXTRA_WIFI_STATE,

WifiManager.WIFI_STATE_DISABLED);

if (wifistate == WifiManager.WIFI_STATE_DISABLED) {

btnWifi.setBackgroundResource(R.drawable.selector_wifi_0);

} else if (wifistate == WifiManager.WIFI_STATE_ENABLED) {

updateWifiStrength();

}

} else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) {

initWifiState();

}

}

}

public int getStrength(Context context) {

WifiManager wifiManager = (WifiManager) context

.getSystemService(Context.WIFI_SERVICE);

WifiInfo info = wifiManager.getConnectionInfo();

if (info.getBSSID() != null) {

int strength = WifiManager.calculateSignalLevel(info.getRssi(), 4);

// 链接速度

// int speed = info.getLinkSpeed();

// // 链接速度单位

// String units = WifiInfo.LINK_SPEED_UNITS;

// // Wifi源名称

// String ssid = info.getSSID();

return strength;

}

return 0;

}

public void initWifiState() {

ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo info = manager

.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

Logcat.d(TAG, "info.isConnected(): " + info.isConnected());

if (info.isConnected()) {

updateWifiStrength();

} else {

btnWifi.setBackgroundResource(R.drawable.selector_wifi_0);

}

}

public void updateWifiStrength() {

int strength = getStrength(this);

if (strength >= 0 && strength <= 3)

btnWifi.setBackgroundResource(wifiStateImgs[strength]);

Logcat.d(TAG, "wifi strength: " + strength);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值