Fix for VisualizerTest running in silent mode
Added suggested volume controller to the mix to avoid problems
when the property ro.audio.silent is 1.
bug: 18610264
Change-Id: Ife3b1085173ad9b9c4ff3e9c3d044905d556f272
diff --git a/tests/tests/media/src/android/media/cts/PostProcTestBase.java b/tests/tests/media/src/android/media/cts/PostProcTestBase.java
index c31693e..ef87662 100644
--- a/tests/tests/media/src/android/media/cts/PostProcTestBase.java
+++ b/tests/tests/media/src/android/media/cts/PostProcTestBase.java
@@ -31,6 +31,8 @@
protected Looper mLooper = null;
protected final Object mLock = new Object();
protected int mChangedParameter = -1;
+ protected final static String BUNDLE_VOLUME_EFFECT_UUID =
+ "119341a0-8469-11df-81f9-0002a5d5c51b";
protected boolean hasAudioOutput() {
return getContext().getPackageManager().hasSystemFeature(
diff --git a/tests/tests/media/src/android/media/cts/VisualizerTest.java b/tests/tests/media/src/android/media/cts/VisualizerTest.java
index 73e48f2..8d9b3b8 100644
--- a/tests/tests/media/src/android/media/cts/VisualizerTest.java
+++ b/tests/tests/media/src/android/media/cts/VisualizerTest.java
@@ -27,6 +27,7 @@
import android.media.audiofx.Visualizer.MeasurementPeakRms;
import android.os.Looper;
import android.test.AndroidTestCase;
+import java.util.UUID;
import android.util.Log;
public class VisualizerTest extends PostProcTestBase {
@@ -281,6 +282,7 @@
//Test case 4.1: test measurement of peak / RMS
public void test4_1MeasurePeakRms() throws Exception {
+ AudioEffect vc = null;
try {
// this test will play a 1kHz sine wave with peaks at -40dB
MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.sine1khzm40db);
@@ -289,6 +291,15 @@
final int MAX_MEASUREMENT_ERROR_MB = 2000;
assertNotNull("null MediaPlayer", mp);
+ // creating a volume controller on output mix ensures that ro.audio.silent mutes
+ // audio after the effects and not before
+ vc = new AudioEffect(
+ AudioEffect.EFFECT_TYPE_NULL,
+ UUID.fromString(BUNDLE_VOLUME_EFFECT_UUID),
+ 0,
+ mp.getAudioSessionId());
+ vc.setEnabled(true);
+
AudioManager am = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
assertNotNull("null AudioManager", am);
int originalVolume = am.getStreamVolume(AudioManager.STREAM_MUSIC);
@@ -333,12 +344,15 @@
} catch (InterruptedException e) {
fail("sleep() interrupted");
} finally {
+ if (vc != null)
+ vc.release();
releaseVisualizer();
}
}
//Test case 4.2: test measurement of peak / RMS in Long MP3
public void test4_2MeasurePeakRmsLongMP3() throws Exception {
+ AudioEffect vc = null;
try {
// this test will play a 1kHz sine wave with peaks at -40dB
MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.sine1khzs40dblong);
@@ -347,6 +361,15 @@
final int MAX_MEASUREMENT_ERROR_MB = 2000;
assertNotNull("null MediaPlayer", mp);
+ // creating a volume controller on output mix ensures that ro.audio.silent mutes
+ // audio after the effects and not before
+ vc = new AudioEffect(
+ AudioEffect.EFFECT_TYPE_NULL,
+ UUID.fromString(BUNDLE_VOLUME_EFFECT_UUID),
+ 0,
+ mp.getAudioSessionId());
+ vc.setEnabled(true);
+
AudioManager am = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
assertNotNull("null AudioManager", am);
int originalVolume = am.getStreamVolume(AudioManager.STREAM_MUSIC);
@@ -390,6 +413,8 @@
} catch (InterruptedException e) {
fail("sleep() interrupted");
} finally {
+ if (vc != null)
+ vc.release();
releaseVisualizer();
}
}