2015-07-24 5 views
2

Я хочу получить значение HRM устройства «A D UA-651BLE». это то, что написано в спецификации этого устройства, чтобы получить значение HRM:Android bluetooth получить измерение сердечного ритма

  1. Установите приложение в режим сопряжения, чтобы начать сканирование.
  2. Начните сопряжение устройства A & D BLE после каждого руководства по эксплуатации.
  3. В режиме сопряжения приложение должно установить время и дату и любые другие настройки устройства - A & Устройство D BLE. После успешного соединения A & Устройство D BLE показывает «Конец» на экране.
  4. Провести измерение и закончить измерение, затем A & D BLE начало устройства BLE Связь с рекламой. Приложение начинает сканирование с подходящим интервалом, так что приложение захватывает рекламу устройства A & D BLE, как только оно может.
  5. При первоначальном соединении или сопряжении приложение устанавливает «2» в CCCD (характеристика клиента Конфигурационный дескриптор), так что устройство A & D BLE отправляет данные измерений с помощью Индикация.
  6. После A & Устройство D распознает установку «2» в CCCD и синхронизирует время и дату в течение 5 секунд после подключения, отправьте данные с помощью индикатора.
  7. Если тайм-аут установлен CCCD и время и дата истекли, A & Устройство D BLE не отправит данные и сохранит данные в памяти. Сохраненные данные в A & Устройство D BLE может отправить следующее успешное соединение.

это мой код услуги:

public void setCharacteristicNotification(BluetoothGattCharacteristic characteristic, 
               boolean enabled) { 
     if (mBluetoothAdapter == null || mBluetoothGatt == null) { 
      Log.w(TAG, "BluetoothAdapter not initialized"); 
      return; 
     } 

     mBluetoothGatt.setCharacteristicNotification(characteristic, enabled); 

     // This is specific to Heart Rate Measurement. 
     if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) { 
      BluetoothGattDescriptor descriptor = characteristic.getDescriptor(
        UUID.fromString(SampleGattAttributes.CLIENT_CHARACTERISTIC_CONFIG)); 
      descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE); 
      mBluetoothGatt.writeDescriptor(descriptor); 
     } 
    } 

и это метод, который читать данные:

final byte[] data = characteristic.getValue(); 
      if (data != null && data.length > 0) { 
       final StringBuilder stringBuilder = new StringBuilder(data.length); 
       for(byte byteChar : data) 
        stringBuilder.append(String.format("%02X ", byteChar)); 
       Log.e("HRM value",stringBuilder.toString()); 
       dataComposition.put(characteristic.getUuid().toString(),stringBuilder.toString()); 
       intent.putExtra(EXTRA_DATA,dataComposition); 
      } 

проблема заключается в том, что этот код не возвращает никаких данных! !

ответ

3

Коды образцов Google не содержат метод write и indicate. В вашем случае вы должны сначала записать значение времени, изменить значение CCCD на 2, а затем устройство отправит вам значение HRM. для этого вы можете найти в этом методе записи и указания, что вы можете просто интегрировать их в свой код.

+0

Вот что я искал. благодаря –

2

Существует Android Open Source Project example, что делает именно этот, самый простой вариант - клонировать android-BluetoothLeGatt code, строить и сравнивать его с вашим. Если вы не можете разглядеть разницу/проблему, просто разворачивайте оба приложения и выполняйте оба набора кода. Наличие некоторого известного рабочего кода также поможет исключить возможность неправильного функционирования HRM.

+0

Спасибо за эту ссылку, я рассматриваю этот проект, проблема заключается в том, что устройство я работа над необходимыми операциями записи, и этот проект не показывает, мы можем писать значения и дескрипторы –

0

У вас есть и пример, я стараюсь это с равным устройством и я не могу получить информацию у попробовать с

public String response() { 
if (mConnected) { 
    mBluetoothLeService.readCharacteristic(characteristica); 
    byte response[] = characteristica.getValue(); 
    String respuesta = ReadBytes(response); 
    mBluetoothLeService.disconnect(); 
    return respuesta; 
} else { 
    return null; 
} 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^