2016-11-16 3 views
2

Я хочу взять значение байта из этого класса, чтобы я мог его разобрать, или, если возможно, разобрать его внутри и получить значение 5-го и 6-го байтов.Как взять значение байта из этого класса?

private void broadcastUpdate(final String action, 
          final BluetoothGattCharacteristic characteristic) { 
    final Intent intent = new Intent(action); 

    // This is special handling for the Heart Rate Measurement profile. Data parsing is 
    // carried out as per profile specifications: 
    // http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.heart_rate_measurement.xml 
    if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) { 
     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)); 
      intent.putExtra(EXTRA_DATA, new String(data) + "\n" + stringBuilder.toString()); 




     } else { 
      // For all other profiles, writes the data formatted in HEX. 


     } 

    } 


    sendBroadcast(intent); 

} 

Как это работает в том, что я ступаю по шкале и он посылает мне эти байты:

00 00 00 00 02 02 00 00 00 00 00 00 00 00 00 00 

, который хранится в переменной «данные». Как использовать данные для использования в другом классе?

Данные о весе находятся в байтах 5 и 6. Если вы преобразуете шестнадцатеричные значения байтов 5 и 6, в этом примере это «0202», то он станет 514 в десятичной форме (51,4 кг).

Мне нужно взять данные байтов для использования в другом классе, чтобы получить данные о килограммах. Как мне обойти это?

+0

'данных [5] * 256 + данные [6]'? Если вы хотите преобразовать его в значение float (kg) 'double weight = (data [5] * 256 + data [6])/10.0'? –

+0

Да, я понял. Однако мне нужно получить данные байта (которые хранятся в переменной «данные») из класса для его использования. Я угадываю намерения или что-то в этом роде, я не уверен. Благодарю. – Anj

ответ

1

Вы можете просто получить эти два байта и применять ниже:

int result = ByteBuffer.wrap(bytes).getInt(); 

Если вы хотите получить больше информации: HERE1, HERE 2

+0

Могу ли я получить доступ к «результату» через другой класс? – Anj

+0

Ах ОК. был еще один вопрос. Я вижу намерение, похожее на то, что вы используете Android. В этом случае вы говорите о другом мероприятии, а не о другом классе? – Sean83

+0

О, это отдельный. Я хочу получить значение результата, например, для другого класса. Как вызвать результат, чтобы иметь возможность взять значение и манипулировать им. Спасибо друг. – Anj

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