Написать характеристику BLE без обнаружения сервисов Android - PullRequest
0 голосов
/ 07 января 2019

Можно ли написать отличную характеристику без предварительного обнаружения качественных услуг? Я хочу реализовать приложение, которое подключается к периферийному устройству, записывает характеристику и отключается, затем подключается к другому устройству и так далее ... После отключения я вызываю команду gatt.close() для освобождения всех ресурсов. При первом подключении я создаю связь. Если я жду обратного вызова onServicesDiscovered и напишу характеристику:

BluetoothGattService mCustomService = mBluetoothGatt.getService(myUUID));
byte[] values = new byte[]{0x00, 0x01};
mWriteCharacteristic.setValue(values);
if(mBluetoothGatt.writeCharacteristic(mWriteCharacteristic) == false) {
    Log.w(TAG, "Failed to write characteristic");
}

все отлично работает. Но я хочу улучшить и ускорить весь процесс. Есть ли способ пропустить службы обнаружения и написать обычный символ после соединения с устройством связи?

BluetoothGattCharacteristic mCharacteristic = new BluetoothGattCharacteristic(UUID.fromString(GattAttributes.P1_MINI_POWER_CHARACTERISTIC), (BluetoothGattCharacteristic.PROPERTY_WRITE |BluetoothGattCharacteristic.PROPERTY_READ | BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE | BluetoothGattCharacteristic.PROPERTY_NOTIFY | BluetoothGattCharacteristic.PROPERTY_EXTENDED_PROPS), 0);
mCustomService.addCharacteristic(mCharacteristic);
byte[] values = new byte[]{0x00, 0x01};
mWriteCharacteristic.setValue(values);
        if(mBluetoothGatt.writeCharacteristic(mWriteCharacteristic) == false) {
            Log.w(TAG, "Failed to write characteristic");
        }

Но безуспешно.

1 Ответ

0 голосов
/ 08 января 2019

Нет, вы должны использовать DiscoverServices. Вы не можете написать определение самостоятельно. Одна из многих причин заключается в том, что стеку BLE необходимо знать дескриптор ATT значения характеристики, который не предоставляется с помощью BluetoothGattCharacteristic.

...