Устройство BLE автоматически отключается от устройства Android. Android BLE

Я использую Android Nexus 7 для подключения устройства по каналу Bluetooth с низким энергопотреблением. Я могу подключить устройство и оставаться на связи, если я не взаимодействую с устройством.

Однако, если я включу уведомление об одной конкретной характеристике, нажав кнопку, устройство отключится от планшета через несколько секунд после передачи данных.

Кто-нибудь знает, в чем может быть проблема? Большое спасибо!

Вот мой код:

    public boolean setCharacteristicNotification(boolean enabled){

      if (mBluetoothAdapter == null || mBluetoothGatt == null) {
          Log.w(TAG, "BluetoothAdapter not initialized");
               return false;      
      }

      BluetoothGattService Service = mBluetoothGatt.getService(UUID_MY_SERVICE);
      if (Service == null) {
          Log.e(TAG, "service not found!");
          return false;
      }

      BluetoothGattCharacteristic characteristic = Service.getCharacteristic(UUID_MY_CHARACTERISTIC);

      final int charaProp = characteristic.getProperties();

      if ((charaProp | BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0) {
          mBluetoothGatt.setCharacteristicNotification(characteristic, enabled);

            BluetoothGattDescriptor descriptor = characteristic.getDescriptor(
                    UUID.fromString(SampleGattAttributes.CLIENT_CHARACTERISTIC_CONFIG));
            descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE); 

            mBluetoothGatt.writeDescriptor(descriptor);

          return true;
      }

    return false;

}



Ответы (2)


(Отвечено в редактировании вопроса. Преобразовано в ответ вики сообщества. См. to-a-question-is-added-to-the-que">Какое правильное действие, когда ответ на вопрос добавляется к самому вопросу? )

ОП написал:

Я решил эту проблему сегодня.

Просто измените descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);

to descriptor.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);

Следовать за:

После того, как я провел некоторое исследование и тестирование, я обнаружил, что проблема с автоматическим отключением связана с помехами между Bluetooth и WIFI на Nexus 7. Если я отключил WIFI, проблема с отключением Bluetooth исчезла. И этой проблемы не возникало на Galaxy 3,4,5.

person Community    schedule 08.02.2015
comment
@Brain: прежде чем применять это, каждая функция будет уведомлять некоторое время, а затем отключится сама. после изменения этой даже отдельные характеристики не уведомляются один раз и отключаются когда-то же. - person Mehul Kabaria; 31.01.2018
comment
@Brain: я пытался подключиться к Mac из приложения для Android. Но он не подключен, и статус будет отключен каждый раз. код состояния будет 133. Но устройство будет сопряжено. - person sameer; 28.05.2019

Проблема: у меня была такая же проблема на Tesco Hudl 2, если я передам некоторые данные сразу после подключения Bluetooth, он отключится.

Решение: подождите несколько секунд после подключения, вроде все работает нормально.

person iUK    schedule 22.09.2015