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; 21441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.content.res.AssetFileDescriptor; 221a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurentimport android.media.audiofx.AudioEffect; 23441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.media.AudioFormat; 24441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.media.AudioManager; 25441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.media.AudioTrack; 2609f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurentimport android.media.AudioRecord; 271a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurentimport android.media.audiofx.EnvironmentalReverb; 281a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurentimport android.media.audiofx.Equalizer; 29441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.media.MediaPlayer; 3009f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurentimport android.media.MediaRecorder; 31441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 32441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.os.Looper; 33441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.test.suitebuilder.annotation.LargeTest; 34441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.test.suitebuilder.annotation.MediumTest; 35441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.test.suitebuilder.annotation.Suppress; 36441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.test.ActivityInstrumentationTestCase2; 37441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport android.util.Log; 38441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 39441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport java.nio.ByteOrder; 40441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport java.nio.ByteBuffer; 41441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentimport java.util.UUID; 42441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 43441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent/** 44441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * Junit / Instrumentation test case for the media AudioTrack api 45441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 46441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent */ 47441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurentpublic class MediaAudioEffectTest extends ActivityInstrumentationTestCase2<MediaFrameworkTest> { 48441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private String TAG = "MediaAudioEffectTest"; 49441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 50441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private AudioEffect mEffect = null; 51441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private boolean mHasControl = false; 52441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private boolean mIsEnabled = false; 53441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private int mParameterChanged = -1; 54441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private MediaPlayer mMediaPlayer = null; 55441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private boolean mInitialized = false; 56441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private Looper mLooper = null; 57441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private int mError = 0; 58441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private final Object lock = new Object(); 5909f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent private final static int SAMPLING_RATE = 44100; 60441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 61441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public MediaAudioEffectTest() { 62441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent super("com.android.mediaframeworktest", MediaFrameworkTest.class); 63441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 64441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 65441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @Override 66441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent protected void setUp() throws Exception { 67441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent super.setUp(); 68441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 69441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 70441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @Override 71441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent protected void tearDown() throws Exception { 72441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent super.tearDown(); 73441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 74441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 75441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private static void assumeTrue(String message, boolean cond) { 76441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue("(assume)"+message, cond); 77441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 78441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 79441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private void log(String testName, String message) { 80441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Log.v(TAG, "["+testName+"] "+message); 81441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 82441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 83441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private void loge(String testName, String message) { 84441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Log.e(TAG, "["+testName+"] "+message); 85441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 86441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 87441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //----------------------------------------------------------------- 88441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // AUDIOEFFECT TESTS: 89441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //---------------------------------- 90441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 91441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //----------------------------------------------------------------- 92441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // 0 - static methods 93441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //---------------------------------- 94441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 95441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 0.0: test queryEffects() and available effects 96441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 97441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test0_0QueryEffects() throws Exception { 98441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 99441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.Descriptor[] desc = AudioEffect.queryEffects(); 100441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 101441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue("test0_0QueryEffects: number of effects < 4: "+desc.length, (desc.length >= 4)); 102441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 103441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean hasEQ = false; 104441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean hasBassBoost = false; 105441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean hasVirtualizer = false; 106441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean hasEnvReverb = false; 107441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 108441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent for (int i = 0; i < desc.length; i++) { 1091a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurent if (desc[i].type.equals(AudioEffect.EFFECT_TYPE_EQUALIZER)) { 110441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent hasEQ = true; 1111a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurent } if (desc[i].type.equals(AudioEffect.EFFECT_TYPE_BASS_BOOST)) { 112441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent hasBassBoost = true; 1131a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurent } else if (desc[i].type.equals(AudioEffect.EFFECT_TYPE_VIRTUALIZER)) { 114441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent hasVirtualizer = true; 115441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1161a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurent else if (desc[i].type.equals(AudioEffect.EFFECT_TYPE_ENV_REVERB)) { 117441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent hasEnvReverb = true; 118441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 119441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 120441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue("test0_0QueryEffects: equalizer not found", hasEQ); 121441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue("test0_0QueryEffects: bass boost not found", hasBassBoost); 122441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue("test0_0QueryEffects: virtualizer not found", hasVirtualizer); 123441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue("test0_0QueryEffects: environmental reverb not found", hasEnvReverb); 124441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 125441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 126441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //----------------------------------------------------------------- 127441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // 1 - constructor 128441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //---------------------------------- 129441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 13009f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent private AudioRecord getAudioRecord() { 13109f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent AudioRecord ar = null; 13209f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent try { 13309f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent ar = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, 13409f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent SAMPLING_RATE, 13509f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent AudioFormat.CHANNEL_CONFIGURATION_MONO, 13609f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent AudioFormat.ENCODING_PCM_16BIT, 13709f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent AudioRecord.getMinBufferSize(SAMPLING_RATE, 13809f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent AudioFormat.CHANNEL_CONFIGURATION_MONO, 13909f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent AudioFormat.ENCODING_PCM_16BIT) * 10); 14009f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent assertNotNull("Could not create AudioRecord", ar); 14109f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent assertEquals("AudioRecord not initialized", 14209f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent AudioRecord.STATE_INITIALIZED, ar.getState()); 14309f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent } catch (IllegalArgumentException e) { 14409f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent fail("AudioRecord invalid parameter"); 14509f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent } 14609f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent return ar; 14709f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent } 14809f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent 149441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 1.0: test constructor from effect type and get effect ID 150441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 151441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test1_0ConstructorFromType() throws Exception { 152441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = true; 153441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test1_0ConstructorFromType()"; 154441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.Descriptor[] desc = AudioEffect.queryEffects(); 155441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg+": no effects found", (desc.length != 0)); 156441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 15709f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent int sessionId; 15809f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent AudioRecord ar = null; 15909f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent if (AudioEffect.EFFECT_PRE_PROCESSING.equals(desc[0].connectMode)) { 16009f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent ar = getAudioRecord(); 16109f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent sessionId = ar.getAudioSessionId(); 16209f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent } else { 16309f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent sessionId = 0; 16409f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent } 16509f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent 1661a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurent AudioEffect effect = new AudioEffect(desc[0].type, 167441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 168441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 16909f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent sessionId); 170441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 171441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 172441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg +": invalid effect ID", (effect.getId() != 0)); 173441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 174441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": AudioEffect not initialized"); 175441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = false; 176441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 177441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 17809f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent if (ar != null) { 17909f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent ar.release(); 18009f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent } 181441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 182441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 1831a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurent msg = msg.concat(": Effect not found: "+desc[0].name); 184441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = false; 185441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 186441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 187441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = false; 188441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 189441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 190441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 191441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 192441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 1.1: test constructor from effect uuid 193441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 194441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test1_1ConstructorFromUuid() throws Exception { 195441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = true; 196441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test1_1ConstructorFromUuid()"; 197441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.Descriptor[] desc = AudioEffect.queryEffects(); 198441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg+"no effects found", (desc.length != 0)); 199441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 20009f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent int sessionId; 20109f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent AudioRecord ar = null; 20209f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent if (AudioEffect.EFFECT_PRE_PROCESSING.equals(desc[0].connectMode)) { 20309f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent ar = getAudioRecord(); 20409f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent sessionId = ar.getAudioSessionId(); 20509f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent } else { 20609f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent sessionId = 0; 20709f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent } 208441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = new AudioEffect(AudioEffect.EFFECT_TYPE_NULL, 2091a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurent desc[0].uuid, 210441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 21109f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent sessionId); 212441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 213441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 21409f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent if (ar != null) { 21509f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent ar.release(); 21609f1735fadf985f321abef5fe696d0b80c6b46c7Eric Laurent } 217441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 2181a5149e5d7f2dddc8b324f7695e69fd89af73c52Eric Laurent msg = msg.concat(": Effect not found: "+desc[0].name); 219441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = false; 220441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 221441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 222441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = false; 223441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 224441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 225441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 226441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 227441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 1.2: test constructor failure from unknown type 228441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 229441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test1_2ConstructorUnknownType() throws Exception { 230441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 231441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test1_2ConstructorUnknownType()"; 232441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 233441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 234441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = new AudioEffect(UUID.randomUUID(), 235441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 236441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 237441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 238441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": could create random AudioEffect"); 239441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 240441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 241441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 242441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 243441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 244441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 245441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 246441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 247441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 248441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 249441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 250441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 1.3: test getEnabled() failure when called on released effect 251441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 252441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test1_3GetEnabledAfterRelease() throws Exception { 253441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 254441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test1_3GetEnabledAfterRelease()"; 255441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 256441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 257441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 258441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 259441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 260441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 261441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 262441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 263441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 264441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.getEnabled(); 265441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 266441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 267441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 268441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 269441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Equalizer not found"); 270441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 271441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 272441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 273441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 274441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 275441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 276441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 1.4: test contructor on mediaPlayer audio session 277441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 278441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test1_4InsertOnMediaPlayer() throws Exception { 279441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 280441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test1_4InsertOnMediaPlayer()"; 281441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 282441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 283441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent MediaPlayer mp = new MediaPlayer(); 284441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mp.setDataSource(MediaNames.SHORTMP3); 285441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 286441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 287441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 288441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 289441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mp.getAudioSessionId()); 290441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 291441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 292441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": effect.setEnabled"); 293441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.setEnabled(true); 294441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 295441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": AudioEffect not initialized"); 296441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 297441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 298441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 299441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 300441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mp.release(); 301441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 302441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Equalizer not found"); 303441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Equalizer not found"); 304441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 305441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 306441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Effect library not loaded"); 307441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (Exception e){ 308441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Could not create media player:" + e); 309441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 310441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 311441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 312441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 313441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 1.5: test auxiliary effect attachement on MediaPlayer 314441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 315441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test1_5AuxiliaryOnMediaPlayer() throws Exception { 316441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 317441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test1_5AuxiliaryOnMediaPlayer()"; 318441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 319441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 320441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent MediaPlayer mp = new MediaPlayer(); 321441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mp.setDataSource(MediaNames.SHORTMP3); 322441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 323441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = new AudioEffect(AudioEffect.EFFECT_TYPE_ENV_REVERB, 324441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 325441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 326441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 327441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 328441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mp.attachAuxEffect(effect.getId()); 329441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mp.setAuxEffectSendLevel(1.0f); 330441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 331441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 332441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mp.release(); 333441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 334441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Equalizer not found"); 335441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Equalizer not found"); 336441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 337441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 338441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Effect library not loaded"); 339441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (Exception e){ 340441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Could not create media player:" + e); 341441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 342441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 343441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 344441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 345441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 1.6: test auxiliary effect attachement failure before setDatasource 346441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 347441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test1_6AuxiliaryOnMediaPlayerFailure() throws Exception { 348441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 349441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test1_6AuxiliaryOnMediaPlayerFailure()"; 350441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 351441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 352441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent createMediaPlayerLooper(); 353441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 354441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 355441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.wait(1000); 356441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch(Exception e) { 357441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Log.e(TAG, "Looper creation: wait was interrupted."); 358441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 359441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 360441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(mInitialized); // mMediaPlayer has been initialized? 361441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mError = 0; 362441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 363441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = new AudioEffect(AudioEffect.EFFECT_TYPE_ENV_REVERB, 364441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 365441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 366441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 367441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 368441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 369441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 370441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mMediaPlayer.attachAuxEffect(effect.getId()); 371441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.wait(1000); 372441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch(Exception e) { 373441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Log.e(TAG, "Attach effect: wait was interrupted."); 374441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 375441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 376441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg + ": no error on attachAuxEffect", mError != 0); 377441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 378441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 379441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent terminateMediaPlayerLooper(); 380441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 381441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Equalizer not found"); 382441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Equalizer not found"); 383441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 384441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 385441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Effect library not loaded"); 386441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (Exception e){ 387441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Could not create media player:" + e); 388441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 389441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 390441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 391441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 392441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 393441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 1.7: test auxiliary effect attachement on AudioTrack 394441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 395441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test1_7AuxiliaryOnAudioTrack() throws Exception { 396441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 397441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test1_7AuxiliaryOnAudioTrack()"; 398441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 399441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 400441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioTrack track = new AudioTrack( 401441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioManager.STREAM_MUSIC, 402441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 44100, 403441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioFormat.CHANNEL_OUT_MONO, 404441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioFormat.ENCODING_PCM_16BIT, 405441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioTrack.getMinBufferSize(44100, 406441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioFormat.CHANNEL_OUT_MONO, 407441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioFormat.ENCODING_PCM_16BIT), 408441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioTrack.MODE_STREAM); 409441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioTrack", track); 410441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = new AudioEffect(AudioEffect.EFFECT_TYPE_ENV_REVERB, 411441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 412441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 413441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 414441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 415441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent track.attachAuxEffect(effect.getId()); 416441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent track.setAuxEffectSendLevel(1.0f); 417441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 418441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 419441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent track.release(); 420441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 421441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Equalizer not found"); 422441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Equalizer not found"); 423441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 424441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 425441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Effect library not loaded"); 426441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 427441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 428441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 429441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 430441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //----------------------------------------------------------------- 431441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // 2 - enable/ disable 432441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //---------------------------------- 433441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 434441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 435441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 2.0: test setEnabled() and getEnabled() in valid state 436441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 437441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test2_0SetEnabledGetEnabled() throws Exception { 438441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 439441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test2_0SetEnabledGetEnabled()"; 440441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 441441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 442441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 443441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 444441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 445441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 446441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 447441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 448441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.setEnabled(true); 449441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg + ": invalid state from getEnabled", effect.getEnabled()); 450441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.setEnabled(false); 451441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertFalse(msg + ": invalid state to getEnabled", effect.getEnabled()); 452441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 453441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 454441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": setEnabled() in wrong state"); 455441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 456441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 457441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 458441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 459441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Equalizer not found"); 460441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Equalizer not found"); 461441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 462441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 463441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Effect library not loaded"); 464441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 465441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 466441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 467441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 468441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 2.1: test setEnabled() throws exception after release 469441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 470441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test2_1SetEnabledAfterRelease() throws Exception { 471441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 472441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test2_1SetEnabledAfterRelease()"; 473441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 474441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 475441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 476441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 477441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 478441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 479441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 480441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 481441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 482441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.setEnabled(true); 483441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 484441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 485441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 486441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 487441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Equalizer not found"); 488441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Equalizer not found"); 489441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 490441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 491441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Effect library not loaded"); 492441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 493441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 494441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 495441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 496441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //----------------------------------------------------------------- 497441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // 3 - set parameters 498441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //---------------------------------- 499441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 500441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 3.0: test setParameter(byte[], byte[]) 501441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 502441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test3_0SetParameterByteArrayByteArray() throws Exception { 503441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 504441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test3_0SetParameterByteArrayByteArray()"; 505441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 506441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 507441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 508441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 509441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 510441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 511441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 512441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent byte[] param = intToByteArray(Equalizer.PARAM_CURRENT_PRESET); 513441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent byte[] value = shortToByteArray((short)0); 514441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect.setParameter(param, value) == AudioEffect.SUCCESS) { 515441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 516441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 517441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 518441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 519441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 520441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 521441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": setParameter() rejected"); 522441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() rejected"); 523441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 524441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("setParameter() called in wrong state"); 525441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() called in wrong state"); 526441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 527441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 528441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 529441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 530441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 531441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 532441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 533441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 534441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 3.1: test setParameter(int, int) 535441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 536441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test3_1SetParameterIntInt() throws Exception { 537441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 538441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test3_1SetParameterIntInt()"; 539441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 540441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 541441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_ENV_REVERB, 542441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 543441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 544441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 545441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 546441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect.setParameter(EnvironmentalReverb.PARAM_DECAY_TIME, 0) 547441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent == AudioEffect.SUCCESS) { 548441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 549441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 550441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 551441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 552441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 553441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 554441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": setParameter() rejected"); 555441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() rejected"); 556441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 557441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("setParameter() called in wrong state"); 558441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() called in wrong state"); 559441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 560441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 561441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 562441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 563441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 564441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 565441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 566441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 567441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 3.2: test setParameter(int, short) 568441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 569441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test3_2SetParameterIntShort() throws Exception { 570441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 571441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test3_2SetParameterIntShort()"; 572441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 573441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 574441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 575441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 576441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 577441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 578441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 579441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect.setParameter(Equalizer.PARAM_CURRENT_PRESET, (short)0) 580441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent == AudioEffect.SUCCESS) { 581441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 582441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 583441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 584441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 585441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 586441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 587441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": setParameter() rejected"); 588441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() rejected"); 589441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 590441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("setParameter() called in wrong state"); 591441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() called in wrong state"); 592441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 593441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 594441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 595441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 596441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 597441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 598441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 599441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 600441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 3.3: test setParameter(int, byte[]) 601441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 602441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test3_3SetParameterIntByteArray() throws Exception { 603441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 604441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test3_3SetParameterIntByteArray()"; 605441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 606441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 607441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 608441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 609441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 610441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 611441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 612441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent byte[] value = shortToByteArray((short)0); 613441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect.setParameter(Equalizer.PARAM_CURRENT_PRESET, value) 614441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent == AudioEffect.SUCCESS) { 615441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 616441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 617441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 618441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 619441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 620441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 621441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": setParameter() rejected"); 622441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() rejected"); 623441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 624441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("setParameter() called in wrong state"); 625441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() called in wrong state"); 626441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 627441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 628441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 629441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 630441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 631441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 632441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 633441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 634441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 3.4: test setParameter(int[], int[]) 635441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 636441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test3_4SetParameterIntArrayIntArray() throws Exception { 637441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 638441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test3_4SetParameterIntArrayIntArray()"; 639441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 640441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 641441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_ENV_REVERB, 642441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 643441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 644441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 645441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 646441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent int[] param = new int[1]; 647441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent int[] value = new int[1]; 648441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent param[0] = EnvironmentalReverb.PARAM_DECAY_TIME; 649441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent value[0] = 0; 650441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect.setParameter(param, value) 651441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent == AudioEffect.SUCCESS) { 652441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 653441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 654441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 655441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 656441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 657441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 658441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": setParameter() rejected"); 659441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() rejected"); 660441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 661441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("setParameter() called in wrong state"); 662441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() called in wrong state"); 663441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 664441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 665441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 666441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 667441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 668441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 669441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 670441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 671441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 3.5: test setParameter(int[], short[]) 672441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 673441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test3_5SetParameterIntArrayShortArray() throws Exception { 674441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 675441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test3_5SetParameterIntArrayShortArray()"; 676441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 677441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 678441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 679441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 680441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 681441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 682441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 683441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent int[] param = new int[1]; 684441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent short[] value = new short[1]; 685441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent param[0] = Equalizer.PARAM_CURRENT_PRESET; 686441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent value[0] = (short)0; 687441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect.setParameter(param, value) 688441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent == AudioEffect.SUCCESS) { 689441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 690441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 691441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 692441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 693441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 694441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 695441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": setParameter() rejected"); 696441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() rejected"); 697441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 698441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("setParameter() called in wrong state"); 699441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() called in wrong state"); 700441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 701441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 702441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 703441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 704441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 705441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 706441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 707441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 708441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 3.6: test setParameter(int[], byte[]) 709441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 710441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test3_6SetParameterIntArrayByteArray() throws Exception { 711441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 712441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test3_6SetParameterIntArrayByteArray()"; 713441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 714441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 715441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 716441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 717441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 718441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 719441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 720441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent int[] param = new int[1]; 721441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent byte[] value = shortToByteArray((short)0); 722441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent param[0] = Equalizer.PARAM_CURRENT_PRESET; 723441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect.setParameter(param, value) 724441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent == AudioEffect.SUCCESS) { 725441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 726441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 727441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 728441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 729441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 730441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 731441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": setParameter() rejected"); 732441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() rejected"); 733441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 734441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("setParameter() called in wrong state"); 735441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() called in wrong state"); 736441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 737441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 738441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 739441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 740441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 741441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 742441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 743441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 744441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 3.7: test setParameter() throws exception after release() 745441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 746441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test3_7SetParameterAfterRelease() throws Exception { 747441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 748441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test3_7SetParameterAfterRelease()"; 749441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 750441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 751441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 752441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 753441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 754441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 755441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 756441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 757441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.setParameter(Equalizer.PARAM_CURRENT_PRESET, (short)0); 758441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 759441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 760441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 761441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 762441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": setParameter() rejected"); 763441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "setParameter() rejected"); 764441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 765441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 766441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 767441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 768441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 769441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 770441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 771441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 772441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 773441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 774441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //----------------------------------------------------------------- 775441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // 4 - get parameters 776441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //---------------------------------- 777441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 778441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 4.0: test getParameter(byte[], byte[]) 779441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 780441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test4_0GetParameterByteArrayByteArray() throws Exception { 781441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 782441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test4_0GetParameterByteArrayByteArray()"; 783441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 784441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 785441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 786441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 787441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 788441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 789441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 790441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent byte[] param = intToByteArray(Equalizer.PARAM_CURRENT_PRESET); 791441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent byte[] value = new byte[2]; 792602b3286ffe7da6e70bf2d9e4861a5d74ff7c473Eric Laurent if (!AudioEffect.isError(effect.getParameter(param, value))) { 793441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 794441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 795441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 796441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 797441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 798441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 799441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": getParameter() rejected"); 800441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() rejected"); 801441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 802441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("getParameter() called in wrong state"); 803441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() called in wrong state"); 804441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 805441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 806441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 807441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 808441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 809441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 810441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 811441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 812441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 4.1: test getParameter(int, int[]) 813441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 814441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test4_1GetParameterIntIntArray() throws Exception { 815441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 816441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test4_1GetParameterIntIntArray()"; 817441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 818441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 819441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_ENV_REVERB, 820441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 821441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 822441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 823441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 824441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent int[] value = new int[1]; 825602b3286ffe7da6e70bf2d9e4861a5d74ff7c473Eric Laurent if (!AudioEffect.isError( 826602b3286ffe7da6e70bf2d9e4861a5d74ff7c473Eric Laurent effect.getParameter(EnvironmentalReverb.PARAM_DECAY_TIME, value))) { 827441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 828441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 829441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 830441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 831441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 832441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 833441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": getParameter() rejected"); 834441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() rejected"); 835441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 836441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("getParameter() called in wrong state"); 837441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() called in wrong state"); 838441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 839441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 840441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 841441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 842441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 843441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 844441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 845441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 846441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 4.2: test getParameter(int, short[]) 847441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 848441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test4_2GetParameterIntShortArray() throws Exception { 849441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 850441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test4_2GetParameterIntShortArray()"; 851441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 852441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 853441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 854441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 855441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 856441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 857441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 858441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent short[] value = new short[1]; 859602b3286ffe7da6e70bf2d9e4861a5d74ff7c473Eric Laurent if (!AudioEffect.isError(effect.getParameter(Equalizer.PARAM_CURRENT_PRESET, value))) { 860441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 861441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 862441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 863441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 864441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 865441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 866441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": getParameter() rejected"); 867441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() rejected"); 868441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 869441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("getParameter() called in wrong state"); 870441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() called in wrong state"); 871441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 872441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 873441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 874441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 875441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 876441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 877441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 878441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 879441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 4.3: test getParameter(int, byte[]) 880441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 881441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test4_3GetParameterIntByteArray() throws Exception { 882441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 883441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test4_3GetParameterIntByteArray()"; 884441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 885441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 886441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 887441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 888441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 889441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 890441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 891441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent byte[] value = new byte[2]; 892602b3286ffe7da6e70bf2d9e4861a5d74ff7c473Eric Laurent if (!AudioEffect.isError(effect.getParameter(Equalizer.PARAM_CURRENT_PRESET, value))) { 893441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 894441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 895441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 896441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 897441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 898441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 899441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": getParameter() rejected"); 900441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() rejected"); 901441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 902441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("getParameter() called in wrong state"); 903441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() called in wrong state"); 904441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 905441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 906441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 907441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 908441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 909441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 910441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 911441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 912441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 4.4: test getParameter(int[], int[]) 913441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 914441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test4_4GetParameterIntArrayIntArray() throws Exception { 915441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 916441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test4_4GetParameterIntArrayIntArray()"; 917441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 918441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 919441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_ENV_REVERB, 920441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 921441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 922441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 923441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 924441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent int[] param = new int[1]; 925441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent int[] value = new int[1]; 926441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent param[0] = EnvironmentalReverb.PARAM_DECAY_TIME; 927602b3286ffe7da6e70bf2d9e4861a5d74ff7c473Eric Laurent if (!AudioEffect.isError(effect.getParameter(param, value))) { 928441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 929441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 930441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 931441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 932441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 933441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 934441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": getParameter() rejected"); 935441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() rejected"); 936441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 937441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("getParameter() called in wrong state"); 938441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() called in wrong state"); 939441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 940441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 941441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 942441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 943441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 944441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 945441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 946441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 947441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 4.5: test getParameter(int[], short[]) 948441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 949441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test4_5GetParameterIntArrayShortArray() throws Exception { 950441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 951441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test4_5GetParameterIntArrayShortArray()"; 952441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 953441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 954441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 955441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 956441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 957441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 958441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 959441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent int[] param = new int[1]; 960441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent short[] value = new short[1]; 961441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent param[0] = Equalizer.PARAM_CURRENT_PRESET; 962602b3286ffe7da6e70bf2d9e4861a5d74ff7c473Eric Laurent if (!AudioEffect.isError(effect.getParameter(param, value))) { 963441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 964441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 965441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 966441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 967441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 968441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 969441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": getParameter() rejected"); 970441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() rejected"); 971441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 972441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("getParameter() called in wrong state"); 973441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() called in wrong state"); 974441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 975441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 976441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 977441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 978441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 979441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 980441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 981441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 982441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 4.6: test getParameter(int[], byte[]) 983441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 984441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test4_6GetParameterIntArrayByteArray() throws Exception { 985441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 986441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test4_6GetParameterIntArrayByteArray()"; 987441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 988441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 989441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 990441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 991441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 992441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 993441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 994441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent int[] param = new int[1]; 995441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent byte[] value = new byte[2]; 996441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent param[0] = Equalizer.PARAM_CURRENT_PRESET; 997602b3286ffe7da6e70bf2d9e4861a5d74ff7c473Eric Laurent if (!AudioEffect.isError(effect.getParameter(param, value))) { 998441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 999441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1000441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 1001441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 1002441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 1003441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 1004441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": getParameter() rejected"); 1005441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() rejected"); 1006441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 1007441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat("getParameter() called in wrong state"); 1008441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() called in wrong state"); 1009441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 1010441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 1011441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 1012441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1013441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1014441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 1015441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1016441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1017441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 4.7: test getParameter() throws exception after release() 1018441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 1019441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test4_7GetParameterAfterRelease() throws Exception { 1020441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 1021441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test4_7GetParameterAfterRelease()"; 1022441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 1023441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 1024441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 1025441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 1026441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 1027441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 1028441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 1029441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 1030441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent short[] value = new short[1]; 1031441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.getParameter(Equalizer.PARAM_CURRENT_PRESET, value); 1032441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 1033441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Bad parameter value"); 1034441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Bad parameter value"); 1035441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 1036441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": getParameter() rejected"); 1037441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "getParameter() rejected"); 1038441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 1039441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 1040441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 1041441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 1042441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 1043441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1044441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1045441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 1046441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1047441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1048441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //----------------------------------------------------------------- 1049441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // 5 priority and listeners 1050441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //---------------------------------- 1051441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1052441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 5.0: test control passed to higher priority client 1053441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 1054441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test5_0setEnabledLowerPriority() throws Exception { 1055441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 1056441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test5_0setEnabledLowerPriority()"; 1057441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect1 = null; 1058441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect2 = null; 1059441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 1060441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect1 = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 1061441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 1062441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 1063441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 1064441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect2 = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 1065441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 1066441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1, 1067441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 1068441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1069441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect1); 1070441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect2); 1071441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1072441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg + ": Effect2 does not have control", effect2.hasControl()); 1073441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertFalse(msg + ": Effect1 has control", effect1.hasControl()); 1074441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg + ": Effect1 can enable", 1075441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect1.setEnabled(true) == AudioEffect.ERROR_INVALID_OPERATION); 1076441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertFalse(msg + ": Effect1 has enabled", effect2.getEnabled()); 1077441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 1078441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 1079441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect not found"); 1080441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = false; 1081441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 1082441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 1083441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = false; 1084441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 1085441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect1 != null) { 1086441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect1.release(); 1087441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1088441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect2 != null) { 1089441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect2.release(); 1090441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1091441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1092441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 1093441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1094441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1095441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 5.1: test control passed to higher priority client 1096441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 1097441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test5_1setParameterLowerPriority() throws Exception { 1098441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 1099441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test5_1setParameterLowerPriority()"; 1100441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect1 = null; 1101441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect2 = null; 1102441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 1103441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect1 = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 1104441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 1105441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 1106441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 1107441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect2 = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 1108441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 1109441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1, 1110441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 1111441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1112441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect1); 1113441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect2); 1114441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1115441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent int status = effect2.setParameter(Equalizer.PARAM_CURRENT_PRESET, (short)0); 1116441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertEquals(msg + ": Effect2 setParameter failed", 1117441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.SUCCESS, status); 1118441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1119441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent status = effect1.setParameter(Equalizer.PARAM_CURRENT_PRESET, (short)1); 1120441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertEquals(msg + ": Effect1 setParameter did not fail", 1121441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.ERROR_INVALID_OPERATION, status); 1122441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1123441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent short[] value = new short[1]; 1124441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent status = effect2.getParameter(Equalizer.PARAM_CURRENT_PRESET, value); 1125602b3286ffe7da6e70bf2d9e4861a5d74ff7c473Eric Laurent assertFalse(msg + ": Effect2 getParameter failed", 1126602b3286ffe7da6e70bf2d9e4861a5d74ff7c473Eric Laurent AudioEffect.isError(status)); 1127441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertEquals(msg + ": Effect1 changed parameter", 1128441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent (short)0, value[0]); 1129441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1130441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 1131441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 1132441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect not found"); 1133441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = false; 1134441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 1135441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 1136441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = false; 1137441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 1138441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect1 != null) { 1139441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect1.release(); 1140441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1141441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect2 != null) { 1142441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect2.release(); 1143441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1144441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1145441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 1146441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1147441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1148441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 5.2: test control status listener 1149441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 1150441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test5_2ControlStatusListener() throws Exception { 1151441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 1152441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test5_2ControlStatusListener()"; 1153441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEffect = null; 1154441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect2 = null; 1155441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 1156441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mHasControl = true; 1157441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent createListenerLooper(true, false, false); 1158441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 1159441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 1160441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.wait(1000); 1161441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch(Exception e) { 1162441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Log.e(TAG, "Looper creation: wait was interrupted."); 1163441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1164441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1165441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(mInitialized); 1166441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 1167441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 1168441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect2 = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 1169441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 1170441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1, 1171441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 1172441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect2); 1173441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.wait(1000); 1174441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch(Exception e) { 1175441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Log.e(TAG, "Create second effect: wait was interrupted."); 1176441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1177441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1178441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertFalse(msg + ": effect control not lost by effect1", mHasControl); 1179441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 1180441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 1181441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Equalizer not found"); 1182441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Equalizer not found"); 1183441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 1184441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 1185441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Effect library not loaded"); 1186441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (Exception e){ 1187441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Could not create media player:" + e); 1188441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 1189441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent terminateListenerLooper(); 1190441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect2 != null) { 1191441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect2.release(); 1192441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1193441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1194441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 1195441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1196441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1197441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 5.3: test enable status listener 1198441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 1199441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test5_3EnableStatusListener() throws Exception { 1200441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 1201441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test5_3EnableStatusListener()"; 1202441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEffect = null; 1203441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect2 = null; 1204441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 1205441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent createListenerLooper(false, true, false); 1206441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 1207441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 1208441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.wait(1000); 1209441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch(Exception e) { 1210441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Log.e(TAG, "Looper creation: wait was interrupted."); 1211441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1212441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1213441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(mInitialized); 1214441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEffect.setEnabled(true); 1215441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mIsEnabled = true; 1216441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect2 = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 1217441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 1218441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1, 1219441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 1220441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect2); 1221441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg + ": effect not enabled", effect2.getEnabled()); 1222441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 1223441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 1224441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect2.setEnabled(false); 1225441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.wait(1000); 1226441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch(Exception e) { 1227441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Log.e(TAG, "Create second effect: wait was interrupted."); 1228441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1229441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1230441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertFalse(msg + ": enable status not updated", mIsEnabled); 1231441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 1232441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 1233441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Equalizer not found"); 1234441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Equalizer not found"); 1235441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 1236441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 1237441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Effect library not loaded"); 1238441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (Exception e){ 1239441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Could not create media player:" + e); 1240441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 1241441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent terminateListenerLooper(); 1242441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect2 != null) { 1243441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect2.release(); 1244441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1245441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1246441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 1247441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1248441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1249441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 5.4: test parameter changed listener 1250441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 1251441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test5_4ParameterChangedListener() throws Exception { 1252441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 1253441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test5_4ParameterChangedListener()"; 1254441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEffect = null; 1255441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect2 = null; 1256441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 1257441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent createListenerLooper(false, false, true); 1258441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 1259441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 1260441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.wait(1000); 1261441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch(Exception e) { 1262441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Log.e(TAG, "Looper creation: wait was interrupted."); 1263441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1264441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1265441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(mInitialized); 1266441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect2 = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 1267441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 1268441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1, 1269441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 1270441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect2); 1271441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 1272441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 1273441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mParameterChanged = -1; 1274441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect2.setParameter(Equalizer.PARAM_CURRENT_PRESET, (short)0); 1275441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.wait(1000); 1276441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch(Exception e) { 1277441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Log.e(TAG, "Create second effect: wait was interrupted."); 1278441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1279441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1280441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertEquals(msg + ": parameter change not received", 1281441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Equalizer.PARAM_CURRENT_PRESET, mParameterChanged); 1282441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 1283441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 1284441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Equalizer not found"); 1285441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Equalizer not found"); 1286441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 1287441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 1288441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Effect library not loaded"); 1289441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (Exception e){ 1290441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Could not create media player:" + e); 1291441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 1292441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent terminateListenerLooper(); 1293441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect2 != null) { 1294441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect2.release(); 1295441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1296441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1297441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 1298441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1299441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1300441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //----------------------------------------------------------------- 1301441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // 6 command method 1302441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //---------------------------------- 1303441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1304441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1305441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //Test case 6.0: test command method 1306441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @LargeTest 1307441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void test6_0Command() throws Exception { 1308441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean result = false; 1309441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent String msg = "test6_0Command()"; 1310441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect effect = null; 1311441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 1312441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 1313441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 1314441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 1315441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 1316441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull(msg + ": could not create AudioEffect", effect); 1317441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent try { 1318441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent byte[] cmd = new byte[0]; 1319441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent byte[] reply = new byte[4]; 1320441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent int status = effect.command(3, cmd, reply); 1321602b3286ffe7da6e70bf2d9e4861a5d74ff7c473Eric Laurent assertFalse(msg + ": command failed", AudioEffect.isError(status)); 1322441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg + ": effect not enabled", effect.getEnabled()); 1323441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent result = true; 1324441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalStateException e) { 1325441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": command in illegal state"); 1326441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1327441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (IllegalArgumentException e) { 1328441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Equalizer not found"); 1329441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Equalizer not found"); 1330441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (UnsupportedOperationException e) { 1331441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent msg = msg.concat(": Effect library not loaded"); 1332441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, ": Effect library not loaded"); 1333441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } catch (Exception e){ 1334441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent loge(msg, "Could not create media player:" + e); 1335441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } finally { 1336441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect != null) { 1337441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent effect.release(); 1338441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1339441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1340441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertTrue(msg, result); 1341441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1342441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1343441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //----------------------------------------------------------------- 1344441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // private methods 1345441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent //---------------------------------- 1346441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1347441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent /* 1348441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * Initializes the message looper so that the MediaPlayer object can 1349441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * receive the callback messages. 1350441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent */ 1351441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private void createMediaPlayerLooper() { 1352441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent new Thread() { 1353441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @Override 1354441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void run() { 1355441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // Set up a looper to be used by mMediaPlayer. 1356441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Looper.prepare(); 1357441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1358441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // Save the looper so that we can terminate this thread 1359441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // after we are done with it. 1360441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mLooper = Looper.myLooper(); 1361441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1362441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mMediaPlayer = new MediaPlayer(); 1363441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { 1364441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public boolean onError(MediaPlayer player, int what, int extra) { 1365441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 1366441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mError = what; 1367441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.notify(); 1368441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1369441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent return true; 1370441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1371441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent }); 1372441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 1373441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void onCompletion(MediaPlayer player) { 1374441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 1375441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.notify(); 1376441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1377441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1378441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent }); 1379441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 1380441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mInitialized = true; 1381441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.notify(); 1382441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1383441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Looper.loop(); // Blocks forever until Looper.quit() is called. 1384441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1385441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent }.start(); 1386441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1387441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent /* 1388441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * Terminates the message looper thread. 1389441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent */ 1390441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private void terminateMediaPlayerLooper() { 1391441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (mLooper != null) { 1392441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mLooper.quit(); 1393441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mLooper = null; 1394441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1395441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (mMediaPlayer != null) { 1396441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mMediaPlayer.release(); 1397441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1398441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1399441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1400441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent /* 1401441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * Initializes the message looper fro effect listener 1402441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent */ 1403441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent class ListenerThread extends Thread { 1404441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean mControl; 1405441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean mEnable; 1406441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent boolean mParameter; 1407441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1408441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public ListenerThread(boolean control, boolean enable, boolean parameter) { 1409441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent super(); 1410441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mControl = control; 1411441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEnable = enable; 1412441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mParameter = parameter; 1413441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1414441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1415441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private void createListenerLooper(boolean control, boolean enable, boolean parameter) { 1416441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1417441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent new ListenerThread(control, enable, parameter) { 1418441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent @Override 1419441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void run() { 1420441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // Set up a looper to be used by mEffect. 1421441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Looper.prepare(); 1422441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1423441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // Save the looper so that we can terminate this thread 1424441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent // after we are done with it. 1425441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mLooper = Looper.myLooper(); 1426441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1427441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEffect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 1428441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent AudioEffect.EFFECT_TYPE_NULL, 1429441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0, 1430441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 0); 1431441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent assertNotNull("could not create AudioEffect", mEffect); 1432441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1433441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (mControl) { 1434441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEffect.setControlStatusListener(new AudioEffect.OnControlStatusChangeListener() { 1435441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void onControlStatusChange(AudioEffect effect, boolean controlGranted) { 1436441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 1437441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect == mEffect) { 1438441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mHasControl = controlGranted; 1439441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.notify(); 1440441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1441441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1442441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1443441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent }); 1444441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1445441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (mEnable) { 1446441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEffect.setEnableStatusListener(new AudioEffect.OnEnableStatusChangeListener() { 1447441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void onEnableStatusChange(AudioEffect effect, boolean enabled) { 1448441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 1449441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect == mEffect) { 1450441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mIsEnabled = enabled; 1451441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.notify(); 1452441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1453441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1454441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1455441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent }); 1456441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1457441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (mParameter) { 1458441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEffect.setParameterListener(new AudioEffect.OnParameterChangeListener() { 1459441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent public void onParameterChange(AudioEffect effect, int status, byte[] param, 1460441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent byte[] value) { 1461441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 1462441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (effect == mEffect) { 1463441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mParameterChanged = byteArrayToInt(param); 1464441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.notify(); 1465441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1466441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1467441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1468441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent }); 1469441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1470441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1471441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent synchronized(lock) { 1472441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mInitialized = true; 1473441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent lock.notify(); 1474441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1475441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent Looper.loop(); // Blocks forever until Looper.quit() is called. 1476441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1477441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent }.start(); 1478441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1479441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent /* 1480441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent * Terminates the listener looper thread. 1481441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent */ 1482441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent private void terminateListenerLooper() { 1483441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (mEffect != null) { 1484441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEffect.release(); 1485441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mEffect = null; 1486441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1487441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent if (mLooper != null) { 1488441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mLooper.quit(); 1489441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent mLooper = null; 1490441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1491441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1492441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1493441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent protected int byteArrayToInt(byte[] valueBuf) { 1494441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent return byteArrayToInt(valueBuf, 0); 1495441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1496441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1497441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1498441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent protected int byteArrayToInt(byte[] valueBuf, int offset) { 1499441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent ByteBuffer converter = ByteBuffer.wrap(valueBuf); 1500441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent converter.order(ByteOrder.nativeOrder()); 1501441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent return converter.getInt(offset); 1502441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1503441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1504441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1505441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent protected byte[] intToByteArray(int value) { 1506441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent ByteBuffer converter = ByteBuffer.allocate(4); 1507441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent converter.order(ByteOrder.nativeOrder()); 1508441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent converter.putInt(value); 1509441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent return converter.array(); 1510441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1511441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1512441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent protected short byteArrayToShort(byte[] valueBuf) { 1513441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent return byteArrayToShort(valueBuf, 0); 1514441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1515441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1516441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent protected short byteArrayToShort(byte[] valueBuf, int offset) { 1517441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent ByteBuffer converter = ByteBuffer.wrap(valueBuf); 1518441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent converter.order(ByteOrder.nativeOrder()); 1519441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent return converter.getShort(offset); 1520441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1521441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1522441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1523441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent protected byte[] shortToByteArray(short value) { 1524441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent ByteBuffer converter = ByteBuffer.allocate(2); 1525441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent converter.order(ByteOrder.nativeOrder()); 1526441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent short sValue = (short) value; 1527441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent converter.putShort(sValue); 1528441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent return converter.array(); 1529441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent } 1530441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent 1531441ec6bd106a6ac09ff0ceed1f8d437c33cfc156Eric Laurent} 1532