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

Commit 589cf5ff authored by Vladimir Komsiyski's avatar Vladimir Komsiyski Committed by Android (Google) Code Review
Browse files

Merge "Always cache the default device sensors." into main

parents 7329ca6d 1172fd88
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -86,6 +86,8 @@ public class SystemSensorManager extends SensorManager {
    private static native long nativeCreate(String opPackageName);
    private static native boolean nativeGetSensorAtIndex(long nativeInstance,
            Sensor sensor, int index);
    private static native boolean nativeGetDefaultDeviceSensorAtIndex(long nativeInstance,
            Sensor sensor, int index);
    private static native void nativeGetDynamicSensors(long nativeInstance, List<Sensor> list);
    private static native void nativeGetRuntimeSensors(
            long nativeInstance, int deviceId, List<Sensor> list);
@@ -162,11 +164,14 @@ public class SystemSensorManager extends SensorManager {
        // initialize the sensor list
        for (int index = 0;; ++index) {
            Sensor sensor = new Sensor();
            if (android.companion.virtual.flags.Flags.enableNativeVdm()) {
                if (!nativeGetDefaultDeviceSensorAtIndex(mNativeInstance, sensor, index)) break;
            } else {
                if (!nativeGetSensorAtIndex(mNativeInstance, sensor, index)) break;
            }
            mFullSensorsList.add(sensor);
            mHandleToSensor.put(sensor.getHandle(), sensor);
        }

    }

    /** @hide */
+16 −0
Original line number Diff line number Diff line
@@ -225,6 +225,19 @@ nativeGetSensorAtIndex(JNIEnv *env, jclass clazz, jlong sensorManager, jobject s
    return translateNativeSensorToJavaSensor(env, sensor, *sensorList[index]) != NULL;
}

static jboolean nativeGetDefaultDeviceSensorAtIndex(JNIEnv *env, jclass clazz, jlong sensorManager,
                                                    jobject sensor, jint index) {
    SensorManager *mgr = reinterpret_cast<SensorManager *>(sensorManager);

    Vector<Sensor> sensorList;
    ssize_t count = mgr->getDefaultDeviceSensorList(sensorList);
    if (ssize_t(index) >= count) {
        return false;
    }

    return translateNativeSensorToJavaSensor(env, sensor, sensorList[index]) != NULL;
}

static void
nativeGetDynamicSensors(JNIEnv *env, jclass clazz, jlong sensorManager, jobject sensorList) {

@@ -539,6 +552,9 @@ static const JNINativeMethod gSystemSensorManagerMethods[] = {
        {"nativeGetSensorAtIndex", "(JLandroid/hardware/Sensor;I)Z",
         (void *)nativeGetSensorAtIndex},

        {"nativeGetDefaultDeviceSensorAtIndex", "(JLandroid/hardware/Sensor;I)Z",
         (void *)nativeGetDefaultDeviceSensorAtIndex},

        {"nativeGetDynamicSensors", "(JLjava/util/List;)V", (void *)nativeGetDynamicSensors},

        {"nativeGetRuntimeSensors", "(JILjava/util/List;)V", (void *)nativeGetRuntimeSensors},