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

Commit 1eadc31a authored by Yixiao Luo's avatar Yixiao Luo Committed by Android (Google) Code Review
Browse files

Merge "Retrieve the default picture profile for each package when MQ service starts" into main

parents 07b6faf3 d68fdb13
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.media.quality;

import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.StringDef;
import android.annotation.SystemApi;
import android.media.tv.TvInputInfo;
import android.media.tv.flags.Flags;
@@ -72,6 +73,16 @@ public final class PictureProfile implements Parcelable {
     */
    public static final int TYPE_APPLICATION = 2;

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @StringDef(prefix = "NAME_", value = {
            NAME_DEFAULT
    })
    public @interface ProfileName {}

    /** @hide */
    public static final String NAME_DEFAULT = "default";

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @IntDef(flag = false, prefix = "ERROR_", value = {
+35 −2
Original line number Diff line number Diff line
@@ -165,6 +165,7 @@ public class MediaQualityService extends SystemService {
                soundProfilePrefs, Context.MODE_PRIVATE);
    }

    @GuardedBy("mPictureProfileLock")
    @Override
    public void onStart() {
        IBinder binder = ServiceManager.getService(IMediaQuality.DESCRIPTOR + "/default");
@@ -185,8 +186,22 @@ public class MediaQualityService extends SystemService {
                mMediaQuality.setPictureProfileAdjustmentListener(mPictureProfileAdjListener);
                mMediaQuality.setSoundProfileAdjustmentListener(mSoundProfileAdjListener);

                // TODO: populate mPackageDefaultPictureProfileHandleMap

                synchronized (mPictureProfileLock) {
                    String selection = BaseParameters.PARAMETER_TYPE + " = ? AND "
                            + BaseParameters.PARAMETER_NAME + " = ?";
                    String[] selectionArguments = {
                            Integer.toString(PictureProfile.TYPE_SYSTEM),
                            PictureProfile.NAME_DEFAULT
                    };
                    List<PictureProfile> packageDefaultPictureProfiles =
                            mMqDatabaseUtils.getPictureProfilesBasedOnConditions(MediaQualityUtils
                                .getMediaProfileColumns(false), selection, selectionArguments);
                    mPackageDefaultPictureProfileHandleMap.clear();
                    for (PictureProfile profile : packageDefaultPictureProfiles) {
                        mPackageDefaultPictureProfileHandleMap.put(
                                profile.getPackageName(), profile.getHandle().getId());
                    }
                }
            } catch (RemoteException e) {
                Slog.e(TAG, "Failed to set ambient backlight detector callback", e);
            }
@@ -229,6 +244,10 @@ public class MediaQualityService extends SystemService {
                            pp.setProfileId(value);
                            mMqManagerNotifier.notifyOnPictureProfileAdded(value, pp,
                                    Binder.getCallingUid(), Binder.getCallingPid());
                            if (isPackageDefaultPictureProfile(pp)) {
                                mPackageDefaultPictureProfileHandleMap.put(
                                    pp.getPackageName(), pp.getHandle().getId());
                            }
                        }
                    }
            );
@@ -253,6 +272,10 @@ public class MediaQualityService extends SystemService {
                            pp.getParameters());
                    updateDatabaseOnPictureProfileAndNotifyManagerAndHal(values,
                            pp.getParameters());
                    if (isPackageDefaultPictureProfile(pp)) {
                        mPackageDefaultPictureProfileHandleMap.put(
                            pp.getPackageName(), pp.getHandle().getId());
                    }
                }
            });
        }
@@ -297,6 +320,11 @@ public class MediaQualityService extends SystemService {
                            mHalNotifier.notifyHalOnPictureProfileChange(dbId, null);
                        }
                    }

                    if (isPackageDefaultPictureProfile(toDelete)) {
                        mPackageDefaultPictureProfileHandleMap.remove(
                                toDelete.getPackageName());
                    }
                }
            });
        }
@@ -1966,4 +1994,9 @@ public class MediaQualityService extends SystemService {
                vendorBundleToByteArray, vendorBundleToByteArray.length);
        pictureParameters.vendorPictureParameters.setParcelable(defaultExtension);
    }

    private boolean isPackageDefaultPictureProfile(PictureProfile pp) {
        return pp != null && pp.getProfileType() == PictureProfile.TYPE_SYSTEM &&
               pp.getName().equals(PictureProfile.NAME_DEFAULT);
    }
}