From 1ecce65f9676c1f81d7b4aea83905d16c7bb34c6 Mon Sep 17 00:00:00 2001 From: lz1asl Date: Mon, 18 Sep 2023 21:42:06 +0300 Subject: [PATCH] connection success with distoxble --- .../cave/survey/activity/main/BTActivity.java | 5 ++++- .../survey/service/bluetooth/BluetoothService.java | 14 ++++++-------- .../device/DiscoveredBluetoothDevice.java | 6 +++++- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/astoev/cave/survey/activity/main/BTActivity.java b/src/main/java/com/astoev/cave/survey/activity/main/BTActivity.java index 3b2cb14f..15450f48 100644 --- a/src/main/java/com/astoev/cave/survey/activity/main/BTActivity.java +++ b/src/main/java/com/astoev/cave/survey/activity/main/BTActivity.java @@ -231,6 +231,9 @@ protected void onPause() { @Override public void refresh() { - runOnUiThread(() -> updateDeviceStatus()); + runOnUiThread(() -> { + refreshDevicesList(); + updateDeviceStatus(); + }); } } diff --git a/src/main/java/com/astoev/cave/survey/service/bluetooth/BluetoothService.java b/src/main/java/com/astoev/cave/survey/service/bluetooth/BluetoothService.java index 4941c30d..941adca3 100644 --- a/src/main/java/com/astoev/cave/survey/service/bluetooth/BluetoothService.java +++ b/src/main/java/com/astoev/cave/survey/service/bluetooth/BluetoothService.java @@ -289,9 +289,10 @@ public static synchronized void selectDevice(final DiscoveredBluetoothDevice aDe Log.i(LOG_TAG_BT, "No device selected"); return; } + + mSelectedDevice = aDevice; BluetoothDevice deviceRef = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(aDevice.address); aDevice.device = deviceRef; - mSelectedDevice = aDevice; Log.i(LOG_TAG_BT, "Selected " + aDevice.address + " : " + mSelectedDevice + " of type " + aDevice.definition.getDescription()); @@ -319,6 +320,7 @@ public static synchronized void selectDevice(final DiscoveredBluetoothDevice aDe // check if we need to connect from scratch or just reconnect to previous device if (mBluetoothGatt != null) {// && aDeviceAddress.equals(mBluetoothGatt.getDevice().getAddress())) { Log.i(LOG_TAG_BT, "Reset LE"); + stopDiscoverBluetoothLEDevices(); mBluetoothGatt.close(); } Log.i(LOG_TAG_BT, "Connecting LE"); @@ -347,7 +349,7 @@ public static AbstractBluetoothDevice getSupportedDevice(BluetoothDevice aDevice } } } - Log.d(LOG_TAG_BT, "Search supported LE device for " + name + " and services " + leServices); + Log.d(LOG_TAG_BT, "Search supported LE device for name " + name + " and services " + leServices); for (AbstractBluetoothLEDevice device : SUPPORTED_BLUETOOTH_LE_DEVICES) { if (device.isTypeCompatible(aDevice) && ((StringUtils.isNotEmpty(name) && device.isNameSupported(name)) || device.isServiceSupported(leServices))) { @@ -394,7 +396,7 @@ public static String getCurrDeviceStatus() { return mCurrContext.getString(mLeDeviceState); } - if (mSelectedDevice.definition instanceof AbstractBluetoothRFCOMMDevice) { + if (mSelectedDevice != null && mSelectedDevice.definition instanceof AbstractBluetoothRFCOMMDevice) { switch (mSelectedDevice.device.getBondState()) { case BluetoothDevice.BOND_BONDED: return mCurrContext.getString(R.string.bt_state_bonded); @@ -518,11 +520,7 @@ public void onScanFailed(int errorCode) { }; final BluetoothManager btManager = (BluetoothManager) ConfigUtil.getContext().getSystemService(BLUETOOTH_SERVICE); -// List filters = Arrays.asList(new ScanFilter.Builder().setServiceUuid(ParcelUuid.fromString(DistoXBleDevice.READ_SERVICE_UUID.toString())).build()); -// ScanSettings settings = new ScanSettings.Builder() -// .setScanMode(SCAN_MODE_BALANCED).setMatchMode(MATCH_MODE_STICKY).setCallbackType(CALLBACK_TYPE_FIRST_MATCH).build(); btManager.getAdapter().getBluetoothLeScanner().startScan(callback); -// btManager.getAdapter().getBluetoothLeScanner().startScan(filters, settings, callback); return callback; } @@ -534,7 +532,7 @@ private static void handleDeviceDiscovered(BluetoothDevice device, int rssi, Sca AbstractBluetoothDevice deviceSpec = BluetoothService.getSupportedDevice(device, aScanRecord.getServiceUuids()); if (deviceSpec != null && deviceSpec instanceof AbstractBluetoothLEDevice) { - Log.i(LOG_TAG_BT, "Discovered LE device " + rssi + " : " + name); + Log.i(LOG_TAG_BT, "Discovered LE device " + rssi + " : " + name + " : " + aScanRecord.getServiceUuids()); mLastLEDevice = new DiscoveredBluetoothDevice(deviceSpec, name, device.getAddress()); mLastLEDevice.device = device; diff --git a/src/main/java/com/astoev/cave/survey/service/bluetooth/device/DiscoveredBluetoothDevice.java b/src/main/java/com/astoev/cave/survey/service/bluetooth/device/DiscoveredBluetoothDevice.java index ca1a98b6..c9ddfeae 100644 --- a/src/main/java/com/astoev/cave/survey/service/bluetooth/device/DiscoveredBluetoothDevice.java +++ b/src/main/java/com/astoev/cave/survey/service/bluetooth/device/DiscoveredBluetoothDevice.java @@ -16,6 +16,10 @@ public DiscoveredBluetoothDevice(AbstractBluetoothDevice aDefinition, String aNa } public String getDisplayName() { - return name + " : " + address; + if (name != null) { + return name + " : " + address; + } else { + return definition.getDescription() + " : " + address; + } } }