this is one of the auto-generated functions I get when implementing
SensorEventListener
i've searched and didn't find anymore than this description: "Do something if sensor accuracy changes." when and how does the proximity sensor accuracy changes ? and in what way can this be useful on my apps ?
SensorManager lets you access the device's sensors . Get an instance of this class by calling Context. getSystemService() with the argument SENSOR_SERVICE . Always make sure to disable sensors you don't need, especially when your activity is paused.
SensorEventListener is used for receiving notifications from the SensorManager when sensor values have changed. In this class there are two public methods: onAccuracyChanged(Sensor sensor, int accuracy) : Called when the accuracy of a sensor has changed.
void onSensorChanged(SensorEvent event) it is called when sensor values are changed.
What is onSensorChanged? [onSensorChanged is] Called when there is a new sensor event. Note that "on changed" is somewhat of a misnomer, as this will also be called if we have a new reading from a sensor with the exact same sensor values (but a newer timestamp).05-Apr-2020.
According to my understanding, OnAccuracyChanged
method is invoked whenever a sensor reports with different accuracy and onSensorChanged
method is called whenever a sensor reports a new value.
I too had the same question, as in how to make use of onAccuracyChanged
method.
Let's say you want the sensor data only when the accuracy is high,nothing below that. One way to do that is to create a new global variable. Inside the onAccuracyChanged
method, initialize it to some value, and inside onSensorChanged
function, add an if..else
condition.
Sample code:
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// Do something here if sensor accuracy changes.
// You must implement this callback in your code.
if (sensor == mValuen) {
switch (accuracy) {
case 0:
System.out.println("Unreliable");
con=0;
break;
case 1:
System.out.println("Low Accuracy");
con=0;
break;
case 2:
System.out.println("Medium Accuracy");
con=0;
break;
case 3:
System.out.println("High Accuracy");
con=1;
break;
}
}
}
Now use condition as if (con==1)
to do the required changes.
P.S. According to the android documentation.
public abstract void onAccuracyChanged (int sensor, int accuracy)
Called when the accuracy of a sensor has changed. See SensorManager for details.Parameterssensor The ID of the sensor being monitored accuracy The new accuracy of this sensor. So whenever the accuracy changes,you will have a reference to that change. Please let me know if am missing something. Thanks.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With