蓝牙连接不稳定修复
This commit is contained in:
@@ -57,6 +57,8 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
private EspProvisionManager espProvisionManager;
|
||||
private boolean isBleConnecting = false;
|
||||
private boolean isBleConnected = false;
|
||||
private boolean keepBleConnectionForProvision = false;
|
||||
private Handler bleConnectHandler = new Handler();
|
||||
|
||||
@Override
|
||||
public DevicePresenter createPresenter() {
|
||||
@@ -67,7 +69,7 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
|
||||
wifiScanReceiver = new WifiScanReceiver();
|
||||
wifiScanReceiver = new SelectWifiActivity.WifiScanReceiver();
|
||||
ActivityManager.addActivity(this,getClass().getSimpleName() + "_" + ConstantUtil.ADD_DEVICE_FLAG);
|
||||
}
|
||||
|
||||
@@ -86,7 +88,8 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
if (WITCH_FROM_CODE == 100 && espProvisionManager != null) {
|
||||
bleConnectHandler.removeCallbacksAndMessages(null);
|
||||
if (WITCH_FROM_CODE == 100 && espProvisionManager != null && !keepBleConnectionForProvision) {
|
||||
espProvisionManager.disconnect();
|
||||
espProvisionManager.setCallback(null);
|
||||
}
|
||||
@@ -115,7 +118,7 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
initWifiList();
|
||||
if (WITCH_FROM_CODE == 100) {
|
||||
initEspProvision();
|
||||
connectBleDevice();
|
||||
scheduleBleConnect();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,7 +157,7 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
boolean hasPermission = hasRecordPermission(permission);
|
||||
if(!hasPermission){
|
||||
goTo(mContext, PermissionActivity.class,null);
|
||||
}else{
|
||||
return;
|
||||
}
|
||||
scanWifi();
|
||||
break;
|
||||
@@ -168,12 +171,13 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
ToastUtil.showShort(mContext,getString(R.string.toast_select_wifi_psd_tip));
|
||||
return;
|
||||
}
|
||||
String wifiPassword = viewBinding.etInputPsd.getText().toString();
|
||||
if(WITCH_FROM_CODE == 100){
|
||||
provisionWifi();
|
||||
goToDeviceConnect(wifiPassword);
|
||||
}else{
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra("wifi_name",mWifiName);
|
||||
intent.putExtra("wifi_psd",viewBinding.etInputPsd.getText().toString());
|
||||
intent.putExtra("wifi_psd",wifiPassword);
|
||||
setResult(RESULT_OK,intent);
|
||||
finish();
|
||||
}
|
||||
@@ -181,6 +185,32 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
}
|
||||
}
|
||||
|
||||
private void goToDeviceConnect(String wifiPassword) {
|
||||
if (espProvisionManager == null) {
|
||||
initEspProvision();
|
||||
}
|
||||
if (mBleDeviceEntity == null) {
|
||||
ToastUtil.showShort(mContext, "\u8bbe\u5907\u8fde\u63a5\u672a\u521d\u59cb\u5316");
|
||||
return;
|
||||
}
|
||||
isBleConnected = espProvisionManager != null && espProvisionManager.isConnected();
|
||||
if (!isBleConnected) {
|
||||
if (!isBleConnecting) {
|
||||
scheduleBleConnect();
|
||||
}
|
||||
ToastUtil.showShort(mContext, "\u8bbe\u5907\u8fde\u63a5\u4e2d\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5");
|
||||
return;
|
||||
}
|
||||
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("wifi_name", mWifiName);
|
||||
bundle.putString("wifi_password", wifiPassword);
|
||||
bundle.putSerializable("ble_device_entity", mBleDeviceEntity);
|
||||
keepBleConnectionForProvision = true;
|
||||
goTo(mContext, DeviceConnectActivity.class, bundle);
|
||||
finish();
|
||||
}
|
||||
|
||||
/**
|
||||
* 配置网络
|
||||
*/
|
||||
@@ -215,6 +245,8 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
isBleConnecting = false;
|
||||
isBleConnected = true;
|
||||
Log.i("TEST","onConnected设备连接成功");
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext, "设备连接成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -252,11 +284,13 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
isBleConnected = false;
|
||||
hideDialogLoading();
|
||||
Log.i("TEST","onDisconnected");
|
||||
hideDialogLoading();
|
||||
ToastUtil.showShort(mContext, "设备已断开");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWifiListReceived(String[] wifiList) {
|
||||
|
||||
Log.i("TEST","onWifiListReceived-Msg==" + wifiList.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -274,6 +308,16 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
/**
|
||||
* 连接设备
|
||||
*/
|
||||
private void scheduleBleConnect() {
|
||||
bleConnectHandler.removeCallbacksAndMessages(null);
|
||||
bleConnectHandler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
connectBleDevice();
|
||||
}
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
private void connectBleDevice() {
|
||||
if (WITCH_FROM_CODE != 100 || mBleDeviceEntity == null || espProvisionManager == null) {
|
||||
return;
|
||||
@@ -281,6 +325,7 @@ public class SelectWifiActivity extends BaseActivity<DeviceResetWifiBinding, Dev
|
||||
if (isBleConnected || isBleConnecting) {
|
||||
return;
|
||||
}
|
||||
showLoadingDialog();
|
||||
espProvisionManager.connect(mBleDeviceEntity.getMacAddress(), mBleDeviceEntity.getDeviceName());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user