蓝牙连接不稳定修复

This commit is contained in:
fengjignqi
2026-06-10 11:34:47 +08:00
parent 121c69fdfc
commit 2a933d09a4
6 changed files with 711 additions and 30 deletions

View File

@@ -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());
}