package me.yoqi.android.netauth.service; import android.os.AsyncTask; import android.os.Build; import android.service.quicksettings.Tile; import android.service.quicksettings.TileService; import androidx.annotation.RequiresApi; import me.yoqi.android.netauth.R; import me.yoqi.android.netauth.utils.NtutNet; import me.yoqi.android.utils.NetUtils; import me.yoqi.android.utils.SPUtils; /** 上网认证服务 * @author liuyuqi.gov@msn.cn * @created 2020-10-17 */ @RequiresApi(api = Build.VERSION_CODES.N) public class QSTileService extends TileService { SPUtils spUtils; Tile tile; NtutNet cdutNet = new NtutNet(); /** * 图标可见回调 */ @Override public void onStartListening() { super.onStartListening(); if (NetUtils.isWifiConnected(this)) { updateStatus(R.string.tile_label, false); } else {// 未连接 WiFi 则将图块置为不可用状态 updateStatus(R.string.tile_status_no_net_conn, false); } } @Override public void onClick() { super.onClick(); tile = getQsTile(); new MyTask().execute(); } /** * 更新状态 * * @param labelId * @param enable */ void updateStatus(int labelId, boolean enable) { tile = getQsTile(); tile.setLabel(getString(labelId)); if (enable) { tile.setState(Tile.STATE_ACTIVE); //登录校园网成功 } else { tile.setState(Tile.STATE_UNAVAILABLE); } tile.updateTile(); } /** * 异步登录 */ class MyTask extends AsyncTask { @Override protected Boolean doInBackground(String... strings) { //更新状态 publishProgress(R.string.tile_status_check); Boolean res = cdutNet.check(); if (res == null) { publishProgress(R.string.tile_status_not); // 未连接校园网 return false; } else if (res) { publishProgress(R.string.tile_status_ok); //登录成功 return true; } else { //执行登录 if (cdutNet.login("ss", "236")) { publishProgress(R.string.tile_status_failed); //登录失败 return false; } else return true; } } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); // updateStatus(values[0], false); } } }