0

我正在尝试用 Java 为 Android 手机编写一个 Android 应用程序。Android 应用程序使用 SPP 配置文件通过蓝牙读取串行数据字符串。这些字符串由另一个蓝牙设备发送。这些字符串采用以下格式:

"Acc Data:x_adc,y_adc,z_adc!"

每个字符串都以:

“累积数据:

并以

“!”

x_adc、y_adc 和 z_adc 是值,长度为 5 位。

这些字符串会定期发送。现在我可以使用InputStream字符串缓冲区来接受这些字符串。我还能够在可滚动的 TextView 中显示完整的字符串,该 TextView 将每个字符串显示在另一个字符串下方。

我想要做的是从字符串中分解 x_adc、y_adc 和 z_adc 值,并将这些值显示在 3 个单独的 TextView 中。需要显示 adc 值的 TextView 必须在新字符串发送到 Android 智能手机后刷新。我尝试使用 Pattern 类和 split() 来分解字符串,但未能理解它们并在应用程序中使用它们。

有人可以帮我解决这个问题吗?

4

4 回答 4

2

您可以使用substring()清理额外的数据,然后split()

String[] values = indata.substring(9, 26).split(",");
String x_adc = values[0];
...
于 2013-06-03T08:49:41.150 回答
1

尝试:

    private TextView tv1;
    private TextView tv2;
    private TextView tv3;

    update("Acc Data:x_adc,y_adc,z_adc!");

    public void update(String data) {
        String values[] = data.replace("Acc Data:", "").replace("!", "").split(",");
        String v1 = "";
        String v2 = "";
        String v3 = "";
        if(values != null && values.length == 3) {
            v1 = values[0];
            v2 = values[1];
            v3 = values[2];
        }
        tv1.setText(v1);
        tv2.setText(v2);
        tv3.setText(v3);
    }

获取值的替代方法:

String values[] = data.substring(data.indexOf(':') + 1, data.indexOf('!')).split(",");
于 2013-06-03T08:52:36.463 回答
0

此代码将处理在String.

public static void main(String[] args) {
    String value = "Acc Data:x_adc,y_adc,z_adc!";

    String trimmed = value.substring(value.indexOf(":")+1, value.length()-1);
    String[] tokens = trimmed.split(",");

    for(String token: tokens){
        System.out.println(token);
    }
}
于 2013-06-03T08:55:26.830 回答
0

只需查看字符串函数substring(beginIndex, endIndex)即可抑制字符串的静态部分并split(",")获取 3 个值。

于 2013-06-03T08:51:33.957 回答