Search code examples
androidandroid-sensorsproximitysensor

onAccuracyChanged, why?


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 ?


Solution

  • 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.