summaryrefslogtreecommitdiff
path: root/libs/binder/IActivityManager.cpp
diff options
context:
space:
mode:
author Ganesh Mahendran <opensource.ganesh@gmail.com> 2017-11-02 14:43:38 +0000
committer Svetoslav Ganov <svetoslavganov@google.com> 2017-12-26 06:20:27 +0000
commit4d85b8c0a38c14f854af8ff85391b7a8d1170d5b (patch)
treed5b655c0daf01db2ddd5bbb258f04c48c43c18b7 /libs/binder/IActivityManager.cpp
parent3a74e1428a75fdc6c519523a0da5ffd86e3001d1 (diff)
Don't record audio if UID is idle - native framework
If a UID is in an idle state we don't allow recording to protect user's privacy. If the UID is in an idle state we allow recording but report empty data (all zeros in the byte array) and once the process goes in an active state we report the real mic data. This avoids the race between the app being notified aboout its lifecycle and the audio system being notified about the state of a UID. Test: Added - AudioRecordTest#testRecordNoDataForIdleUids Passing - cts-tradefed run cts-dev -m CtsMediaTestCases -t android.media.cts.AudioRecordTest bug:63938985 Change-Id: I10db89c09498b487ce483d1868123fca95589b34
Diffstat (limited to 'libs/binder/IActivityManager.cpp')
-rw-r--r--libs/binder/IActivityManager.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/libs/binder/IActivityManager.cpp b/libs/binder/IActivityManager.cpp
index 50a8b28aae..b7a5fd99f6 100644
--- a/libs/binder/IActivityManager.cpp
+++ b/libs/binder/IActivityManager.cpp
@@ -56,6 +56,28 @@ public:
}
return fd;
}
+
+ virtual void registerUidObserver(const sp<IUidObserver>& observer,
+ const int32_t event,
+ const int32_t cutpoint,
+ const String16& callingPackage)
+ {
+ Parcel data, reply;
+ data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor());
+ data.writeStrongBinder(IInterface::asBinder(observer));
+ data.writeInt32(event);
+ data.writeInt32(cutpoint);
+ data.writeString16(callingPackage);
+ remote()->transact(REGISTER_UID_OBSERVER_TRANSACTION, data, &reply);
+ }
+
+ virtual void unregisterUidObserver(const sp<IUidObserver>& observer)
+ {
+ Parcel data, reply;
+ data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor());
+ data.writeStrongBinder(IInterface::asBinder(observer));
+ remote()->transact(UNREGISTER_UID_OBSERVER_TRANSACTION, data, &reply);
+ }
};
// ------------------------------------------------------------------------------------