我是java编程的新手,我正在尝试为Android(4.3 +)开发蓝牙低功耗(4.0)健身设备。我从不同的硬件制造商处购买了一堆不同的设备进行测试,其中一条向设备发送值的说明如下:
Characteristic Fitness Goals
size: 8 bytes
D0 D1 D2 D3 D4 D5 D6 D7
D0: number of days in month, uint8_t
D1 D2: distance walked , uint16_t
D3 D4: distance ran, uint16_t
D5 D6: steps taken, uint16_t
D7: number of users, uint8_t
问题在于:
我需要将5个int值放入将写入设备的字节数组中。 以这些值为例:
16 (# days in month)
450 (distance walked)
334 (distance ran)
800 (steps taken)
4 (number of users)
我不确定如何获取这些不同的uint8_t和uint16_t值并将它们放入一个字节数组以便写入蓝牙设备。谁能告诉我这是怎么做到的?
谢谢!
答案 0 :(得分:1)
您可以按如下方式使用ByteBuffer:
ByteBuffer buf = ByteBuffer.allocate(8);
// Depending on the device you may need to include the following line
// buf.order(ByteOrder.LITTLE_ENDIAN);
buf.put((byte)16); // (# days in month)
buf.putShort(450); // (distance walked)
buf.putShort(334); // (distance ran)
buf.putShort(800); // (steps taken)
buf.put((byte)4); // (number of users)
byte[] byteArray = buf.array();