package com.mm.android.deviceaddmodule.base; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.NetworkInfo; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.Parcelable; import com.dahua.mobile.utility.network.DHWifiUtil; import com.mm.android.deviceaddmodule.helper.DeviceAddHelper; import com.mm.android.deviceaddmodule.mobilecommon.entity.deviceadd.DeviceAddInfo; import com.mm.android.deviceaddmodule.model.DeviceAddModel; /** * 主要用于监听wifi状态的变化,变化的话就解除绑定,连接上后还是我们的那个的话就重新绑定 */ public abstract class BaseWifiListenerFragment extends BaseDevAddFragment { protected DHWifiUtil mDHWifiUtil; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mDHWifiUtil = new DHWifiUtil(getContext().getApplicationContext()); } @Override protected IntentFilter createBroadCast() { IntentFilter filter = new IntentFilter(); filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); return filter; } @Override protected void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) { Parcelable parcelable = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); if (parcelable != null) { NetworkInfo networkInfo = (NetworkInfo) parcelable; NetworkInfo.State state = networkInfo.getState(); if (state == NetworkInfo.State.DISCONNECTED) { DeviceAddHelper.clearNetWork(); } else if (state == NetworkInfo.State.CONNECTED) { DeviceAddInfo deviceAddInfo = DeviceAddModel.newInstance().getDeviceInfoCache(); String mSsid = deviceAddInfo.getSsid(); String mCurrentSsid = getCurrentWifiInfo(); if (mCurrentSsid!=null){ String mTempStr = mCurrentSsid.startsWith("\"") ? mCurrentSsid : "\""+mCurrentSsid+"\""; String mTempStrCache = "\"" + mSsid + "\""; if (mTempStr.equals(mTempStrCache)){ DeviceAddHelper.bindNetwork(null); } } } } } } public String getCurrentWifiInfo(){ WifiInfo wifiInfo = mDHWifiUtil.getCurrentWifiInfo(); return wifiInfo!=null?wifiInfo.getSSID():null; } @Override public void onDestroyView() { super.onDestroyView(); unRegisterBroadCast(); } }