Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d7cdb56 authored by Paul Wang's avatar Paul Wang
Browse files

Expose API to set audio device as non-default playback

Bug: 259094683
Test: atest AudioServiceHostTest AudioHostTest
Change-Id: I3120a7b46675925497187614db8fbeb4d24572a8
parent 0c96fc88
Loading
Loading
Loading
Loading
+19 −2
Original line number Diff line number Diff line
@@ -2223,8 +2223,25 @@ status_t AudioSystem::setDevicesRoleForStrategy(product_strategy_t strategy,
            aps->setDevicesRoleForStrategy(strategyAidl, roleAidl, devicesAidl));
}

status_t AudioSystem::removeDevicesRoleForStrategy(product_strategy_t strategy,
                                                   device_role_t role,
                                                   const AudioDeviceTypeAddrVector& devices) {
    const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
    if (aps == 0) {
        return PERMISSION_DENIED;
    }

    int32_t strategyAidl = VALUE_OR_RETURN_STATUS(legacy2aidl_product_strategy_t_int32_t(strategy));
    media::DeviceRole roleAidl = VALUE_OR_RETURN_STATUS(legacy2aidl_device_role_t_DeviceRole(role));
    std::vector<AudioDevice> devicesAidl = VALUE_OR_RETURN_STATUS(
            convertContainer<std::vector<AudioDevice>>(devices,
                                                       legacy2aidl_AudioDeviceTypeAddress));
    return statusTFromBinderStatus(
            aps->removeDevicesRoleForStrategy(strategyAidl, roleAidl, devicesAidl));
}

status_t
AudioSystem::removeDevicesRoleForStrategy(product_strategy_t strategy, device_role_t role) {
AudioSystem::clearDevicesRoleForStrategy(product_strategy_t strategy, device_role_t role) {
    const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
    if (aps == 0) {
        return PERMISSION_DENIED;
@@ -2232,7 +2249,7 @@ AudioSystem::removeDevicesRoleForStrategy(product_strategy_t strategy, device_ro
    int32_t strategyAidl = VALUE_OR_RETURN_STATUS(legacy2aidl_product_strategy_t_int32_t(strategy));
    media::DeviceRole roleAidl = VALUE_OR_RETURN_STATUS(legacy2aidl_device_role_t_DeviceRole(role));
    return statusTFromBinderStatus(
            aps->removeDevicesRoleForStrategy(strategyAidl, roleAidl));
            aps->clearDevicesRoleForStrategy(strategyAidl, roleAidl));
}

status_t AudioSystem::getDevicesForRoleAndStrategy(product_strategy_t strategy,
+4 −1
Original line number Diff line number Diff line
@@ -330,7 +330,10 @@ interface IAudioPolicyService {
                                   in AudioDevice[] devices);

    void removeDevicesRoleForStrategy(int /* product_strategy_t */ strategy,
                                       DeviceRole role);
                                      DeviceRole role,
                                      in AudioDevice[] devices);

    void clearDevicesRoleForStrategy(int /* product_strategy_t */ strategy, DeviceRole role);

    AudioDevice[] getDevicesForRoleAndStrategy(int /* product_strategy_t */ strategy,
                                               DeviceRole role);
+5 −1
Original line number Diff line number Diff line
@@ -523,7 +523,11 @@ public:
    static status_t setDevicesRoleForStrategy(product_strategy_t strategy,
            device_role_t role, const AudioDeviceTypeAddrVector &devices);

    static status_t removeDevicesRoleForStrategy(product_strategy_t strategy, device_role_t role);
    static status_t removeDevicesRoleForStrategy(product_strategy_t strategy,
            device_role_t role, const AudioDeviceTypeAddrVector &devices);

    static status_t clearDevicesRoleForStrategy(product_strategy_t strategy,
            device_role_t role);

    static status_t getDevicesForRoleAndStrategy(product_strategy_t strategy,
            device_role_t role, AudioDeviceTypeAddrVector &devices);
+2 −2
Original line number Diff line number Diff line
@@ -405,7 +405,7 @@ TEST_F(AudioSystemTest, DevicesForRoleAndStrategy) {
        EXPECT_EQ(OK, AudioSystem::getDevicesForRoleAndStrategy(mediaStrategy.getId(),
                                                                DEVICE_ROLE_PREFERRED, devices));
        EXPECT_EQ(devices, outputDevices);
        EXPECT_EQ(OK, AudioSystem::removeDevicesRoleForStrategy(mediaStrategy.getId(),
        EXPECT_EQ(OK, AudioSystem::clearDevicesRoleForStrategy(mediaStrategy.getId(),
                                                               DEVICE_ROLE_PREFERRED));
        EXPECT_EQ(NAME_NOT_FOUND, AudioSystem::getDevicesForRoleAndStrategy(
                                          mediaStrategy.getId(), DEVICE_ROLE_PREFERRED, devices));
+4 −1
Original line number Diff line number Diff line
@@ -323,8 +323,11 @@ public:
                                               const AudioDeviceTypeAddrVector &devices) = 0;

    virtual status_t removeDevicesRoleForStrategy(product_strategy_t strategy,
                                                  device_role_t role) = 0;
                                                  device_role_t role,
                                                  const AudioDeviceTypeAddrVector &devices) = 0;

    virtual status_t clearDevicesRoleForStrategy(product_strategy_t strategy,
                                                     device_role_t role) = 0;

    virtual status_t getDevicesForRoleAndStrategy(product_strategy_t strategy,
                                                  device_role_t role,
Loading