2015-07-27 2 views
2

У меня есть служба, которая подключается к устройству глюкозы Bluetooth напрямую через MAC-адрес.Android Bluetooth BLE onDescriptorWrite GATT_INSUFFICIENT_AUTHENTICATION

if (mBluetoothGatt != null) {
   
    if (mBluetoothGatt.connect()) {
    
    return true;
   
    } 
    else {
    
    return false;
   
    }
  
}
 
  
mBluetoothGatt = device.connectGatt(this, false, mGattCallback); 

Процедура спаривания и загрузки данных из работы устройства совершенных в первый раз после спаривания, но если я пытаюсь повторно подключиться к устройству и регистрация уведомлений я получаю ошибку GATT_INSUFFICIENT_AUTHENTICATION в моей BluetoothGatt.onDescriptorWrite метод.

@Override 
public void onDescriptorWrite (BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) { 
    ... 
    if (status == BluetoothGatt.GATT_INSUFFICIENT_AUTHENTICATION) { 
    ... 

Затем система предложит пользователю ввести пин-код и просит их повторной аутентификации с устройством, даже несмотря на то скреплением показывает, как Bonded.

Я прочитал довольно много сообщений StackOverflow о BLE, и некоторые из них противоречат друг другу или не затрагивают вопрос о подключении напрямую.

  1. Если мы пытаемся подключиться к ранее подключенному устройству, используем ли мы автосоединение или нет?
  2. Нужно ли повторно включать уведомления для устройства при каждом подключении к нему? Или только первый раз, когда мы подключаемся ?

Устройство, которое я использую, является Moto G с KitKat 4.4.

ответ

0

Обновление до Lollipop устраняет проблему. Теперь аутентификация работает отлично, и я не получаю запрос каждый раз, когда я создаю новое соединение.