Skip to content

Commit 125c32e

Browse files
jmtriviAndroid (Google) Code Review
authored andcommitted
Merge "Add functional tests for Visualizer volume scaling mode"
2 parents f37d87b + 997592b commit 125c32e

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed

media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/functional/audio/MediaVisualizerTest.java

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,37 @@ public void test1_1CaptureSize() throws Exception {
188188
assertTrue(msg, result);
189189
}
190190

191+
//Test case 1.2: check scaling mode
192+
@LargeTest
193+
public void test1_2ScalingMode() throws Exception {
194+
boolean result = false;
195+
String msg = "test1_2ScalingMode()";
196+
getVisualizer(0);
197+
try {
198+
int res = mVisualizer.setScalingMode(Visualizer.SCALING_MODE_AS_PLAYED);
199+
assertEquals(msg + ": setting SCALING_MODE_AS_PLAYED failed",
200+
res, Visualizer.SUCCESS);
201+
int mode = mVisualizer.getScalingMode();
202+
assertEquals(msg + ": setting SCALING_MODE_AS_PLAYED didn't stick",
203+
mode, Visualizer.SCALING_MODE_AS_PLAYED);
204+
205+
res = mVisualizer.setScalingMode(Visualizer.SCALING_MODE_NORMALIZED);
206+
assertEquals(msg + ": setting SCALING_MODE_NORMALIZED failed",
207+
res, Visualizer.SUCCESS);
208+
mode = mVisualizer.getScalingMode();
209+
assertEquals(msg + ": setting SCALING_MODE_NORMALIZED didn't stick",
210+
mode, Visualizer.SCALING_MODE_NORMALIZED);
211+
212+
result = true;
213+
} catch (IllegalStateException e) {
214+
msg = msg.concat("IllegalStateException");
215+
loge(msg, "set/get parameter() called in wrong state: " + e);
216+
} finally {
217+
releaseVisualizer();
218+
}
219+
assertTrue(msg, result);
220+
}
221+
191222
//-----------------------------------------------------------------
192223
// 2 - check capture
193224
//----------------------------------
@@ -403,6 +434,91 @@ public void test2_1ListenerCapture() throws Exception {
403434
assertTrue(msg, result);
404435
}
405436

437+
//Test case 2.2: test capture in polling mode with volume scaling
438+
@LargeTest
439+
public void test2_2PollingCaptureVolumeScaling() throws Exception {
440+
// test that when playing a sound, the energy measured with Visualizer in
441+
// SCALING_MODE_AS_PLAYED mode decreases when lowering the volume
442+
boolean result = false;
443+
String msg = "test2_2PollingCaptureVolumeScaling()";
444+
AudioEffect vc = null;
445+
MediaPlayer mp = null;
446+
AudioManager am = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
447+
int ringerMode = am.getRingerMode();
448+
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
449+
final int volMax = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
450+
am.setStreamVolume(AudioManager.STREAM_MUSIC, volMax, 0);
451+
452+
try {
453+
// test setup not related to tested functionality:
454+
// creating a volume controller on output mix ensures that ro.audio.silent mutes
455+
// audio after the effects and not before
456+
vc = new AudioEffect(
457+
AudioEffect.EFFECT_TYPE_NULL,
458+
VOLUME_EFFECT_UUID,
459+
0,
460+
0);
461+
vc.setEnabled(true);
462+
463+
mp = new MediaPlayer();
464+
mp.setDataSource(MediaNames.SINE_200_1000);
465+
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
466+
getVisualizer(mp.getAudioSessionId());
467+
468+
// verify we successfully set the Visualizer in SCALING_MODE_AS_PLAYED mode
469+
mVisualizer.setScalingMode(Visualizer.SCALING_MODE_AS_PLAYED);
470+
assertTrue(msg + " get volume scaling doesn't return SCALING_MODE_AS_PLAYED",
471+
mVisualizer.getScalingMode() == Visualizer.SCALING_MODE_AS_PLAYED);
472+
mVisualizer.setEnabled(true);
473+
mp.prepare();
474+
mp.start();
475+
Thread.sleep(500);
476+
477+
// check capture on sound with music volume at max
478+
byte[] data = new byte[mVisualizer.getCaptureSize()];
479+
mVisualizer.getWaveForm(data);
480+
int energyAtVolMax = computeEnergy(data, true);
481+
assertTrue(msg +": getWaveForm reads insufficient level",
482+
energyAtVolMax > 0);
483+
log(msg, " engergy at max volume = "+energyAtVolMax);
484+
485+
// check capture on sound with music volume lowered from max
486+
am.setStreamVolume(AudioManager.STREAM_MUSIC, (volMax * 2) / 3, 0);
487+
Thread.sleep(500);
488+
mVisualizer.getWaveForm(data);
489+
int energyAtLowerVol = computeEnergy(data, true);
490+
assertTrue(msg +": getWaveForm at lower volume reads insufficient level",
491+
energyAtLowerVol > 0);
492+
log(msg, "energy at lower volume = "+energyAtLowerVol);
493+
assertTrue(msg +": getWaveForm didn't report lower energy when volume decreases",
494+
energyAtVolMax > energyAtLowerVol);
495+
496+
result = true;
497+
} catch (IllegalArgumentException e) {
498+
msg = msg.concat(": IllegalArgumentException");
499+
loge(msg, " hit exception " + e);
500+
} catch (UnsupportedOperationException e) {
501+
msg = msg.concat(": UnsupportedOperationException");
502+
loge(msg, " hit exception " + e);
503+
} catch (IllegalStateException e) {
504+
msg = msg.concat("IllegalStateException");
505+
loge(msg, " hit exception " + e);
506+
} catch (InterruptedException e) {
507+
loge(msg, " sleep() interrupted");
508+
}
509+
finally {
510+
releaseVisualizer();
511+
if (mp != null) {
512+
mp.release();
513+
}
514+
if (vc != null) {
515+
vc.release();
516+
}
517+
am.setRingerMode(ringerMode);
518+
}
519+
assertTrue(msg, result);
520+
}
521+
406522
//-----------------------------------------------------------------
407523
// private methods
408524
//----------------------------------

0 commit comments

Comments
 (0)