Skip to content

Commit dbea97c

Browse files
committed
Populate BLE bonded devices when scanning
1 parent ba4d8b1 commit dbea97c

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

codec2talkie/src/main/java/com/radio/codec2talkie/connect/BleConnectActivity.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import com.radio.codec2talkie.settings.PreferenceKeys;
4040

4141
import java.util.Arrays;
42+
import java.util.Set;
4243

4344
public class BleConnectActivity extends AppCompatActivity {
4445
private static final String TAG = BleConnectActivity.class.getSimpleName();
@@ -169,12 +170,14 @@ public void onScanResult(int callbackType, ScanResult result) {
169170
super.onScanResult(callbackType, result);
170171
String deviceName = result.getDevice().getName() + " | " + result.getDevice().getAddress();
171172
if (_btArrayAdapter.getPosition(deviceName) == -1) {
173+
Log.i(TAG, "Found device:" + deviceName);
172174
_btArrayAdapter.add(deviceName);
173175
}
174176
}
175177
};
176178

177179
private void startDevicesScan() {
180+
Log.i(TAG, "Started BLE scan");
178181
_btArrayAdapter.clear();
179182

180183
ScanFilter.Builder scanFilterBuilder = new ScanFilter.Builder().setServiceUuid(new ParcelUuid(BleGattWrapper.BT_KISS_SERVICE_UUID));
@@ -224,6 +227,24 @@ private void gattConnectToBluetoothClient(String address) {
224227
}
225228
}
226229

230+
private void populateBondedDevices() {
231+
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
232+
if (bluetoothAdapter == null) return;
233+
234+
Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();
235+
if (pairedDevices.isEmpty()) return;
236+
237+
for (BluetoothDevice device : pairedDevices) {
238+
if (device.getType() == BluetoothDevice.DEVICE_TYPE_LE) {
239+
String deviceName = device.getName() + " | " + device.getAddress();
240+
if (_btArrayAdapter.getPosition(deviceName) == -1) {
241+
Log.i(TAG, "Found bonded device:" + deviceName);
242+
_btArrayAdapter.add(deviceName);
243+
}
244+
}
245+
}
246+
}
247+
227248
private final Handler onBtStateChanged = new Handler(Looper.getMainLooper()) {
228249
@Override
229250
public void handleMessage(Message msg) {
@@ -238,7 +259,9 @@ public void handleMessage(Message msg) {
238259
}
239260
} else if (msg.what == BT_SCAN_COMPLETED) {
240261
toastMsg = getString(R.string.bt_ble_scan_completed);
262+
Log.i(TAG, "Completed BLE scan");
241263
_btBleScanner.stopScan(leScanCallback);
264+
populateBondedDevices();
242265
} else if (msg.what == BT_GATT_CONNECT_SUCCESS) {
243266
toastMsg = getString(R.string.bt_le_gatt_connected);
244267
} else if (msg.what == BT_SERVICES_DISCOVER_FAILURE) {

codec2talkie/src/main/java/com/radio/codec2talkie/settings/BluetoothSettingsActivity.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,16 @@ private void populateBondedDevices() {
8989

9090
new Handler(Looper.getMainLooper()).postDelayed(() -> _btBleScanner.stopScan(leScanCallback), SCAN_PERIOD);
9191

92+
for (BluetoothDevice device : _btAdapter.getBondedDevices()) {
93+
if (device.getType() == BluetoothDevice.DEVICE_TYPE_LE) {
94+
_btArrayAdapter.add(device.getName() + " | " + device.getAddress());
95+
}
96+
}
9297
} else {
9398
for (BluetoothDevice device : _btAdapter.getBondedDevices()) {
94-
_btArrayAdapter.add(device.getName() + " | " + device.getAddress());
99+
if (device.getType() == BluetoothDevice.DEVICE_TYPE_CLASSIC) {
100+
_btArrayAdapter.add(device.getName() + " | " + device.getAddress());
101+
}
95102
}
96103
}
97104
}

0 commit comments

Comments
 (0)