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
diff --git a/libs/sensorprivacy/SensorPrivacyManager.cpp b/libs/sensorprivacy/SensorPrivacyManager.cpp
index b3537ce..ef3ceda 100644
--- a/libs/sensorprivacy/SensorPrivacyManager.cpp
+++ b/libs/sensorprivacy/SensorPrivacyManager.cpp
@@ -100,6 +100,15 @@
}
}
+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 c8ceeb8..f91f5b9 100644
--- a/libs/sensorprivacy/aidl/android/hardware/ISensorPrivacyManager.aidl
+++ b/libs/sensorprivacy/aidl/android/hardware/ISensorPrivacyManager.aidl
@@ -28,6 +28,8 @@
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 fb4cbe9..af699d0 100644
--- a/libs/sensorprivacy/include/sensorprivacy/SensorPrivacyManager.h
+++ b/libs/sensorprivacy/include/sensorprivacy/SensorPrivacyManager.h
@@ -42,6 +42,8 @@
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 9955cdb..f949196 100644
--- a/services/sensorservice/SensorService.cpp
+++ b/services/sensorservice/SensorService.cpp
@@ -2138,7 +2138,12 @@
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() {