diff options
-rw-r--r-- | media/java/android/media/quality/PictureProfile.java | 11 | ||||
-rw-r--r-- | services/core/java/com/android/server/media/quality/MediaQualityService.java | 37 |
2 files changed, 46 insertions, 2 deletions
diff --git a/media/java/android/media/quality/PictureProfile.java b/media/java/android/media/quality/PictureProfile.java index 3bccd89c91c3..095dbb1ae2cf 100644 --- a/media/java/android/media/quality/PictureProfile.java +++ b/media/java/android/media/quality/PictureProfile.java @@ -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; @@ -74,6 +75,16 @@ public final class PictureProfile implements Parcelable { /** @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 = { ERROR_UNKNOWN, ERROR_NO_PERMISSION, diff --git a/services/core/java/com/android/server/media/quality/MediaQualityService.java b/services/core/java/com/android/server/media/quality/MediaQualityService.java index d1dcd9d9fa75..c87f2c1f80db 100644 --- a/services/core/java/com/android/server/media/quality/MediaQualityService.java +++ b/services/core/java/com/android/server/media/quality/MediaQualityService.java @@ -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()); + } } }); } @@ -1946,4 +1974,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); + } } |