Добрый день. Я разрабатываю приложение для Android, которое подключается к устройству BLE и читает характеристики Gatt Services и Gatt. Я использовал образец образца BluetoothLeGatt с сайта разработки Android в качестве моей ссылки. До сих пор я мог программно подключиться к устройству (я принял к сведению адрес моего устройства, чтобы это сделать) и отфильтровать конкретную Gatt-службу, которую я хочу прочитать, и конкретные характеристики служб, приняв к сведению UUID как Сервиса, так и характеристик. Образец, предоставленный Google, также обновляется всякий раз, когда на мое приложение для Android отправляется сообщение с моего устройства BLE. В целом у меня нет проблем с этой целью.Android BLE - Подключение сразу к нескольким устройствам
Однако, прочитав далее GATT, я обнаружил, что можно подключаться к нескольким устройствам BLE (все подчиненные или серверы - те, которые отправляют данные), используя одно приложение для Android (в качестве главного ИЛИ клиента - как тот, кто получает указанные данные). Так что я пытался сделать, это иметь 2 устройства BLE (другой адрес), принял к сведению их адрес, а затем мое приложение пытается подключиться к ним, как только приложение увидит, что эти 2 адреса запущены и работают.
В коде, я называю эту функцию, когда я вижу, мои 2 BLE устройств:
private void connectToDevice(){
mDeviceName = deviceList.get(currentIndex).getName();
mDeviceAddress = deviceList.get(currentIndex).getAddress();
Log.e(TAG, "connecting to device name = " + mDeviceName);
mBluetoothLeService.connect(mDeviceAddress);
}
Где currentIndex
изначально установлен на ноль. Затем, когда я получаю сообщение об успешном подключении я:
private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (BluetoothLeService.ACTION_GATT_CONNECTED.equals(action)) {
Log.e(TAG, "connected");
mConnected = true;
if(currentIndex < deviceList.size()-1) currentIndex ++;
connectToDevice();
}
}
};
Где я могу проверить, если я до сих пор есть устройства для подключения в моем deviceList
, если да, то увеличиваем мой счетчик, а затем подключить, пока я не исчерпывают все в моем списке.
Однако, я, похоже, не добился успеха, используя этот метод.
Обратите внимание на то, что коммутирующее соединение (круглая шина) между моими устройствами не является вариантом. Это будет проблемой, когда у меня будет много устройств, и важно получать сообщения в реальном времени без задержек. Это говорит о том, что я должен подключиться к своим устройствам.
Кто-нибудь пытался подключиться к нескольким устройствам BLE на Android? На данный момент я не уверен, как это сделать, любая помощь или выводы очень ценятся.
Да вы можете и я сделал используя простой цикл. Что я делаю, сначала сканирую устройства, как только они будут найдены. Я поместил его в arraylist и вызвал этот метод подключения. Чтобы успешно установить соединение, вам также понадобится механизм блокировки и ожидания, так как вы хотите попытаться установить второе соединение после первого. – Gautam
@ Gautam, не могли бы вы опубликовать свой код, который заставил бы его работать? Я был бы признателен за любые выводы по этой теме. – Razgriz