add wifi register
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
package com.mogo.cloud.wifi;
|
||||
|
||||
import android.net.wifi.WifiInfo;
|
||||
|
||||
public interface IWifiStateListener {
|
||||
|
||||
void onWifiState(WifiInfo wifiInfo);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.mogo.cloud.wifi;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.wifi.WifiInfo;
|
||||
import android.net.wifi.WifiManager;
|
||||
|
||||
import com.mogo.cloud.utils.logger.Logger;
|
||||
|
||||
public class WifiBroadCastReceiver extends BroadcastReceiver {
|
||||
|
||||
private static final String TAG = "WifiBroadCastReceiver";
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
int wifiState = intent.getIntExtra("wifi_state", 0);
|
||||
WifiManager wifiManager = ((WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE));
|
||||
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
|
||||
if (wifiInfo != null) {
|
||||
Logger.d(TAG, "onReceive wifiInfo, update wifiState");
|
||||
WifiStateManager.getInstance().updateWifiState(wifiInfo);
|
||||
|
||||
int linkSpeed = wifiInfo.getLinkSpeed();
|
||||
Logger.d(TAG, "wifi linkSpeed : " + linkSpeed); //wifi连接速度
|
||||
//0到-50表示信号最好,-50到-70表示信号偏差,小于-70表示最差,有可能连接不上或者掉线
|
||||
int level = Math.abs(wifiInfo.getRssi());
|
||||
Logger.d(TAG, "wifi level : " + level); //wifi信号强度
|
||||
|
||||
switch (wifiState) {
|
||||
case WifiManager.WIFI_STATE_DISABLING:
|
||||
Logger.d(TAG, "WIFI State : DISABLING");
|
||||
break;
|
||||
case WifiManager.WIFI_STATE_DISABLED:
|
||||
Logger.d(TAG, "WIFI State : DISABLED");
|
||||
break;
|
||||
case WifiManager.WIFI_STATE_ENABLING:
|
||||
Logger.d(TAG, "WIFI State : ENABLING");
|
||||
break;
|
||||
case WifiManager.WIFI_STATE_ENABLED:
|
||||
Logger.d(TAG, "WIFI State : ENABLED");
|
||||
break;
|
||||
case WifiManager.WIFI_STATE_UNKNOWN:
|
||||
Logger.d(TAG, "WIFI State : UNKNOWN");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
46
app/src/main/java/com/mogo/cloud/wifi/WifiStateManager.java
Normal file
46
app/src/main/java/com/mogo/cloud/wifi/WifiStateManager.java
Normal file
@@ -0,0 +1,46 @@
|
||||
package com.mogo.cloud.wifi;
|
||||
|
||||
import android.net.wifi.WifiInfo;
|
||||
|
||||
import com.zhidao.manager.system.wifi.WifiState;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class WifiStateManager {
|
||||
|
||||
private WifiStateManager() {
|
||||
|
||||
}
|
||||
|
||||
public static WifiStateManager getInstance() {
|
||||
return Holder.wifiStateManager;
|
||||
}
|
||||
|
||||
private static final class Holder {
|
||||
private static final WifiStateManager wifiStateManager = new WifiStateManager();
|
||||
}
|
||||
|
||||
private final List<IWifiStateListener> wifiStateListeners = new ArrayList<>();
|
||||
|
||||
public void registerWifiStateListener(IWifiStateListener listener) {
|
||||
if (listener != null && !wifiStateListeners.contains(listener)) {
|
||||
wifiStateListeners.add(listener);
|
||||
}
|
||||
}
|
||||
|
||||
public void unRegisterWifiStateListener(IWifiStateListener listener) {
|
||||
if (listener != null) {
|
||||
wifiStateListeners.remove(listener);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateWifiState(WifiInfo wifiInfo) {
|
||||
if (wifiStateListeners.size() > 0) {
|
||||
for (IWifiStateListener listener : wifiStateListeners) {
|
||||
listener.onWifiState(wifiInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user