BLE connect () с сервером gatt работает с одним «периферийным» приложением, но не с моим - PullRequest
1 голос
/ 02 апреля 2019

Я создаю приложение для Android, чтобы осуществлять платежи BLE (бесконтактные платежи).У меня есть два приложения для создания: одно будет играть роль сервера gatt (реклама и предоставление услуг с характеристиками), а другое - сканировать рекламные устройства, подключиться к первому и запустить запрос.

Моя проблема в том, что когда я вызываю connectGatt на объекте моего отсканированного устройства, через 40 секунд я получаю обратный вызов с STATE_DISCONNECTED и статусом 133.

Я много исследовал этот форум и другие, и в начале явозникла проблема с приложением сканирования, со всеми известными проблемами (добавление задержки перед вызовом connectGatt () / выполнение вызовов в основном потоке ...)

Но, наконец, я использовал свое приложение сканирования с приложением BLE для тестирования периферийных устройствнашел в магазине воспроизведения, и я хорошо справился с обратным вызовом с помощью STATE_CONNECTED, и мне удалось обнаружить службы.

Итак, мой вопрос, почему мое периферийное приложение BLE (которое запускает сервер gatt и запускает рекламу) недостижимы другими с помощью connectGatt?И почему рекламные пакеты хорошо обнаруживаются?Я должен уточнить, что когда я запускаю свой сервер gatt, обратный вызов onServiceAdded работает нормально.

Как мне запустить мой сервер gatt:

  public void startGattServer(){
    bluetoothGattServer = bluetoothManager.openGattServer(this, bluetoothGattServerCallback);
    BluetoothGattService service = new BluetoothGattService(UUID.fromString(GattAttributes.APDUSERVICE), BluetoothGattService.SERVICE_TYPE_PRIMARY);
    BluetoothGattCharacteristic apduRequestCharacteristic = new BluetoothGattCharacteristic(
            UUID.fromString(GattAttributes.APDUREQUEST),
            BluetoothGattCharacteristic.PROPERTY_WRITE,
            BluetoothGattCharacteristic.PERMISSION_WRITE);
    BluetoothGattCharacteristic apduResponseCharacteristic = new BluetoothGattCharacteristic(
            UUID.fromString(GattAttributes.APDURESPONSE),
            BluetoothGattCharacteristic.PROPERTY_WRITE,
            BluetoothGattCharacteristic.PERMISSION_WRITE);
    service.addCharacteristic(apduRequestCharacteristic);
    service.addCharacteristic(apduResponseCharacteristic);
    bluetoothGattServer.addService(service);
  }

Заранее спасибо за ваши ответы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...