diff options
| -rw-r--r-- | core/api/current.txt | 39 | ||||
| -rw-r--r-- | core/api/system-current.txt | 10 | ||||
| -rw-r--r-- | media/java/android/media/quality/MediaQualityContract.java | 4 | ||||
| -rw-r--r-- | media/java/android/media/quality/MediaQualityManager.java | 1 | ||||
| -rw-r--r-- | media/java/android/media/quality/PictureProfile.java | 54 | ||||
| -rw-r--r-- | services/core/java/com/android/server/media/quality/MediaQualityService.java | 56 |
6 files changed, 105 insertions, 59 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index cbc35299fff3..ddaa9c6cba1c 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -27055,6 +27055,45 @@ package android.media.projection { } +package android.media.quality { + + @FlaggedApi("android.media.tv.flags.media_quality_fw") public class MediaQualityContract { + } + + public static final class MediaQualityContract.PictureQuality { + field public static final String PARAMETER_BRIGHTNESS = "brightness"; + field public static final String PARAMETER_CONTRAST = "contrast"; + field public static final String PARAMETER_SATURATION = "saturation"; + field public static final String PARAMETER_SHARPNESS = "sharpness"; + } + + @FlaggedApi("android.media.tv.flags.media_quality_fw") public final class MediaQualityManager { + method @NonNull public java.util.List<android.media.quality.PictureProfile> getAvailablePictureProfiles(); + } + + @FlaggedApi("android.media.tv.flags.media_quality_fw") public final class PictureProfile implements android.os.Parcelable { + method public int describeContents(); + method @Nullable public String getInputId(); + method @NonNull public String getName(); + method @Nullable public String getPackageName(); + method @NonNull public android.os.PersistableBundle getParameters(); + method @Nullable public String getProfileId(); + method public int getProfileType(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator<android.media.quality.PictureProfile> CREATOR; + field public static final int TYPE_APPLICATION = 2; // 0x2 + field public static final int TYPE_SYSTEM = 1; // 0x1 + } + + public static final class PictureProfile.Builder { + ctor public PictureProfile.Builder(@NonNull String); + ctor public PictureProfile.Builder(@NonNull android.media.quality.PictureProfile); + method @NonNull public android.media.quality.PictureProfile build(); + method @NonNull public android.media.quality.PictureProfile.Builder setParameters(@NonNull android.os.PersistableBundle); + } + +} + package android.media.session { public final class MediaController { diff --git a/core/api/system-current.txt b/core/api/system-current.txt index d2d9e8586736..a2563649b232 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -8111,6 +8111,16 @@ package android.media.musicrecognition { } +package android.media.quality { + + public static final class PictureProfile.Builder { + method @NonNull public android.media.quality.PictureProfile.Builder setInputId(@NonNull String); + method @NonNull public android.media.quality.PictureProfile.Builder setPackageName(@NonNull String); + method @NonNull public android.media.quality.PictureProfile.Builder setProfileType(int); + } + +} + package android.media.session { public final class MediaSessionManager { diff --git a/media/java/android/media/quality/MediaQualityContract.java b/media/java/android/media/quality/MediaQualityContract.java index f07ef873a0af..5fec86a81a53 100644 --- a/media/java/android/media/quality/MediaQualityContract.java +++ b/media/java/android/media/quality/MediaQualityContract.java @@ -23,7 +23,6 @@ import android.media.tv.flags.Flags; /** * The contract between the media quality service and applications. Contains definitions for the * commonly used parameter names. - * @hide */ @FlaggedApi(Flags.FLAG_MEDIA_QUALITY_FW) public class MediaQualityContract { @@ -42,9 +41,8 @@ public class MediaQualityContract { /** * Parameters picture quality. - * @hide */ - public static final class PictureQuality implements BaseParameters { + public static final class PictureQuality { /** * The brightness. * diff --git a/media/java/android/media/quality/MediaQualityManager.java b/media/java/android/media/quality/MediaQualityManager.java index dcf497122053..fc2ce6c30e31 100644 --- a/media/java/android/media/quality/MediaQualityManager.java +++ b/media/java/android/media/quality/MediaQualityManager.java @@ -37,7 +37,6 @@ import java.util.concurrent.Executor; /** * Central system API to the overall media quality, which arbitrates interaction between * applications and media quality service. - * @hide */ @FlaggedApi(Flags.FLAG_MEDIA_QUALITY_FW) @SystemService(Context.MEDIA_QUALITY_SERVICE) diff --git a/media/java/android/media/quality/PictureProfile.java b/media/java/android/media/quality/PictureProfile.java index 2be47dd87ef2..faea77f3c41d 100644 --- a/media/java/android/media/quality/PictureProfile.java +++ b/media/java/android/media/quality/PictureProfile.java @@ -18,11 +18,12 @@ package android.media.quality; import android.annotation.FlaggedApi; import android.annotation.IntDef; +import android.annotation.SystemApi; import android.media.tv.TvInputInfo; import android.media.tv.flags.Flags; -import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; +import android.os.PersistableBundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -33,7 +34,6 @@ import java.lang.annotation.RetentionPolicy; /** * Profile for picture quality. - * @hide */ @FlaggedApi(Flags.FLAG_MEDIA_QUALITY_FW) public final class PictureProfile implements Parcelable { @@ -47,7 +47,7 @@ public final class PictureProfile implements Parcelable { @NonNull private final String mPackageName; @NonNull - private final Bundle mParams; + private final PersistableBundle mParams; /** @hide */ @Retention(RetentionPolicy.SOURCE) @@ -59,14 +59,14 @@ public final class PictureProfile implements Parcelable { /** * System profile type. * - * <p>A profile of system type is managed by the system, and readable to the package define in + * <p>A profile of system type is managed by the system, and readable to the package returned by * {@link #getPackageName()}. */ public static final int TYPE_SYSTEM = 1; /** * Application profile type. * - * <p>A profile of application type is managed by the package define in + * <p>A profile of application type is managed by the package returned by * {@link #getPackageName()}. */ public static final int TYPE_APPLICATION = 2; @@ -125,7 +125,7 @@ public final class PictureProfile implements Parcelable { mName = in.readString(); mInputId = in.readString(); mPackageName = in.readString(); - mParams = in.readBundle(); + mParams = in.readPersistableBundle(); } @Override @@ -135,7 +135,7 @@ public final class PictureProfile implements Parcelable { dest.writeString(mName); dest.writeString(mInputId); dest.writeString(mPackageName); - dest.writeBundle(mParams); + dest.writePersistableBundle(mParams); } @Override @@ -168,7 +168,7 @@ public final class PictureProfile implements Parcelable { @NonNull String name, @Nullable String inputId, @NonNull String packageName, - @NonNull Bundle params) { + @NonNull PersistableBundle params) { this.mId = id; this.mType = type; this.mName = name; @@ -251,13 +251,12 @@ public final class PictureProfile implements Parcelable { * {@link MediaQualityContract.PictureQuality}. */ @NonNull - public Bundle getParameters() { - return new Bundle(mParams); + public PersistableBundle getParameters() { + return new PersistableBundle(mParams); } /** * A builder for {@link PictureProfile}. - * @hide */ public static final class Builder { @Nullable @@ -270,7 +269,7 @@ public final class PictureProfile implements Parcelable { @NonNull private String mPackageName; @NonNull - private Bundle mParams; + private PersistableBundle mParams; /** * Creates a new Builder. @@ -291,27 +290,26 @@ public final class PictureProfile implements Parcelable { mParams = p.getParameters(); } - /* @hide using by MediaQualityService */ - /** - * Only used by system to assign the ID. + * Sets profile type. + * * @hide */ + @SystemApi + @RequiresPermission(android.Manifest.permission.MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE) @NonNull - public Builder setProfileId(@Nullable String id) { - mId = id; + public Builder setProfileType(@ProfileType int value) { + mType = value; return this; } /** - * Sets profile type. - * - * @hide @SystemApi + * Only used by system to assign the ID. + * @hide */ - @RequiresPermission(android.Manifest.permission.MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE) @NonNull - public Builder setProfileType(@ProfileType int value) { - mType = value; + public Builder setProfileId(@Nullable String id) { + mId = id; return this; } @@ -320,8 +318,9 @@ public final class PictureProfile implements Parcelable { * * @see PictureProfile#getInputId() * - * @hide @SystemApi + * @hide */ + @SystemApi @RequiresPermission(android.Manifest.permission.MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE) @NonNull public Builder setInputId(@NonNull String value) { @@ -334,8 +333,9 @@ public final class PictureProfile implements Parcelable { * * @see PictureProfile#getPackageName() * - * @hide @SystemApi + * @hide */ + @SystemApi @RequiresPermission(android.Manifest.permission.MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE) @NonNull public Builder setPackageName(@NonNull String value) { @@ -349,8 +349,8 @@ public final class PictureProfile implements Parcelable { * @see PictureProfile#getParameters() */ @NonNull - public Builder setParameters(@NonNull Bundle params) { - mParams = new Bundle(params); + public Builder setParameters(@NonNull PersistableBundle params) { + mParams = new PersistableBundle(params); return this; } 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 1f8a2007a9ff..00bab8af44f3 100644 --- a/services/core/java/com/android/server/media/quality/MediaQualityService.java +++ b/services/core/java/com/android/server/media/quality/MediaQualityService.java @@ -25,11 +25,11 @@ import android.media.quality.IAmbientBacklightCallback; import android.media.quality.IMediaQualityManager; import android.media.quality.IPictureProfileCallback; import android.media.quality.ISoundProfileCallback; -import android.media.quality.MediaQualityContract.PictureQuality; +import android.media.quality.MediaQualityContract; import android.media.quality.ParamCapability; import android.media.quality.PictureProfile; import android.media.quality.SoundProfile; -import android.os.Bundle; +import android.os.PersistableBundle; import android.util.Log; import com.android.server.SystemService; @@ -74,10 +74,10 @@ public class MediaQualityService extends SystemService { SQLiteDatabase db = mMediaQualityDbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); - values.put(PictureQuality.PARAMETER_TYPE, pp.getProfileType()); - values.put(PictureQuality.PARAMETER_NAME, pp.getName()); - values.put(PictureQuality.PARAMETER_PACKAGE, pp.getPackageName()); - values.put(PictureQuality.PARAMETER_INPUT_ID, pp.getInputId()); + values.put(MediaQualityContract.BaseParameters.PARAMETER_TYPE, pp.getProfileType()); + values.put(MediaQualityContract.BaseParameters.PARAMETER_NAME, pp.getName()); + values.put(MediaQualityContract.BaseParameters.PARAMETER_PACKAGE, pp.getPackageName()); + values.put(MediaQualityContract.BaseParameters.PARAMETER_INPUT_ID, pp.getInputId()); values.put(mMediaQualityDbHelper.SETTINGS, bundleToJson(pp.getParameters())); // id is auto-generated by SQLite upon successful insertion of row @@ -98,8 +98,8 @@ public class MediaQualityService extends SystemService { public PictureProfile getPictureProfile(int type, String name) { SQLiteDatabase db = mMediaQualityDbHelper.getReadableDatabase(); - String selection = PictureQuality.PARAMETER_TYPE + " = ? AND " - + PictureQuality.PARAMETER_NAME + " = ?"; + String selection = MediaQualityContract.BaseParameters.PARAMETER_TYPE + " = ? AND " + + MediaQualityContract.BaseParameters.PARAMETER_NAME + " = ?"; String[] selectionArguments = {Integer.toString(type), name}; try ( @@ -127,7 +127,7 @@ public class MediaQualityService extends SystemService { } } - private String bundleToJson(Bundle bundle) { + private String bundleToJson(PersistableBundle bundle) { JSONObject jsonObject = new JSONObject(); if (bundle == null) { return jsonObject.toString(); @@ -142,9 +142,9 @@ public class MediaQualityService extends SystemService { return jsonObject.toString(); } - private Bundle jsonToBundle(String jsonString) { + private PersistableBundle jsonToBundle(String jsonString) { JSONObject jsonObject = null; - Bundle bundle = new Bundle(); + PersistableBundle bundle = new PersistableBundle(); try { jsonObject = new JSONObject(jsonString); @@ -175,26 +175,26 @@ public class MediaQualityService extends SystemService { private String[] getAllPictureProfileColumns() { return new String[]{ - PictureQuality.PARAMETER_ID, - PictureQuality.PARAMETER_TYPE, - PictureQuality.PARAMETER_NAME, - PictureQuality.PARAMETER_INPUT_ID, - PictureQuality.PARAMETER_PACKAGE, + MediaQualityContract.BaseParameters.PARAMETER_ID, + MediaQualityContract.BaseParameters.PARAMETER_TYPE, + MediaQualityContract.BaseParameters.PARAMETER_NAME, + MediaQualityContract.BaseParameters.PARAMETER_INPUT_ID, + MediaQualityContract.BaseParameters.PARAMETER_PACKAGE, mMediaQualityDbHelper.SETTINGS }; } private PictureProfile getPictureProfileFromCursor(Cursor cursor) { - String returnId = cursor.getString( - cursor.getColumnIndexOrThrow(PictureQuality.PARAMETER_ID)); - int type = cursor.getInt( - cursor.getColumnIndexOrThrow(PictureQuality.PARAMETER_TYPE)); - String name = cursor.getString( - cursor.getColumnIndexOrThrow(PictureQuality.PARAMETER_NAME)); - String inputId = cursor.getString( - cursor.getColumnIndexOrThrow(PictureQuality.PARAMETER_INPUT_ID)); - String packageName = cursor.getString( - cursor.getColumnIndexOrThrow(PictureQuality.PARAMETER_PACKAGE)); + String returnId = cursor.getString(cursor.getColumnIndexOrThrow( + MediaQualityContract.BaseParameters.PARAMETER_ID)); + int type = cursor.getInt(cursor.getColumnIndexOrThrow( + MediaQualityContract.BaseParameters.PARAMETER_TYPE)); + String name = cursor.getString(cursor.getColumnIndexOrThrow( + MediaQualityContract.BaseParameters.PARAMETER_NAME)); + String inputId = cursor.getString(cursor.getColumnIndexOrThrow( + MediaQualityContract.BaseParameters.PARAMETER_INPUT_ID)); + String packageName = cursor.getString(cursor.getColumnIndexOrThrow( + MediaQualityContract.BaseParameters.PARAMETER_PACKAGE)); String settings = cursor.getString( cursor.getColumnIndexOrThrow(mMediaQualityDbHelper.SETTINGS)); return new PictureProfile(returnId, type, name, inputId, @@ -203,7 +203,7 @@ public class MediaQualityService extends SystemService { @Override public List<PictureProfile> getPictureProfilesByPackage(String packageName) { - String selection = PictureQuality.PARAMETER_PACKAGE + " = ?"; + String selection = MediaQualityContract.BaseParameters.PARAMETER_PACKAGE + " = ?"; String[] selectionArguments = {packageName}; return getPictureProfilesBasedOnConditions(getAllPictureProfileColumns(), selection, selectionArguments); @@ -216,7 +216,7 @@ public class MediaQualityService extends SystemService { @Override public List<String> getPictureProfilePackageNames() { - String [] column = {PictureQuality.PARAMETER_NAME}; + String [] column = {MediaQualityContract.BaseParameters.PARAMETER_NAME}; List<PictureProfile> pictureProfiles = getPictureProfilesBasedOnConditions(column, null, null); List<String> packageNames = new ArrayList<>(); |