1441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent/* 2441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * Copyright (C) 2010 The Android Open Source Project 3441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * 4441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * Licensed under the Apache License, Version 2.0 (the "License"); 5441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * you may not use this file except in compliance with the License. 6441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * You may obtain a copy of the License at 7441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * 8441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * http://www.apache.org/licenses/LICENSE-2.0 9441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * 10441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * Unless required by applicable law or agreed to in writing, software 11441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * distributed under the License is distributed on an "AS IS" BASIS, 12441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * See the License for the specific language governing permissions and 14441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * limitations under the License. 15441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent */ 16441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 17db6028508c8eb31a0de1dcdfc410ddfe6df7c5adXia Wangpackage com.android.mediaframeworktest.functional.audio; 18441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 19441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport com.android.mediaframeworktest.MediaFrameworkTest; 20441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport com.android.mediaframeworktest.MediaNames; 21db6028508c8eb31a0de1dcdfc410ddfe6df7c5adXia Wangimport com.android.mediaframeworktest.functional.EnergyProbe; 22441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.content.Context; 23441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.content.res.AssetFileDescriptor; 241a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurentimport android.media.audiofx.AudioEffect; 25441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.media.AudioManager; 261a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurentimport android.media.audiofx.Equalizer; 271a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurentimport android.media.audiofx.Visualizer; 28441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.media.MediaPlayer; 29441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 30441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.os.Looper; 31441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.test.suitebuilder.annotation.LargeTest; 32441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.test.suitebuilder.annotation.MediumTest; 33441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.test.suitebuilder.annotation.Suppress; 34441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.test.ActivityInstrumentationTestCase2; 35441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.util.Log; 36441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 37441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport java.nio.ByteOrder; 38441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport java.nio.ByteBuffer; 39441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport java.util.UUID; 40441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 41441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent/** 42441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * Junit / Instrumentation test case for the media AudioTrack api 43441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 44441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent */ 45441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentpublic class MediaEqualizerTest extends ActivityInstrumentationTestCase2<MediaFrameworkTest> { 46441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private String TAG = "MediaEqualizerTest"; 47441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private final static int MIN_NUMBER_OF_BANDS = 4; 48441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private final static int MIN_BAND_LEVEL = -1500; 49441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private final static int MAX_BAND_LEVEL = 1500; 50441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private final static int TEST_FREQUENCY_MILLIHERTZ = 1000000; 51441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private final static int MIN_NUMBER_OF_PRESETS = 4; 525e7acae2c3e4cf345e3fa7bf10e3c62f9e69e6beEric Laurent 53441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private Equalizer mEqualizer = null; 54441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private int mSession = -1; 55441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 56441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public MediaEqualizerTest() { 57441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent super("com.android.mediaframeworktest", MediaFrameworkTest.class); 58441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 59441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 60441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @Override 61441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent protected void setUp() throws Exception { 62441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent super.setUp(); 63441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 64441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 65441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @Override 66441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent protected void tearDown() throws Exception { 67441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent super.tearDown(); 68441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent releaseEqualizer(); 69441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 70441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 71441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private static void assumeTrue(String message, boolean cond) { 72441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue("(assume)"+message, cond); 73441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 74441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 75441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private void log(String testName, String message) { 76441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Log.v(TAG, "["+testName+"] "+message); 77441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 78441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 79441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private void loge(String testName, String message) { 80441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Log.e(TAG, "["+testName+"] "+message); 81441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 82441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 83441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //----------------------------------------------------------------- 84441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // EQUALIZER TESTS: 85441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //---------------------------------- 86441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 87441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 88441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //----------------------------------------------------------------- 89441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // 0 - constructor 90441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //---------------------------------- 91441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 92441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 0.0: test constructor and release 93441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 94441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test0_0ConstructorAndRelease() throws Exception { 95441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 96441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test1_0ConstructorAndRelease()"; 97441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Equalizer eq = null; 98441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 99441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent eq = new Equalizer(0, 0); 100441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create Equalizer", eq); 101441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 102441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg +": invalid effect ID", (eq.getId() != 0)); 103441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 104441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Equalizer not initialized"); 105441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 106441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 107441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 108441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Equalizer not found"); 109441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 110441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 111441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 112441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (eq != null) { 113441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent eq.release(); 114441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 115441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 116441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 117441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 118441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 119441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 120441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //----------------------------------------------------------------- 121441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // 1 - get/set parameters 122441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //---------------------------------- 123441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 124441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 1.0: test setBandLevel() and getBandLevel() 125441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 126441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test1_0BandLevel() throws Exception { 127441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 128441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test1_0BandLevel()"; 129441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent getEqualizer(0); 130441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 131441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent short numBands = mEqualizer.getNumberOfBands(); 132441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg + ": not enough bands", numBands >= MIN_NUMBER_OF_BANDS); 133441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 134441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent short[] levelRange = mEqualizer.getBandLevelRange(); 135441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg + ": min level too high", levelRange[0] <= MIN_BAND_LEVEL); 136441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg + ": max level too low", levelRange[1] >= MAX_BAND_LEVEL); 137441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 138441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEqualizer.setBandLevel((short)0, levelRange[1]); 139441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent short level = mEqualizer.getBandLevel((short)0); 140441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // 10% margin on actual level compared to requested level 141441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg + ": setBandLevel failed", 142441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent ((float)level > (float)levelRange[1] * 0.9f) && 143441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent ((float)level < (float)levelRange[1] * 1.1f)); 144441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 145441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 146441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 147441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 148441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 149441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": get parameter() rejected"); 150441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "get parameter() rejected"); 151441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 152441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("get parameter() called in wrong state"); 153441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "get parameter() called in wrong state"); 154441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 155441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent releaseEqualizer(); 156441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 157441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 158441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 159441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 160441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 1.1: test band frequency 161441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 162441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test1_1BandFrequency() throws Exception { 163441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 164441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test1_1BandFrequency()"; 165441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent getEqualizer(0); 166441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 167441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent short band = mEqualizer.getBand(TEST_FREQUENCY_MILLIHERTZ); 168441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg + ": getBand failed", band >= 0); 169441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent int[] freqRange = mEqualizer.getBandFreqRange(band); 170441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg + ": getBandFreqRange failed", 171441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent (freqRange[0] <= TEST_FREQUENCY_MILLIHERTZ) && 172441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent (freqRange[1] >= TEST_FREQUENCY_MILLIHERTZ)); 173441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent int freq = mEqualizer.getCenterFreq(band); 174441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg + ": getCenterFreq failed", 175441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent (freqRange[0] <= freq) && (freqRange[1] >= freq)); 176441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 177441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 178441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 179441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 180441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 181441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": get parameter() rejected"); 182441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "get parameter() rejected"); 183441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 184441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("get parameter() called in wrong state"); 185441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "get parameter() called in wrong state"); 186441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 187441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent releaseEqualizer(); 188441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 189441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 190441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 191441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 192441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 1.2: test presets 193441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 194441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test1_2Presets() throws Exception { 195441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 196441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test1_2Presets()"; 197441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent getEqualizer(0); 198441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 199441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent short numPresets = mEqualizer.getNumberOfPresets(); 200441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg + ": getNumberOfPresets failed", numPresets >= MIN_NUMBER_OF_PRESETS); 201441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEqualizer.usePreset((short)(numPresets - 1)); 202441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent short preset = mEqualizer.getCurrentPreset(); 203441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertEquals(msg + ": usePreset failed", preset, (short)(numPresets - 1)); 204441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String name = mEqualizer.getPresetName(preset); 205441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": getPresetName failed", name); 206441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 207441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 208441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 209441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 210441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 211441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": get parameter() rejected"); 212441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "get parameter() rejected"); 213441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 214441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("get parameter() called in wrong state"); 215441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "get parameter() called in wrong state"); 216441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 217441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent releaseEqualizer(); 218441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 219441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 220441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 221441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 222441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 1.3: test properties 223441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 224441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test1_3Properties() throws Exception { 225441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 226441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test1_3Properties()"; 227441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent getEqualizer(0); 228441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 229441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Equalizer.Settings settings = mEqualizer.getProperties(); 230441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String str = settings.toString(); 231441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent settings = new Equalizer.Settings(str); 232441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEqualizer.setProperties(settings); 233441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 234441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 235441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 236441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 237441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 238441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": get parameter() rejected"); 239441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "get parameter() rejected"); 240441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 241441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("get parameter() called in wrong state"); 242441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "get parameter() called in wrong state"); 243441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 244441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent releaseEqualizer(); 245441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 246441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 247441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 248441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 249441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //----------------------------------------------------------------- 250441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // private methods 251441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //---------------------------------- 252441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 253441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private void getEqualizer(int session) { 254441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (mEqualizer == null || session != mSession) { 255441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (session != mSession && mEqualizer != null) { 256441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEqualizer.release(); 257441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEqualizer = null; 258441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 259441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 260441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEqualizer = new Equalizer(0, session); 261441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mSession = session; 262441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 263441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Log.e(TAG, "getEqualizer() Equalizer not found exception: "+e); 264441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 265441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Log.e(TAG, "getEqualizer() Effect library not loaded exception: "+e); 266441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 267441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 268441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull("could not create mEqualizer", mEqualizer); 269441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 270441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 271441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private void releaseEqualizer() { 272441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (mEqualizer != null) { 273441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEqualizer.release(); 274441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEqualizer = null; 275441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 276441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 277441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 278441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent} 279