使用处理程序

时间:2015-12-23 16:25:52

标签: android android-service bytearray android-handler

我想将服务中的浮点值发送到我的UI(精度很小 - 两位数字只有1204,74)。现在我想把这个浮点数作为字符串,因为我只想显示它,但后来我将这个浮点数用作数字。

服务

...
int A = Integer.parseInt(listBytesAnsw.get(2), 16);
int B = Integer.parseInt(listBytesAnsw.get(3), 16);
float rpm = (A*255+B)/4;
msgBuffer = ByteBuffer.allocate(4).putFloat(rpm).array();
mHandler.obtainMessage(Constants.RPM, msgBuffer.length,-1, msgBuffer).sendToTarget();
addToQueue("01 0C");
...

UI

switch (msg.what) {
...
case Constants.RPM:
byte[] readRpmBuf = (byte[]) msg.obj;
String rpm = new String (readRpmBuf,0,msg.arg1);
mConversationArrayAdapter.add(mConnectedDeviceName + ": " + rpm);
break;
...

我不是从服务中漂浮而是只是随机的标志。出了点问题,但我不知道是什么。我很少使用字节数组,因此我不太了解它。

1 个答案:

答案 0 :(得分:1)

在服务中:

var DataToSend = Convert.ToString(rpm);

将服务中的数据作为字符串发送,然后将其转换回UI中的浮点数。

然后,您可以使用str.ToCharArray()

对于许多需要将少量数据转换为字符串并从字符串返回的服务,这是一种很好的做法。