Loading core/api/system-current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -3118,7 +3118,7 @@ package android.hardware { method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void addSensorPrivacyListener(int, @NonNull android.hardware.SensorPrivacyManager.OnSensorPrivacyChangedListener); method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void addSensorPrivacyListener(int, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.SensorPrivacyManager.OnSensorPrivacyChangedListener); method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public boolean isSensorPrivacyEnabled(int); method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void removeSensorPrivacyListener(@NonNull android.hardware.SensorPrivacyManager.OnSensorPrivacyChangedListener); method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void removeSensorPrivacyListener(int, @NonNull android.hardware.SensorPrivacyManager.OnSensorPrivacyChangedListener); } public static interface SensorPrivacyManager.OnSensorPrivacyChangedListener { core/java/android/hardware/ISensorPrivacyManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ interface ISensorPrivacyManager { void removeSensorPrivacyListener(in ISensorPrivacyListener listener); void removeIndividualSensorPrivacyListener(int sensor, in ISensorPrivacyListener listener); boolean isSensorPrivacyEnabled(); boolean isIndividualSensorPrivacyEnabled(int userId, int sensor); Loading core/java/android/hardware/SensorPrivacyManager.java +5 −3 Original line number Diff line number Diff line Loading @@ -286,13 +286,15 @@ public final class SensorPrivacyManager { */ @SystemApi @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void removeSensorPrivacyListener(@NonNull OnSensorPrivacyChangedListener listener) { public void removeSensorPrivacyListener(@Sensors.Sensor int sensor, @NonNull OnSensorPrivacyChangedListener listener) { synchronized (mListeners) { for (int i = 0; i < mIndividualListeners.size(); i++) { Pair<OnSensorPrivacyChangedListener, Integer> pair = mIndividualListeners.keyAt(i); if (pair.first.equals(listener)) { if (pair.second == sensor && pair.first.equals(listener)) { try { mService.removeSensorPrivacyListener(mIndividualListeners.valueAt(i)); mService.removeIndividualSensorPrivacyListener(sensor, mIndividualListeners.valueAt(i)); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading services/core/java/com/android/server/SensorPrivacyService.java +27 −3 Original line number Diff line number Diff line Loading @@ -966,6 +966,19 @@ public final class SensorPrivacyService extends SystemService { mHandler.removeListener(listener); } /** * Unregisters a listener from sensor privacy state change notifications. */ @Override public void removeIndividualSensorPrivacyListener(int sensor, ISensorPrivacyListener listener) { enforceObserveSensorPrivacyPermission(); if (listener == null) { throw new NullPointerException("listener cannot be null"); } mHandler.removeListener(sensor, listener); } @Override public void suppressIndividualSensorPrivacyReminders(int userId, String packageName, IBinder token, boolean suppress) { Loading Loading @@ -1300,10 +1313,21 @@ public final class SensorPrivacyService extends SystemService { deathRecipient.destroy(); } mListeners.unregister(listener); } } public void removeListener(int sensor, ISensorPrivacyListener listener) { synchronized (mListenerLock) { DeathRecipient deathRecipient = mDeathRecipients.remove(listener); if (deathRecipient != null) { deathRecipient.destroy(); } for (int i = 0, numUsers = mIndividualSensorListeners.size(); i < numUsers; i++) { for (int j = 0, numListeners = mIndividualSensorListeners.valueAt(i).size(); j < numListeners; j++) { mIndividualSensorListeners.valueAt(i).valueAt(j).unregister(listener); RemoteCallbackList callbacks = mIndividualSensorListeners.valueAt(i).get(sensor); if (callbacks != null) { callbacks.unregister(listener); } } } Loading Loading
core/api/system-current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -3118,7 +3118,7 @@ package android.hardware { method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void addSensorPrivacyListener(int, @NonNull android.hardware.SensorPrivacyManager.OnSensorPrivacyChangedListener); method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void addSensorPrivacyListener(int, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.SensorPrivacyManager.OnSensorPrivacyChangedListener); method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public boolean isSensorPrivacyEnabled(int); method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void removeSensorPrivacyListener(@NonNull android.hardware.SensorPrivacyManager.OnSensorPrivacyChangedListener); method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void removeSensorPrivacyListener(int, @NonNull android.hardware.SensorPrivacyManager.OnSensorPrivacyChangedListener); } public static interface SensorPrivacyManager.OnSensorPrivacyChangedListener {
core/java/android/hardware/ISensorPrivacyManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ interface ISensorPrivacyManager { void removeSensorPrivacyListener(in ISensorPrivacyListener listener); void removeIndividualSensorPrivacyListener(int sensor, in ISensorPrivacyListener listener); boolean isSensorPrivacyEnabled(); boolean isIndividualSensorPrivacyEnabled(int userId, int sensor); Loading
core/java/android/hardware/SensorPrivacyManager.java +5 −3 Original line number Diff line number Diff line Loading @@ -286,13 +286,15 @@ public final class SensorPrivacyManager { */ @SystemApi @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void removeSensorPrivacyListener(@NonNull OnSensorPrivacyChangedListener listener) { public void removeSensorPrivacyListener(@Sensors.Sensor int sensor, @NonNull OnSensorPrivacyChangedListener listener) { synchronized (mListeners) { for (int i = 0; i < mIndividualListeners.size(); i++) { Pair<OnSensorPrivacyChangedListener, Integer> pair = mIndividualListeners.keyAt(i); if (pair.first.equals(listener)) { if (pair.second == sensor && pair.first.equals(listener)) { try { mService.removeSensorPrivacyListener(mIndividualListeners.valueAt(i)); mService.removeIndividualSensorPrivacyListener(sensor, mIndividualListeners.valueAt(i)); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading
services/core/java/com/android/server/SensorPrivacyService.java +27 −3 Original line number Diff line number Diff line Loading @@ -966,6 +966,19 @@ public final class SensorPrivacyService extends SystemService { mHandler.removeListener(listener); } /** * Unregisters a listener from sensor privacy state change notifications. */ @Override public void removeIndividualSensorPrivacyListener(int sensor, ISensorPrivacyListener listener) { enforceObserveSensorPrivacyPermission(); if (listener == null) { throw new NullPointerException("listener cannot be null"); } mHandler.removeListener(sensor, listener); } @Override public void suppressIndividualSensorPrivacyReminders(int userId, String packageName, IBinder token, boolean suppress) { Loading Loading @@ -1300,10 +1313,21 @@ public final class SensorPrivacyService extends SystemService { deathRecipient.destroy(); } mListeners.unregister(listener); } } public void removeListener(int sensor, ISensorPrivacyListener listener) { synchronized (mListenerLock) { DeathRecipient deathRecipient = mDeathRecipients.remove(listener); if (deathRecipient != null) { deathRecipient.destroy(); } for (int i = 0, numUsers = mIndividualSensorListeners.size(); i < numUsers; i++) { for (int j = 0, numListeners = mIndividualSensorListeners.valueAt(i).size(); j < numListeners; j++) { mIndividualSensorListeners.valueAt(i).valueAt(j).unregister(listener); RemoteCallbackList callbacks = mIndividualSensorListeners.valueAt(i).get(sensor); if (callbacks != null) { callbacks.unregister(listener); } } } Loading