diff options
4 files changed, 19 insertions, 1 deletions
diff --git a/libs/sensorprivacy/SensorPrivacyManager.cpp b/libs/sensorprivacy/SensorPrivacyManager.cpp index b3537ce444..ef3ceda07c 100644 --- a/libs/sensorprivacy/SensorPrivacyManager.cpp +++ b/libs/sensorprivacy/SensorPrivacyManager.cpp @@ -100,6 +100,15 @@ void SensorPrivacyManager::removeSensorPrivacyListener( } } +void SensorPrivacyManager::removeIndividualSensorPrivacyListener(int sensor, + const sp<hardware::ISensorPrivacyListener>& listener) +{ + sp<hardware::ISensorPrivacyManager> service = getService(); + if (service != nullptr) { + service->removeIndividualSensorPrivacyListener(sensor, listener); + } +} + bool SensorPrivacyManager::isSensorPrivacyEnabled() { sp<hardware::ISensorPrivacyManager> service = getService(); diff --git a/libs/sensorprivacy/aidl/android/hardware/ISensorPrivacyManager.aidl b/libs/sensorprivacy/aidl/android/hardware/ISensorPrivacyManager.aidl index c8ceeb89af..f91f5b9017 100644 --- a/libs/sensorprivacy/aidl/android/hardware/ISensorPrivacyManager.aidl +++ b/libs/sensorprivacy/aidl/android/hardware/ISensorPrivacyManager.aidl @@ -28,6 +28,8 @@ interface ISensorPrivacyManager { void removeSensorPrivacyListener(in ISensorPrivacyListener listener); + void removeIndividualSensorPrivacyListener(int sensor, in ISensorPrivacyListener listener); + boolean isSensorPrivacyEnabled(); boolean isIndividualSensorPrivacyEnabled(int userId, int sensor); diff --git a/libs/sensorprivacy/include/sensorprivacy/SensorPrivacyManager.h b/libs/sensorprivacy/include/sensorprivacy/SensorPrivacyManager.h index fb4cbe9d55..af699d0b31 100644 --- a/libs/sensorprivacy/include/sensorprivacy/SensorPrivacyManager.h +++ b/libs/sensorprivacy/include/sensorprivacy/SensorPrivacyManager.h @@ -42,6 +42,8 @@ public: status_t addIndividualSensorPrivacyListener(int userId, int sensor, const sp<hardware::ISensorPrivacyListener>& listener); void removeSensorPrivacyListener(const sp<hardware::ISensorPrivacyListener>& listener); + void removeIndividualSensorPrivacyListener(int sensor, + const sp<hardware::ISensorPrivacyListener>& listener); bool isSensorPrivacyEnabled(); bool isIndividualSensorPrivacyEnabled(int userId, int sensor); status_t isIndividualSensorPrivacyEnabled(int userId, int sensor, bool &result); diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp index 9955cdb080..f9491969e2 100644 --- a/services/sensorservice/SensorService.cpp +++ b/services/sensorservice/SensorService.cpp @@ -2138,7 +2138,12 @@ void SensorService::SensorPrivacyPolicy::registerSelf() { void SensorService::SensorPrivacyPolicy::unregisterSelf() { AutoCallerClear acc; SensorPrivacyManager spm; - spm.removeSensorPrivacyListener(this); + if (mIsIndividualMic) { + spm.removeIndividualSensorPrivacyListener( + SensorPrivacyManager::INDIVIDUAL_SENSOR_MICROPHONE, this); + } else { + spm.removeSensorPrivacyListener(this); + } } bool SensorService::SensorPrivacyPolicy::isSensorPrivacyEnabled() { |