Может все же возможно закрыть BLE gatt connection со стороны сервера?

Да, в Android-приложении имеется возможность закрыть соединение GATT на стороне сервера в Bluetooth Low Energy (BLE). Для достижения этого вы можете использовать метод disconnect() или close() на объекте BluetoothGattServer.

Прежде чем закрыть соединение, вам необходимо получить экземпляр BluetoothGattServer, создав его с использованием класса BluetoothManager. Затем вы можете сохранить ссылку на объект BluetoothGattServer и использовать его, чтобы вызвать методы disconnect() или close() для закрытия соединения с клиентом GATT.

Пример использования метода disconnect() выглядит следующим образом:

// Получить экземпляр BluetoothManager
BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);

// Получить экземпляр BluetoothGattServer
BluetoothGattServer gattServer = bluetoothManager.openGattServer(getApplicationContext(), gattServerCallback);

// Закрыть соединение с клиентом GATT по его адресу
BluetoothDevice device = bluetoothManager.getAdapter().getRemoteDevice(deviceAddress);
BluetoothGattServerConnection gattConn = gattServer.getConnection(device);
gattConn.disconnect();

Метод disconnect() гарантирует закрытие соединения между сервером и клиентом GATT. Однако, соединение может быть снова установлено клиентом впоследствии. Если вы хотите полностью завершить работу сервера GATT, вы можете использовать метод close().

Пример использования метода close() выглядит так:

// Закрыть сервер GATT и закрыть все соединения
gattServer.close();

Примечание: Обратите внимание, что методы disconnect() и close() описанные выше, действуют только на серверной стороне и не могут закрыть соединение со стороны клиента. Для полного разрыва связи между сервером и клиентом требуется, чтобы на стороне клиента был вызван метод disconnect() или закрыто соединение BluetoothGatt приложения на стороне клиента.