Android 光传感器数据太多

Android 光传感器数据太多,android,sensors,broadcast,Android,Sensors,Broadcast,我有一个光传感器,可以播放变化。基本上,它在每个采样上都会广播,即使从0开始没有变化。我应该如何使传感器仅广播基本上为开/关值。例如,如果勒克斯>0,则灯光处于打开状态,否则勒克斯=0,则灯光处于关闭状态 sendLuxUpdate(): 问题是传感器向您发送原始模拟数据。所以它们是连续的,数据是原始的。或者,如果您也使用其他传感器,则其他传感器可能会调用此方法。所以也要检查传感器的类型 public void onSensorChanged(SensorEvent event) {

我有一个光传感器,可以播放变化。基本上,它在每个采样上都会广播,即使从0开始没有变化。我应该如何使传感器仅广播基本上为开/关值。例如,如果勒克斯>0,则灯光处于打开状态,否则勒克斯=0,则灯光处于关闭状态

sendLuxUpdate():


问题是传感器向您发送原始模拟数据。所以它们是连续的,数据是原始的。或者,如果您也使用其他传感器,则其他传感器可能会调用此方法。所以也要检查传感器的类型

public void onSensorChanged(SensorEvent event) {
        lightLux = event.values[0]; // Final output of this sensor.
        Lux = String.valueOf(lightLux);

        if(event.sensor.getType()==Sensor.TYPE_LIGHT){
        final float currentReading = event.values[0];
        if (currentReading > 0){
        //ON
          }
        else
         {//OFF     
           }
        }

    }
此外,您每次都会看到值的变化,因为它发送的值太详细,因为它是原始数据。如果不需要,可以将其强制转换为
int

int value=(int)事件值[0]


希望有帮助!祝您好运

您是否尝试在代码中添加一个标志来确定它是打开还是关闭。然后,在记录任何内容之前,检查数据是否与标志不同。如果没有,请继续。如果不同,则进行更新。不,这是问题的一部分。传感器不断轮询。基本上,任何大于0的值都处于打开状态,而value=0处于关闭状态。问题是如何告诉它在每种值类型上进行比较,所以,你们做一个布尔型的lightIsOn或者其他什么,然后你们一开始就把它设为false。如果数据>0且!lightIsOn->lightIsOn=true。如果数据为0且lightIsOn->lightIsOn=false。对于任何其他情况,不要做任何事情。据我所知,你不能忽略这些数据。您可以限制它检查您的问题的频率。布尔值不是问题。这已经存在了。诀窍是只在灯光从关闭变为打开,然后从打开变为关闭时报告,而不是在两者之间报告所有内容。我认为这是您使用的类的问题。我以前没有使用过它,但是您可以重写它,这样它就会按照您的意愿运行。如果没有,你可以尝试制作一个新的类来帮助你。我猜这是你无法控制的,你只需要处理所有的数据。不过,重写类在标志和代码之间创建缓冲区似乎是最好的选择。这样,由于光线的轻微变化,其他任何东西都不会运行。
public void onSensorChanged(SensorEvent event) {
        lightLux = event.values[0]; // Final output of this sensor.
        Lux = String.valueOf(lightLux);

        if(event.sensor.getType()==Sensor.TYPE_LIGHT){
        final float currentReading = event.values[0];
        if (currentReading > 0){
        //ON
          }
        else
         {//OFF     
           }
        }

    }