Android 缓冲区和值过滤器

Android 缓冲区和值过滤器,android,filter,bluetooth,buffer,spp,Android,Filter,Bluetooth,Buffer,Spp,我正在运行一个奇怪的bug,在那里我从串行连接接收到错误的值。我早些时候写了一篇帖子,但还没有人回复。 [其他问题]: 因为我想很快完成这个项目,我想我必须实现一个“补丁”来过滤所有的值。如果新值约为我之前值的+/-15%,我将保留它,如果它超过此截止范围,我将丢弃它。以下是我接收值的代码: hBluetooth = new Handler() { public void handleMessage(android.os.Message msg) { switch (ms

我正在运行一个奇怪的bug,在那里我从串行连接接收到错误的值。我早些时候写了一篇帖子,但还没有人回复。 [其他问题]:

因为我想很快完成这个项目,我想我必须实现一个“补丁”来过滤所有的值。如果新值约为我之前值的+/-15%,我将保留它,如果它超过此截止范围,我将丢弃它。以下是我接收值的代码:

hBluetooth = new Handler() {
    public void handleMessage(android.os.Message msg) {
        switch (msg.what) {
        case RECEIVE_MESSAGE:                                                   // If we receive a message
            byte[] readBuf = (byte[]) msg.obj;
            String stringIncome = new String(readBuf, 0, msg.arg1);             // Create string from byte array
            stringBuilder.append(stringIncome);                                             
            int endOfLineIndex = stringBuilder.indexOf("\r\n");                 // Determine the end-of-line
            Log.e(TAG, "Line"+endOfLineIndex);
            if (endOfLineIndex > 0) {                                           // If we are at the end-of-line we parsed all the data that was sent
                rmsgBluetooth = stringBuilder.substring(0, endOfLineIndex);     // The string is extracted in a string object rmsgBluetooth
                stringBuilder.setLength(0);
有人能帮我实现一个过滤器,以字符串形式输出保留值吗?谢谢。

这是我的解决方案:

    sensorReading = Float.parseFloat(rmsgBluetooth);
                        if(Math.abs(sensorReadingOld - sensorReading)<10 || sensorReadingOld == 0 ){
                            sensorReadingOld = sensorReading;       

                        }
                        else {
                            sensorReading = sensorReadingOld;
                        }
sensorReading=Float.parseFloat(rmsgBluetooth);
if(数学abs(传感器读数黄金-传感器读数)