Loading media/libaudioclient/AudioSystem.cpp +7 −0 Original line number Original line Diff line number Diff line Loading @@ -1512,6 +1512,13 @@ status_t AudioSystem::getVolumeGroupFromAudioAttributes(const AudioAttributes &a return aps->getVolumeGroupFromAudioAttributes(aa, volumeGroup); return aps->getVolumeGroupFromAudioAttributes(aa, volumeGroup); } } status_t AudioSystem::setRttEnabled(bool enabled) { const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return PERMISSION_DENIED; return aps->setRttEnabled(enabled); } // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- int AudioSystem::AudioPolicyServiceClient::addAudioPortCallback( int AudioSystem::AudioPolicyServiceClient::addAudioPortCallback( Loading media/libaudioclient/IAudioPolicyService.cpp +23 −1 Original line number Original line Diff line number Diff line Loading @@ -104,6 +104,7 @@ enum { GET_VOLUME_GROUP_FOR_ATTRIBUTES, GET_VOLUME_GROUP_FOR_ATTRIBUTES, SET_ALLOWED_CAPTURE_POLICY, SET_ALLOWED_CAPTURE_POLICY, MOVE_EFFECTS_TO_IO, MOVE_EFFECTS_TO_IO, SET_RTT_ENABLED }; }; #define MAX_ITEMS_PER_LIST 1024 #define MAX_ITEMS_PER_LIST 1024 Loading Loading @@ -1271,6 +1272,18 @@ public: volumeGroup = static_cast<volume_group_t>(reply.readInt32()); volumeGroup = static_cast<volume_group_t>(reply.readInt32()); return NO_ERROR; return NO_ERROR; } } virtual status_t setRttEnabled(bool enabled) { Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInt32(static_cast<int32_t>(enabled)); status_t status = remote()->transact(SET_RTT_ENABLED, data, &reply); if (status != NO_ERROR) { return status; } return static_cast<status_t>(reply.readInt32()); } }; }; IMPLEMENT_META_INTERFACE(AudioPolicyService, "android.media.IAudioPolicyService"); IMPLEMENT_META_INTERFACE(AudioPolicyService, "android.media.IAudioPolicyService"); Loading Loading @@ -1332,7 +1345,8 @@ status_t BnAudioPolicyService::onTransact( case REMOVE_UID_DEVICE_AFFINITY: case REMOVE_UID_DEVICE_AFFINITY: case GET_OFFLOAD_FORMATS_A2DP: case GET_OFFLOAD_FORMATS_A2DP: case LIST_AUDIO_VOLUME_GROUPS: case LIST_AUDIO_VOLUME_GROUPS: case GET_VOLUME_GROUP_FOR_ATTRIBUTES: { case GET_VOLUME_GROUP_FOR_ATTRIBUTES: case SET_RTT_ENABLED: { if (!isServiceUid(IPCThreadState::self()->getCallingUid())) { if (!isServiceUid(IPCThreadState::self()->getCallingUid())) { ALOGW("%s: transaction %d received from PID %d unauthorized UID %d", ALOGW("%s: transaction %d received from PID %d unauthorized UID %d", __func__, code, IPCThreadState::self()->getCallingPid(), __func__, code, IPCThreadState::self()->getCallingPid(), Loading Loading @@ -2347,6 +2361,14 @@ status_t BnAudioPolicyService::onTransact( return NO_ERROR; return NO_ERROR; } } case SET_RTT_ENABLED: { CHECK_INTERFACE(IAudioPolicyService, data, reply); bool enabled = static_cast<bool>(data.readInt32()); status_t status = setRttEnabled(enabled); reply->writeInt32(status); return NO_ERROR; } default: default: return BBinder::onTransact(code, data, reply, flags); return BBinder::onTransact(code, data, reply, flags); } } Loading media/libaudioclient/include/media/AudioSystem.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -394,6 +394,8 @@ public: static status_t getVolumeGroupFromAudioAttributes(const AudioAttributes &aa, static status_t getVolumeGroupFromAudioAttributes(const AudioAttributes &aa, volume_group_t &volumeGroup); volume_group_t &volumeGroup); static status_t setRttEnabled(bool enabled); // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- class AudioVolumeGroupCallback : public RefBase class AudioVolumeGroupCallback : public RefBase Loading media/libaudioclient/include/media/IAudioPolicyService.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -220,6 +220,8 @@ public: virtual status_t listAudioVolumeGroups(AudioVolumeGroupVector &groups) = 0; virtual status_t listAudioVolumeGroups(AudioVolumeGroupVector &groups) = 0; virtual status_t getVolumeGroupFromAudioAttributes(const AudioAttributes &aa, virtual status_t getVolumeGroupFromAudioAttributes(const AudioAttributes &aa, volume_group_t &volumeGroup) = 0; volume_group_t &volumeGroup) = 0; virtual status_t setRttEnabled(bool enabled) = 0; }; }; Loading media/utils/ServiceUtilities.cpp +2 −2 Original line number Original line Diff line number Diff line Loading @@ -128,7 +128,7 @@ bool captureAudioOutputAllowed(pid_t pid, uid_t uid) { if (isAudioServerOrRootUid(uid)) return true; if (isAudioServerOrRootUid(uid)) return true; static const String16 sCaptureAudioOutput("android.permission.CAPTURE_AUDIO_OUTPUT"); static const String16 sCaptureAudioOutput("android.permission.CAPTURE_AUDIO_OUTPUT"); bool ok = PermissionCache::checkPermission(sCaptureAudioOutput, pid, uid); bool ok = PermissionCache::checkPermission(sCaptureAudioOutput, pid, uid); if (!ok) ALOGE("Request requires android.permission.CAPTURE_AUDIO_OUTPUT"); if (!ok) ALOGV("Request requires android.permission.CAPTURE_AUDIO_OUTPUT"); return ok; return ok; } } Loading @@ -149,7 +149,7 @@ bool captureHotwordAllowed(const String16& opPackageName, pid_t pid, uid_t uid) // IMPORTANT: Use PermissionCache - not a runtime permission and may not change. // IMPORTANT: Use PermissionCache - not a runtime permission and may not change. ok = PermissionCache::checkPermission(sCaptureHotwordAllowed, pid, uid); ok = PermissionCache::checkPermission(sCaptureHotwordAllowed, pid, uid); } } if (!ok) ALOGE("android.permission.CAPTURE_AUDIO_HOTWORD"); if (!ok) ALOGV("android.permission.CAPTURE_AUDIO_HOTWORD"); return ok; return ok; } } Loading Loading
media/libaudioclient/AudioSystem.cpp +7 −0 Original line number Original line Diff line number Diff line Loading @@ -1512,6 +1512,13 @@ status_t AudioSystem::getVolumeGroupFromAudioAttributes(const AudioAttributes &a return aps->getVolumeGroupFromAudioAttributes(aa, volumeGroup); return aps->getVolumeGroupFromAudioAttributes(aa, volumeGroup); } } status_t AudioSystem::setRttEnabled(bool enabled) { const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return PERMISSION_DENIED; return aps->setRttEnabled(enabled); } // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- int AudioSystem::AudioPolicyServiceClient::addAudioPortCallback( int AudioSystem::AudioPolicyServiceClient::addAudioPortCallback( Loading
media/libaudioclient/IAudioPolicyService.cpp +23 −1 Original line number Original line Diff line number Diff line Loading @@ -104,6 +104,7 @@ enum { GET_VOLUME_GROUP_FOR_ATTRIBUTES, GET_VOLUME_GROUP_FOR_ATTRIBUTES, SET_ALLOWED_CAPTURE_POLICY, SET_ALLOWED_CAPTURE_POLICY, MOVE_EFFECTS_TO_IO, MOVE_EFFECTS_TO_IO, SET_RTT_ENABLED }; }; #define MAX_ITEMS_PER_LIST 1024 #define MAX_ITEMS_PER_LIST 1024 Loading Loading @@ -1271,6 +1272,18 @@ public: volumeGroup = static_cast<volume_group_t>(reply.readInt32()); volumeGroup = static_cast<volume_group_t>(reply.readInt32()); return NO_ERROR; return NO_ERROR; } } virtual status_t setRttEnabled(bool enabled) { Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInt32(static_cast<int32_t>(enabled)); status_t status = remote()->transact(SET_RTT_ENABLED, data, &reply); if (status != NO_ERROR) { return status; } return static_cast<status_t>(reply.readInt32()); } }; }; IMPLEMENT_META_INTERFACE(AudioPolicyService, "android.media.IAudioPolicyService"); IMPLEMENT_META_INTERFACE(AudioPolicyService, "android.media.IAudioPolicyService"); Loading Loading @@ -1332,7 +1345,8 @@ status_t BnAudioPolicyService::onTransact( case REMOVE_UID_DEVICE_AFFINITY: case REMOVE_UID_DEVICE_AFFINITY: case GET_OFFLOAD_FORMATS_A2DP: case GET_OFFLOAD_FORMATS_A2DP: case LIST_AUDIO_VOLUME_GROUPS: case LIST_AUDIO_VOLUME_GROUPS: case GET_VOLUME_GROUP_FOR_ATTRIBUTES: { case GET_VOLUME_GROUP_FOR_ATTRIBUTES: case SET_RTT_ENABLED: { if (!isServiceUid(IPCThreadState::self()->getCallingUid())) { if (!isServiceUid(IPCThreadState::self()->getCallingUid())) { ALOGW("%s: transaction %d received from PID %d unauthorized UID %d", ALOGW("%s: transaction %d received from PID %d unauthorized UID %d", __func__, code, IPCThreadState::self()->getCallingPid(), __func__, code, IPCThreadState::self()->getCallingPid(), Loading Loading @@ -2347,6 +2361,14 @@ status_t BnAudioPolicyService::onTransact( return NO_ERROR; return NO_ERROR; } } case SET_RTT_ENABLED: { CHECK_INTERFACE(IAudioPolicyService, data, reply); bool enabled = static_cast<bool>(data.readInt32()); status_t status = setRttEnabled(enabled); reply->writeInt32(status); return NO_ERROR; } default: default: return BBinder::onTransact(code, data, reply, flags); return BBinder::onTransact(code, data, reply, flags); } } Loading
media/libaudioclient/include/media/AudioSystem.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -394,6 +394,8 @@ public: static status_t getVolumeGroupFromAudioAttributes(const AudioAttributes &aa, static status_t getVolumeGroupFromAudioAttributes(const AudioAttributes &aa, volume_group_t &volumeGroup); volume_group_t &volumeGroup); static status_t setRttEnabled(bool enabled); // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- class AudioVolumeGroupCallback : public RefBase class AudioVolumeGroupCallback : public RefBase Loading
media/libaudioclient/include/media/IAudioPolicyService.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -220,6 +220,8 @@ public: virtual status_t listAudioVolumeGroups(AudioVolumeGroupVector &groups) = 0; virtual status_t listAudioVolumeGroups(AudioVolumeGroupVector &groups) = 0; virtual status_t getVolumeGroupFromAudioAttributes(const AudioAttributes &aa, virtual status_t getVolumeGroupFromAudioAttributes(const AudioAttributes &aa, volume_group_t &volumeGroup) = 0; volume_group_t &volumeGroup) = 0; virtual status_t setRttEnabled(bool enabled) = 0; }; }; Loading
media/utils/ServiceUtilities.cpp +2 −2 Original line number Original line Diff line number Diff line Loading @@ -128,7 +128,7 @@ bool captureAudioOutputAllowed(pid_t pid, uid_t uid) { if (isAudioServerOrRootUid(uid)) return true; if (isAudioServerOrRootUid(uid)) return true; static const String16 sCaptureAudioOutput("android.permission.CAPTURE_AUDIO_OUTPUT"); static const String16 sCaptureAudioOutput("android.permission.CAPTURE_AUDIO_OUTPUT"); bool ok = PermissionCache::checkPermission(sCaptureAudioOutput, pid, uid); bool ok = PermissionCache::checkPermission(sCaptureAudioOutput, pid, uid); if (!ok) ALOGE("Request requires android.permission.CAPTURE_AUDIO_OUTPUT"); if (!ok) ALOGV("Request requires android.permission.CAPTURE_AUDIO_OUTPUT"); return ok; return ok; } } Loading @@ -149,7 +149,7 @@ bool captureHotwordAllowed(const String16& opPackageName, pid_t pid, uid_t uid) // IMPORTANT: Use PermissionCache - not a runtime permission and may not change. // IMPORTANT: Use PermissionCache - not a runtime permission and may not change. ok = PermissionCache::checkPermission(sCaptureHotwordAllowed, pid, uid); ok = PermissionCache::checkPermission(sCaptureHotwordAllowed, pid, uid); } } if (!ok) ALOGE("android.permission.CAPTURE_AUDIO_HOTWORD"); if (!ok) ALOGV("android.permission.CAPTURE_AUDIO_HOTWORD"); return ok; return ok; } } Loading