audiopolicy: add support to load custom audiopolicymanager.
This change provides a mechanism to load a custom implementation of
AudioPolicyManager.
If custom library is present load that otherwise fallback to default
AudioPolicyManager.
This custom implementation should reside under system_ext or product
partition and should be compliant to xTS test suites.
- To use this create a library viz. libaudiopolicymanagericustom.so by
extending AudioPolicyManager in system_ext or product partition,
expose createAudioPolicyManager & destroyAudioPolicyManager methods
to return custom AudioPolicyManager instance.
Bug: 120198776
Test: make
Change-Id: I0df7c390fe29f56378d4b90ca5ab559302770419
diff --git a/services/audiopolicy/service/AudioPolicyService.h b/services/audiopolicy/service/AudioPolicyService.h
index 72d8f28..e25d542 100644
--- a/services/audiopolicy/service/AudioPolicyService.h
+++ b/services/audiopolicy/service/AudioPolicyService.h
@@ -38,7 +38,6 @@
#include "CaptureStateNotifier.h"
#include <AudioPolicyInterface.h>
#include <android/hardware/BnSensorPrivacyListener.h>
-
#include <unordered_map>
namespace android {
@@ -861,7 +860,8 @@
// Internal dump utilities.
status_t dumpPermissionDenial(int fd);
-
+ void loadAudioPolicyManager();
+ void unloadAudioPolicyManager();
mutable Mutex mLock; // prevents concurrent access to AudioPolicy manager functions changing
// device connection state or routing
@@ -896,6 +896,10 @@
CaptureStateNotifier mCaptureStateNotifier;
+ void *mLibraryHandle = nullptr;
+ CreateAudioPolicyManagerInstance mCreateAudioPolicyManager;
+ DestroyAudioPolicyManagerInstance mDestroyAudioPolicyManager;
+
std::map<userid_t, sp<SensorPrivacyPolicy>> mMicrophoneSensorPrivacyPolicies;
};