From 4c86efa1e3fd8f467f4053b8027a9db12eee584c Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Thu, 20 Apr 2017 18:13:34 -0700 Subject: [PATCH] VolumeShaper: API change for duration Time in milliseconds is a long. Update API to not specify the unit in the setter/getter for the VolumeShaper duration. Test: cts-tradefed run cts CtsMediaTestCases -t android.media.cts.VolumeShaperTest Change-Id: If5f95cc43418d831105cbef2c43b6e9cfcf9082b --- api/current.txt | 4 +-- api/system-current.txt | 4 +-- api/test-current.txt | 4 +-- media/java/android/media/VolumeShaper.java | 25 ++++++++++--------- .../server/audio/PlaybackActivityMonitor.java | 2 +- 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/api/current.txt b/api/current.txt index 30db015d863b2..a3006b8ecf9ff 100644 --- a/api/current.txt +++ b/api/current.txt @@ -23642,7 +23642,7 @@ package android.media { public static final class VolumeShaper.Configuration implements android.os.Parcelable { method public int describeContents(); - method public double getDurationMillis(); + method public long getDuration(); method public int getInterpolatorType(); method public static int getMaximumCurvePoints(); method public float[] getTimes(); @@ -23668,7 +23668,7 @@ package android.media { method public android.media.VolumeShaper.Configuration.Builder scaleToEndVolume(float); method public android.media.VolumeShaper.Configuration.Builder scaleToStartVolume(float); method public android.media.VolumeShaper.Configuration.Builder setCurve(float[], float[]); - method public android.media.VolumeShaper.Configuration.Builder setDurationMillis(double); + method public android.media.VolumeShaper.Configuration.Builder setDuration(long); method public android.media.VolumeShaper.Configuration.Builder setInterpolatorType(int); } diff --git a/api/system-current.txt b/api/system-current.txt index 9103e0bf93d9c..8d8c2273fabbb 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -25489,7 +25489,7 @@ package android.media { public static final class VolumeShaper.Configuration implements android.os.Parcelable { method public int describeContents(); - method public double getDurationMillis(); + method public long getDuration(); method public int getInterpolatorType(); method public static int getMaximumCurvePoints(); method public float[] getTimes(); @@ -25515,7 +25515,7 @@ package android.media { method public android.media.VolumeShaper.Configuration.Builder scaleToEndVolume(float); method public android.media.VolumeShaper.Configuration.Builder scaleToStartVolume(float); method public android.media.VolumeShaper.Configuration.Builder setCurve(float[], float[]); - method public android.media.VolumeShaper.Configuration.Builder setDurationMillis(double); + method public android.media.VolumeShaper.Configuration.Builder setDuration(long); method public android.media.VolumeShaper.Configuration.Builder setInterpolatorType(int); } diff --git a/api/test-current.txt b/api/test-current.txt index 3957532d9f717..bc43cd6d90315 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -23749,7 +23749,7 @@ package android.media { public static final class VolumeShaper.Configuration implements android.os.Parcelable { method public int describeContents(); - method public double getDurationMillis(); + method public long getDuration(); method public int getInterpolatorType(); method public static int getMaximumCurvePoints(); method public float[] getTimes(); @@ -23775,7 +23775,7 @@ package android.media { method public android.media.VolumeShaper.Configuration.Builder scaleToEndVolume(float); method public android.media.VolumeShaper.Configuration.Builder scaleToStartVolume(float); method public android.media.VolumeShaper.Configuration.Builder setCurve(float[], float[]); - method public android.media.VolumeShaper.Configuration.Builder setDurationMillis(double); + method public android.media.VolumeShaper.Configuration.Builder setDuration(long); method public android.media.VolumeShaper.Configuration.Builder setInterpolatorType(int); } diff --git a/media/java/android/media/VolumeShaper.java b/media/java/android/media/VolumeShaper.java index 1dda6a4c77f77..8f4721f94e72a 100644 --- a/media/java/android/media/VolumeShaper.java +++ b/media/java/android/media/VolumeShaper.java @@ -301,7 +301,7 @@ public final class VolumeShaper implements AutoCloseable { .setInterpolatorType(INTERPOLATOR_TYPE_LINEAR) .setCurve(new float[] {0.f, 1.f} /* times */, new float[] {0.f, 1.f} /* volumes */) - .setDurationMillis(1000.) + .setDuration(1000) .build(); /** @@ -314,7 +314,7 @@ public final class VolumeShaper implements AutoCloseable { .setInterpolatorType(INTERPOLATOR_TYPE_CUBIC) .setCurve(new float[] {0.f, 1.f} /* times */, new float[] {0.f, 1.f} /* volumes */) - .setDurationMillis(1000.) + .setDuration(1000) .build(); /** @@ -348,12 +348,12 @@ public final class VolumeShaper implements AutoCloseable { SINE_RAMP = new VolumeShaper.Configuration.Builder() .setInterpolatorType(INTERPOLATOR_TYPE_CUBIC) .setCurve(times, sines) - .setDurationMillis(1000.) + .setDuration(1000) .build(); SCURVE_RAMP = new VolumeShaper.Configuration.Builder() .setInterpolatorType(INTERPOLATOR_TYPE_CUBIC) .setCurve(times, scurve) - .setDurationMillis(1000.) + .setDuration(1000) .build(); } @@ -569,8 +569,9 @@ public final class VolumeShaper implements AutoCloseable { /** * Returns the duration of the volume shape in milliseconds. */ - public double getDurationMillis() { - return mDurationMs; + public long getDuration() { + // casting is safe here as the duration was set as a long in the Builder + return (long) mDurationMs; } /** @@ -700,7 +701,7 @@ public final class VolumeShaper implements AutoCloseable { * .setInterpolatorType(VolumeShaper.Configuration.INTERPOLATOR_TYPE_LINEAR) * .setCurve(new float[] { 0.f, 1.f }, // times * new float[] { 0.f, 1.f }) // volumes - * .setDurationMillis(1000.) + * .setDuration(1000) * .build(); * *

@@ -731,7 +732,7 @@ public final class VolumeShaper implements AutoCloseable { mId = configuration.getId(); mOptionFlags = configuration.getAllOptionFlags(); mInterpolatorType = configuration.getInterpolatorType(); - mDurationMs = configuration.getDurationMillis(); + mDurationMs = configuration.getDuration(); mTimes = configuration.getTimes().clone(); mVolumes = configuration.getVolumes().clone(); } @@ -810,12 +811,12 @@ public final class VolumeShaper implements AutoCloseable { * @throws IllegalArgumentException if {@code durationMillis} * is not strictly positive. */ - public @NonNull Builder setDurationMillis(double durationMillis) { - if (durationMillis <= 0.) { + public @NonNull Builder setDuration(long durationMillis) { + if (durationMillis <= 0) { throw new IllegalArgumentException( "duration: " + durationMillis + " not positive"); } - mDurationMs = durationMillis; + mDurationMs = (double) durationMillis; return this; } @@ -833,7 +834,7 @@ public final class VolumeShaper implements AutoCloseable { * time (x) coordinates should be monotonically increasing, from 0.f to 1.f; * volume (y) coordinates must be within 0.f to 1.f. *

- * The time scale is set by {@link #setDurationMillis}. + * The time scale is set by {@link #setDuration}. *

* @param times an array of float values representing * the time line of the volume curve. diff --git a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java index 9eda9294031e8..66a6eddc19a44 100644 --- a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java +++ b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java @@ -57,7 +57,7 @@ public final class PlaybackActivityMonitor .setCurve(new float[] { 0.f, 1.f } /* times */, new float[] { 1.f, 0.2f } /* volumes */) .setOptionFlags(VolumeShaper.Configuration.OPTION_FLAG_CLOCK_TIME) - .setDurationMillis(MediaFocusControl.getFocusRampTimeMs( + .setDuration(MediaFocusControl.getFocusRampTimeMs( AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK, new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION) .build()))