diff options
author | 2021-05-19 16:10:29 -0700 | |
---|---|---|
committer | 2021-05-20 20:49:47 +0000 | |
commit | 7bfa35e358886412b432cb732478e5ee87a716fc (patch) | |
tree | c28208b32d8c7d2cf52ed0921e2f76a299ecca85 | |
parent | d01b8e9a565f9c68dd19d02960e2937d8a052695 (diff) |
Add aidl method for removing individual sensor privacy listener
Since a single listener can be registered for multiple sensors they
should be able to be removed individually.
Test: Build
Bug: 181681375
Change-Id: I6055e89fefe93e0f67c86becccde0259c4d4ea1b
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() { |