优化
This commit is contained in:
@@ -45,6 +45,8 @@ import java.util.Set;
|
||||
public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, DevicePresenter>
|
||||
implements DeviceContract.DeviceView {
|
||||
|
||||
private static final long BLE_CONNECT_TIMEOUT = 40 * 1000L;
|
||||
|
||||
private WifiListAdapter wifiListAdapter;
|
||||
//100 来自设备添加, 200 来自设备信息
|
||||
private int WITCH_FROM_CODE = 100;
|
||||
@@ -57,9 +59,23 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
private boolean isBleConnecting = false;
|
||||
private boolean isBleConnected = false;
|
||||
private boolean keepBleConnectionForProvision = false;
|
||||
private Handler bleConnectHandler = new Handler();
|
||||
private boolean isBleConnectTimedOut = false;
|
||||
private boolean isBleConnectTimeoutRunning = false;
|
||||
private Handler bleConnectHandler = new Handler(Looper.getMainLooper());
|
||||
private AnimationDrawable animationDrawable;
|
||||
private Handler handler = new Handler(Looper.getMainLooper());
|
||||
private final Runnable bleConnectTask = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
connectBleDevice();
|
||||
}
|
||||
};
|
||||
private final Runnable bleConnectTimeoutTask = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
handleBleConnectTimeout();
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public DevicePresenter createPresenter() {
|
||||
@@ -75,7 +91,7 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
bleConnectHandler.removeCallbacksAndMessages(null);
|
||||
cancelBleConnectTask();
|
||||
if (WITCH_FROM_CODE == 100 && espProvisionManager != null && !keepBleConnectionForProvision) {
|
||||
espProvisionManager.disconnect();
|
||||
espProvisionManager.setCallback(null);
|
||||
@@ -219,6 +235,7 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
bundle.putString("wifi_password", wifiPassword);
|
||||
bundle.putSerializable("ble_device_entity", mBleDeviceEntity);
|
||||
keepBleConnectionForProvision = true;
|
||||
cancelBleConnectTask();
|
||||
goTo(mContext, DeviceConnectActivity.class, bundle);
|
||||
finish();
|
||||
}
|
||||
@@ -231,6 +248,7 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
public void onConnecting() {
|
||||
isBleConnecting = true;
|
||||
isBleConnected = false;
|
||||
startBleConnectTimeout();
|
||||
Log.i("TEST","onConnecting");
|
||||
}
|
||||
|
||||
@@ -238,6 +256,7 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
public void onConnected() {
|
||||
isBleConnecting = false;
|
||||
isBleConnected = true;
|
||||
cancelBleConnectTask();
|
||||
Log.i("TEST","onConnected设备连接成功");
|
||||
stopConnectAnimation();
|
||||
ToastUtil.showShort(mContext, getString(R.string.device_connected_success));
|
||||
@@ -265,6 +284,7 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
|
||||
@Override
|
||||
public void onFailed(int errorCode, String message) {
|
||||
cancelBleConnectTask();
|
||||
isBleConnecting = false;
|
||||
if (errorCode != 0) {
|
||||
isBleConnected = espProvisionManager != null && espProvisionManager .isConnected();
|
||||
@@ -279,8 +299,12 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
public void onDisconnected() {
|
||||
isBleConnecting = false;
|
||||
isBleConnected = false;
|
||||
cancelBleConnectTask();
|
||||
stopConnectAnimation();
|
||||
Log.i("TEST","onDisconnected");
|
||||
if (isBleConnectTimedOut) {
|
||||
return;
|
||||
}
|
||||
ToastUtil.showShort(mContext, getString(R.string.device_disconnected));
|
||||
}
|
||||
|
||||
@@ -306,13 +330,9 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
*/
|
||||
private void scheduleBleConnect() {
|
||||
startConnectAnimation();
|
||||
bleConnectHandler.removeCallbacksAndMessages(null);
|
||||
bleConnectHandler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
connectBleDevice();
|
||||
}
|
||||
}, 1000);
|
||||
startBleConnectTimeout();
|
||||
bleConnectHandler.removeCallbacks(bleConnectTask);
|
||||
bleConnectHandler.postDelayed(bleConnectTask, 1000);
|
||||
}
|
||||
|
||||
private void connectBleDevice() {
|
||||
@@ -326,6 +346,40 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
mBleDeviceEntity.getDeviceName());
|
||||
}
|
||||
|
||||
private void startBleConnectTimeout() {
|
||||
if (isBleConnected || keepBleConnectionForProvision) {
|
||||
return;
|
||||
}
|
||||
if (isBleConnectTimeoutRunning) {
|
||||
return;
|
||||
}
|
||||
isBleConnectTimedOut = false;
|
||||
isBleConnectTimeoutRunning = true;
|
||||
bleConnectHandler.removeCallbacks(bleConnectTimeoutTask);
|
||||
bleConnectHandler.postDelayed(bleConnectTimeoutTask, BLE_CONNECT_TIMEOUT);
|
||||
}
|
||||
|
||||
private void cancelBleConnectTask() {
|
||||
isBleConnectTimeoutRunning = false;
|
||||
bleConnectHandler.removeCallbacks(bleConnectTask);
|
||||
bleConnectHandler.removeCallbacks(bleConnectTimeoutTask);
|
||||
}
|
||||
|
||||
private void handleBleConnectTimeout() {
|
||||
if (WITCH_FROM_CODE != 100 || isBleConnected || keepBleConnectionForProvision) {
|
||||
return;
|
||||
}
|
||||
isBleConnectTimedOut = true;
|
||||
isBleConnecting = false;
|
||||
cancelBleConnectTask();
|
||||
if (espProvisionManager != null) {
|
||||
espProvisionManager.disconnect();
|
||||
}
|
||||
stopConnectAnimation();
|
||||
ToastUtil.showShort(mContext, getString(R.string.ble_connect_timeout));
|
||||
finish();
|
||||
}
|
||||
|
||||
private void scanWifi() {
|
||||
showLoadingDialog();
|
||||
viewBinding.tvNext.setVisibility(View.GONE);
|
||||
|
||||
Reference in New Issue
Block a user