После подключения приложения Android к аппаратному устройству BLE возникает следующая ситуация:
Данные успешно отправлены : Android приложение К BLE Аппаратное устройство отправляет данные , успех ;
Не удалось получить данные : Android приложение Невозможно получить BLE Данные отправляются с аппаратного устройства на мобильный телефон ;
Приведу пример:
Это в Google чиновник BLE Пример программы Bluetooth BluetoothLeGatt в BLE Код конфигурации подключения :
/**
* Enables or disables notification on a give characteristic.
*
* @param characteristic Characteristic to act on.
* @param enabled If true, enable notification. False otherwise.
*/
public void setCharacteristicNotification(BluetoothGattCharacteristic characteristic,
boolean enabled) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
mBluetoothGatt.setCharacteristicNotification(characteristic, enabled);
}
Адрес файла кода : BluetoothLeService.java
Приведенный выше код завершается после прохождения BluetoothGattService и BluetoothGattCharacteristic после , Выберите, чтобы прочитать указанные характеристики ( BluetoothGattCharacteristic ) вданные , Просто передайте характеристики в приведенное выше setCharacteristicNotification метод параметр ;
Но приведенные выше настройки , Настроена только половина контента , Еще нужно BluetoothGattCharacteristic в BluetoothGattDescriptor Выполните дальнейшие настройки ;
На основании вышеизложенного , Еще нужно BluetoothGattCharacteristic в BluetoothGattDescriptor Установить во все элементы набора BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE ценить , тогда напиши BluetoothGattDescriptor , В это время в настройках читается BluetoothGattCharacteristic Функция ценить может вступить в силу , В противном случае его вданные невозможно будет прочитать. ;
BluetoothGattCharacteristic Следующие переменные сохраняются в , BluetoothGattDescriptor очередь , Вызов следующего getDescriptors метод , Получить очередь ;
public class BluetoothGattCharacteristic implements Parcelable {
/**
* List of descriptors included in this characteristic.
*/
protected List<BluetoothGattDescriptor> mDescriptors;
/**
* Returns a list of descriptors for this characteristic.
*
* @return Descriptors for this characteristic
*/
public List<BluetoothGattDescriptor> getDescriptors() {
return mDescriptors;
}
}
вызов BluetoothGattDescriptor из setValue метод , установите это BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE ценить , и напиши ценить , Вы можете прочитать эту функцию и отправить настройки на BLE Bluetooth-модуль ;
public class BluetoothGattDescriptor implements Parcelable {
/**
* Updates the locally stored value of this descriptor.
*
* <p>This function modifies the locally stored cached value of this
* descriptor. To send the value to the remote device, call
* {@link BluetoothGatt#writeDescriptor} to send the value to the
* remote device.
*
* @param value New value for this descriptor
* @return true if the locally stored value has been set, false if the requested value could not
* be stored locally.
*/
public boolean setValue(byte[] value) {
mValue = value;
return true;
}
}
public void setCharacteristicNotification(BluetoothGattCharacteristic characteristic,
boolean enabled) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
mBluetoothGatt.setCharacteristicNotification(characteristic, enabled);
// получать обозначение BluetoothGattCharacteristic в List<BluetoothGattDescriptor> mDescriptors очередь
List<BluetoothGattDescriptor> descriptors = characteristic.getDescriptors();
// Настройки траверса BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE ценить , и напиши
for(BluetoothGattDescriptor descriptor : descriptors) {
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
mBluetoothGatt.writeDescriptor(descriptor);
}
}
После внесения вышеуказанных изменений ,может получить BLE Bluetoothоборудованиеизданные ;