Loading core/java/android/hardware/SensorManager.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -1387,14 +1387,14 @@ public abstract class SensorManager { * @throws IllegalArgumentException when sensor is a trigger sensor. * @throws IllegalArgumentException when sensor is a trigger sensor. */ */ public boolean cancelTriggerSensor(TriggerEventListener listener, Sensor sensor) { public boolean cancelTriggerSensor(TriggerEventListener listener, Sensor sensor) { return cancelTriggerSensorImpl(listener, sensor); return cancelTriggerSensorImpl(listener, sensor, true); } } /** /** * @hide * @hide */ */ protected abstract boolean cancelTriggerSensorImpl(TriggerEventListener listener, protected abstract boolean cancelTriggerSensorImpl(TriggerEventListener listener, Sensor sensor); Sensor sensor, boolean disable); private LegacySensorManager getLegacySensorManager() { private LegacySensorManager getLegacySensorManager() { Loading core/java/android/hardware/SystemSensorManager.java +28 −14 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.content.Context; import android.os.Handler; import android.os.Handler; import android.os.Looper; import android.os.Looper; import android.os.MessageQueue; import android.os.MessageQueue; import android.util.Log; import android.util.SparseArray; import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.SparseBooleanArray; import android.util.SparseIntArray; import android.util.SparseIntArray; Loading Loading @@ -135,7 +136,7 @@ public class SystemSensorManager extends SensorManager { if (sensor == null) { if (sensor == null) { result = queue.removeAllSensors(); result = queue.removeAllSensors(); } else { } else { result = queue.removeSensor(sensor); result = queue.removeSensor(sensor, true); } } if (result && !queue.hasSensors()) { if (result && !queue.hasSensors()) { mSensorListeners.remove(listener); mSensorListeners.remove(listener); Loading Loading @@ -170,7 +171,8 @@ public class SystemSensorManager extends SensorManager { /** @hide */ /** @hide */ @Override @Override protected boolean cancelTriggerSensorImpl(TriggerEventListener listener, Sensor sensor) { protected boolean cancelTriggerSensorImpl(TriggerEventListener listener, Sensor sensor, boolean disable) { if (sensor != null && Sensor.getReportingMode(sensor) != Sensor.REPORTING_MODE_ONE_SHOT) { if (sensor != null && Sensor.getReportingMode(sensor) != Sensor.REPORTING_MODE_ONE_SHOT) { return false; return false; } } Loading @@ -181,7 +183,7 @@ public class SystemSensorManager extends SensorManager { if (sensor == null) { if (sensor == null) { result = queue.removeAllSensors(); result = queue.removeAllSensors(); } else { } else { result = queue.removeSensor(sensor); result = queue.removeSensor(sensor, disable); } } if (result && !queue.hasSensors()) { if (result && !queue.hasSensors()) { mTriggerListeners.remove(listener); mTriggerListeners.remove(listener); Loading Loading @@ -225,15 +227,18 @@ public class SystemSensorManager extends SensorManager { public boolean addSensor(Sensor sensor, int delay) { public boolean addSensor(Sensor sensor, int delay) { // Check if already present. // Check if already present. if (mActiveSensors.get(sensor.getHandle())) return false; int handle = sensor.getHandle(); if (mActiveSensors.get(handle)) return false; if (enableSensor(sensor, delay) == 0) { // Get ready to receive events before calling enable. mActiveSensors.put(sensor.getHandle(), true); mActiveSensors.put(handle, true); addSensorEvent(sensor); addSensorEvent(sensor); return true; if (enableSensor(sensor, delay) != 0) { } removeSensor(sensor, false); return false; return false; } } return true; } public boolean removeAllSensors() { public boolean removeAllSensors() { for (int i=0 ; i<mActiveSensors.size(); i++) { for (int i=0 ; i<mActiveSensors.size(); i++) { Loading @@ -252,10 +257,10 @@ public class SystemSensorManager extends SensorManager { return true; return true; } } public boolean removeSensor(Sensor sensor) { public boolean removeSensor(Sensor sensor, boolean disable) { final int handle = sensor.getHandle(); final int handle = sensor.getHandle(); if (mActiveSensors.get(handle)) { if (mActiveSensors.get(handle)) { disableSensor(sensor); if (disable) disableSensor(sensor); mActiveSensors.put(sensor.getHandle(), false); mActiveSensors.put(sensor.getHandle(), false); removeSensorEvent(sensor); removeSensorEvent(sensor); return true; return true; Loading Loading @@ -334,6 +339,10 @@ public class SystemSensorManager extends SensorManager { long timestamp) { long timestamp) { final Sensor sensor = sHandleToSensor.get(handle); final Sensor sensor = sHandleToSensor.get(handle); SensorEvent t = mSensorsEvents.get(handle); SensorEvent t = mSensorsEvents.get(handle); if (t == null) { Log.e(TAG, "Error: Sensor Event is null for Sensor: " + sensor); return; } // Copy from the values array. // Copy from the values array. System.arraycopy(values, 0, t.values, 0, t.values.length); System.arraycopy(values, 0, t.values, 0, t.values.length); t.timestamp = timestamp; t.timestamp = timestamp; Loading Loading @@ -390,14 +399,19 @@ public class SystemSensorManager extends SensorManager { long timestamp) { long timestamp) { final Sensor sensor = sHandleToSensor.get(handle); final Sensor sensor = sHandleToSensor.get(handle); TriggerEvent t = mTriggerEvents.get(handle); TriggerEvent t = mTriggerEvents.get(handle); if (t == null) { Log.e(TAG, "Error: Trigger Event is null for Sensor: " + sensor); return; } // Copy from the values array. // Copy from the values array. System.arraycopy(values, 0, t.values, 0, t.values.length); System.arraycopy(values, 0, t.values, 0, t.values.length); t.timestamp = timestamp; t.timestamp = timestamp; t.sensor = sensor; t.sensor = sensor; // A trigger sensor should be auto disabled. // A trigger sensor is auto disabled. So just clean up and don't call native mManager.cancelTriggerSensorImpl(mListener, sensor); // disable. mManager.cancelTriggerSensorImpl(mListener, sensor, false); mListener.onTrigger(t); mListener.onTrigger(t); } } Loading Loading
core/java/android/hardware/SensorManager.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -1387,14 +1387,14 @@ public abstract class SensorManager { * @throws IllegalArgumentException when sensor is a trigger sensor. * @throws IllegalArgumentException when sensor is a trigger sensor. */ */ public boolean cancelTriggerSensor(TriggerEventListener listener, Sensor sensor) { public boolean cancelTriggerSensor(TriggerEventListener listener, Sensor sensor) { return cancelTriggerSensorImpl(listener, sensor); return cancelTriggerSensorImpl(listener, sensor, true); } } /** /** * @hide * @hide */ */ protected abstract boolean cancelTriggerSensorImpl(TriggerEventListener listener, protected abstract boolean cancelTriggerSensorImpl(TriggerEventListener listener, Sensor sensor); Sensor sensor, boolean disable); private LegacySensorManager getLegacySensorManager() { private LegacySensorManager getLegacySensorManager() { Loading
core/java/android/hardware/SystemSensorManager.java +28 −14 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.content.Context; import android.os.Handler; import android.os.Handler; import android.os.Looper; import android.os.Looper; import android.os.MessageQueue; import android.os.MessageQueue; import android.util.Log; import android.util.SparseArray; import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.SparseBooleanArray; import android.util.SparseIntArray; import android.util.SparseIntArray; Loading Loading @@ -135,7 +136,7 @@ public class SystemSensorManager extends SensorManager { if (sensor == null) { if (sensor == null) { result = queue.removeAllSensors(); result = queue.removeAllSensors(); } else { } else { result = queue.removeSensor(sensor); result = queue.removeSensor(sensor, true); } } if (result && !queue.hasSensors()) { if (result && !queue.hasSensors()) { mSensorListeners.remove(listener); mSensorListeners.remove(listener); Loading Loading @@ -170,7 +171,8 @@ public class SystemSensorManager extends SensorManager { /** @hide */ /** @hide */ @Override @Override protected boolean cancelTriggerSensorImpl(TriggerEventListener listener, Sensor sensor) { protected boolean cancelTriggerSensorImpl(TriggerEventListener listener, Sensor sensor, boolean disable) { if (sensor != null && Sensor.getReportingMode(sensor) != Sensor.REPORTING_MODE_ONE_SHOT) { if (sensor != null && Sensor.getReportingMode(sensor) != Sensor.REPORTING_MODE_ONE_SHOT) { return false; return false; } } Loading @@ -181,7 +183,7 @@ public class SystemSensorManager extends SensorManager { if (sensor == null) { if (sensor == null) { result = queue.removeAllSensors(); result = queue.removeAllSensors(); } else { } else { result = queue.removeSensor(sensor); result = queue.removeSensor(sensor, disable); } } if (result && !queue.hasSensors()) { if (result && !queue.hasSensors()) { mTriggerListeners.remove(listener); mTriggerListeners.remove(listener); Loading Loading @@ -225,15 +227,18 @@ public class SystemSensorManager extends SensorManager { public boolean addSensor(Sensor sensor, int delay) { public boolean addSensor(Sensor sensor, int delay) { // Check if already present. // Check if already present. if (mActiveSensors.get(sensor.getHandle())) return false; int handle = sensor.getHandle(); if (mActiveSensors.get(handle)) return false; if (enableSensor(sensor, delay) == 0) { // Get ready to receive events before calling enable. mActiveSensors.put(sensor.getHandle(), true); mActiveSensors.put(handle, true); addSensorEvent(sensor); addSensorEvent(sensor); return true; if (enableSensor(sensor, delay) != 0) { } removeSensor(sensor, false); return false; return false; } } return true; } public boolean removeAllSensors() { public boolean removeAllSensors() { for (int i=0 ; i<mActiveSensors.size(); i++) { for (int i=0 ; i<mActiveSensors.size(); i++) { Loading @@ -252,10 +257,10 @@ public class SystemSensorManager extends SensorManager { return true; return true; } } public boolean removeSensor(Sensor sensor) { public boolean removeSensor(Sensor sensor, boolean disable) { final int handle = sensor.getHandle(); final int handle = sensor.getHandle(); if (mActiveSensors.get(handle)) { if (mActiveSensors.get(handle)) { disableSensor(sensor); if (disable) disableSensor(sensor); mActiveSensors.put(sensor.getHandle(), false); mActiveSensors.put(sensor.getHandle(), false); removeSensorEvent(sensor); removeSensorEvent(sensor); return true; return true; Loading Loading @@ -334,6 +339,10 @@ public class SystemSensorManager extends SensorManager { long timestamp) { long timestamp) { final Sensor sensor = sHandleToSensor.get(handle); final Sensor sensor = sHandleToSensor.get(handle); SensorEvent t = mSensorsEvents.get(handle); SensorEvent t = mSensorsEvents.get(handle); if (t == null) { Log.e(TAG, "Error: Sensor Event is null for Sensor: " + sensor); return; } // Copy from the values array. // Copy from the values array. System.arraycopy(values, 0, t.values, 0, t.values.length); System.arraycopy(values, 0, t.values, 0, t.values.length); t.timestamp = timestamp; t.timestamp = timestamp; Loading Loading @@ -390,14 +399,19 @@ public class SystemSensorManager extends SensorManager { long timestamp) { long timestamp) { final Sensor sensor = sHandleToSensor.get(handle); final Sensor sensor = sHandleToSensor.get(handle); TriggerEvent t = mTriggerEvents.get(handle); TriggerEvent t = mTriggerEvents.get(handle); if (t == null) { Log.e(TAG, "Error: Trigger Event is null for Sensor: " + sensor); return; } // Copy from the values array. // Copy from the values array. System.arraycopy(values, 0, t.values, 0, t.values.length); System.arraycopy(values, 0, t.values, 0, t.values.length); t.timestamp = timestamp; t.timestamp = timestamp; t.sensor = sensor; t.sensor = sensor; // A trigger sensor should be auto disabled. // A trigger sensor is auto disabled. So just clean up and don't call native mManager.cancelTriggerSensorImpl(mListener, sensor); // disable. mManager.cancelTriggerSensorImpl(mListener, sensor, false); mListener.onTrigger(t); mListener.onTrigger(t); } } Loading