java wifi 断开_java – Android检查WIFI状态(断开或用户更改WIFI)如何标记?

如果用户实际上更改了WIFI网络,我有没有办法标记WIFI连接是否断开/掉线?

我需要我的应用程序:

连接到WIFI XYZ,如果XYZ断开(FLAG 1)或掉线,然后重新连接到XYZ.

但是用户更改为另一个WiFi BTOpen(FLAG 2),然后允许连接和停止我的服务.

如果用户再次连接到XYZ,再次启动循环.

我到目前为止是:

广播接收器:

myApplication = (MyApplication) context.getApplicationContext();

conManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

networkInfo = conManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

boolean isConnected = networkInfo != null && networkInfo.isConnected();

int reconnectedCount = myApplication.getReconnectedCount();

if (wifiManager.isWifiEnabled()) {

if("android.net.conn.CONNECTIVITY_CHANGE".equals(intent.getAction())) {

//Start and Stop Service

if(myApplication.isReconnect()) startServiceWifiMonitor(); else stopServiceWifiMonitor();

if (isConnected) {

//There is a WIFI Connection

myApplication.setConnectedWifi(NetworkUtil.getCurrentSSID(context));

myApplication.setWifiStatus("connected");

if (NetworkUtil.isConnectedToXYZ(context)) {

startServiceWifiMonitor();

if(pref.getisFirstTime())

{

myApplication.setWifiByChoise("XYZ");

pref.setisFirstTime(false);

}

else { myApplication.setisReconnect(true); }

}

else {

//Connected to different NetWork

if(myApplication.isReconnect() && NetworkUtil.isXYZAvailable(context))

{

//ReConnect to XYZ

NetworkUtil.connectToXYZ(context);

myApplication.setReconnectedCount(reconnectedCount++);

}

else { resetValues("AAAA"); }

}

}//end if

else

{

if(NetworkUtil.isXYZAvailable(context) && myApplication.getWifiByChoise().equals("XYZ"))

{

NetworkUtil.connectToXYZ(context);

myApplication.setReconnectedCount(reconnectedCount++);

}

else { resetValues(""); }

}

}//end CONNECTIVITY_CHANGE

服务监控:

@Override

public int onStartCommand(Intent intent,int flags,int startId) {

Log.i(TAG,"onStartCommand > Received start id " + startId + ": " + intent);

objHandler.postDelayed(mTasks,1000);

return START_STICKY;

}//end onStartCommand

private Runnable mTasks = new Runnable() {

public void run() {

if(myApplication.getWifiByChoise().equals("XYZ") && NetworkUtil.isXYZAvailable(context)) {

try

{

//Get the numbers of Reconnection

int count = myApplication.getReconnectedCount();

if(!NetworkUtil.isWifiConnected(context))

{

NetworkUtil.connectToXYZ(context);

myApplication.setisReconnect(true);

myApplication.setReconnectedCount(count++);

}

if(!NetworkUtil.isConnectedToXYZ(context))

{

NetworkUtil.connectToXYZ(context);

myApplication.setisReconnect(true);

myApplication.setReconnectedCount(count++);

}

} catch (Exception e) {e.printStackTrace();}

}

else { stopSelf(); }

int ms_interval = 3000;

objHandler.postDelayed(mTasks,ms_interval);

}

};//end Runnable mTasks

我的应用程序的问题是:

它坠毁了设备,好像它吃掉了所有的记忆体.

有时候与wifi的XYZ断开连接不会再连接,如果用户更改为另一个wifi,它将不允许连接.

我非常感谢你的帮助.谢谢.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值