Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 050b5624 authored by Mathias Agopian's avatar Mathias Agopian
Browse files

Added SensorManager.getMinDelay()

Exposed the new "min delay" sensor property through native and
java sensor apis. This allows the caller to know what is the
maximum rate at which a sensor can return events, or, if a sensor
works in "update" mode (events returned only when the value changes).

Also augmented SensorManager.regusterSensorEvent() so that it can
accept a value in microsecond in addition to the 4 constants already
defined.

Change-Id: If425e9979892666df8c989d7de3c362230fa19e0
parent 3fb62752
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -77549,6 +77549,17 @@
 visibility="public"
>
</method>
<method name="getMinDelay"
 return="int"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getName"
 return="java.lang.String"
 abstract="false"
+10 −0
Original line number Diff line number Diff line
@@ -92,6 +92,7 @@ public class Sensor {
    private float   mMaxRange;
    private float   mResolution;
    private float   mPower;
    private int     mMinDelay;
    private int     mLegacyType;


@@ -147,6 +148,15 @@ public class Sensor {
        return mPower;
    }

    /**
     * @return the minimum delay allowed between two events in microsecond
     * or zero if this sensor only returns a value when the data it's measuring
     * changes.
     */
    public int getMinDelay() {
        return mMinDelay;
    }

    int getHandle() {
        return mHandle;
    }
+8 −5
Original line number Diff line number Diff line
@@ -935,7 +935,8 @@ public class SensorManager
     *        received faster or slower than the specified rate. Usually events
     *        are received faster. The value must be one of
     *        {@link #SENSOR_DELAY_NORMAL}, {@link #SENSOR_DELAY_UI},
     *        {@link #SENSOR_DELAY_GAME}, or {@link #SENSOR_DELAY_FASTEST}.
     *        {@link #SENSOR_DELAY_GAME}, or {@link #SENSOR_DELAY_FASTEST}
     *        or, the desired delay between events in microsecond.
     *
     * @return <code>true</code> if the sensor is supported and successfully
     *         enabled.
@@ -967,6 +968,7 @@ public class SensorManager
     *        are received faster. The value must be one of
     *        {@link #SENSOR_DELAY_NORMAL}, {@link #SENSOR_DELAY_UI},
     *        {@link #SENSOR_DELAY_GAME}, or {@link #SENSOR_DELAY_FASTEST}.
     *        or, the desired delay between events in microsecond.
     *
     * @param handler
     *        The {@link android.os.Handler Handler} the
@@ -992,16 +994,17 @@ public class SensorManager
                delay = 0;
                break;
            case SENSOR_DELAY_GAME:
                delay = 20;
                delay = 20000;
                break;
            case SENSOR_DELAY_UI:
                delay = 60;
                delay = 60000;
                break;
            case SENSOR_DELAY_NORMAL:
                delay = 200;
                delay = 200000;
                break;
            default:
                return false;
                delay = rate;
                break;
        }

        synchronized (sListeners) {
+3 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ struct SensorOffsets
    jfieldID    range;
    jfieldID    resolution;
    jfieldID    power;
    jfieldID    minDelay;
} gSensorOffsets;

/*
@@ -74,6 +75,7 @@ sensors_module_get_next_sensor(JNIEnv *env, jobject clazz, jobject sensor, jint
    env->SetFloatField(sensor, sensorOffsets.range,      list->getMaxValue());
    env->SetFloatField(sensor, sensorOffsets.resolution, list->getResolution());
    env->SetFloatField(sensor, sensorOffsets.power,      list->getPowerUsage());
    env->SetIntField(sensor, sensorOffsets.minDelay,     list->getMinDelay());
    
    next++;
    return next<count ? next : 0;
@@ -154,6 +156,7 @@ nativeClassInit (JNIEnv *_env, jclass _this)
    sensorOffsets.range       = _env->GetFieldID(sensorClass, "mMaxRange",  "F");
    sensorOffsets.resolution  = _env->GetFieldID(sensorClass, "mResolution","F");
    sensorOffsets.power       = _env->GetFieldID(sensorClass, "mPower",     "F");
    sensorOffsets.minDelay    = _env->GetFieldID(sensorClass, "mMinDelay",  "I");
}

static JNINativeMethod gMethods[] = {
+2 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ public:
    float getMaxValue() const;
    float getResolution() const;
    float getPowerUsage() const;
    int32_t getMinDelay() const;

    // Flattenable interface
    virtual size_t getFlattenedSize() const;
@@ -81,6 +82,7 @@ private:
    float   mMaxValue;
    float   mResolution;
    float   mPower;
    int32_t mMinDelay;
};

// ----------------------------------------------------------------------------
Loading