Home | History | Annotate | Download | only in audio
      1 /*
      2  * Copyright (C) 2010 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.mediaframeworktest.functional.audio;
     18 
     19 import com.android.mediaframeworktest.MediaFrameworkTest;
     20 import com.android.mediaframeworktest.MediaNames;
     21 import com.android.mediaframeworktest.functional.EnergyProbe;
     22 import android.content.Context;
     23 import android.content.res.AssetFileDescriptor;
     24 import android.media.audiofx.AudioEffect;
     25 import android.media.AudioManager;
     26 import android.media.audiofx.BassBoost;
     27 import android.media.audiofx.Visualizer;
     28 import android.media.MediaPlayer;
     29 
     30 import android.os.Looper;
     31 import android.test.suitebuilder.annotation.LargeTest;
     32 import android.test.suitebuilder.annotation.MediumTest;
     33 import android.test.suitebuilder.annotation.Suppress;
     34 import android.test.ActivityInstrumentationTestCase2;
     35 import android.util.Log;
     36 
     37 import java.nio.ByteOrder;
     38 import java.nio.ByteBuffer;
     39 import java.util.UUID;
     40 
     41 /**
     42  * Junit / Instrumentation test case for the media AudioTrack api
     43 
     44  */
     45 public class MediaBassBoostTest extends ActivityInstrumentationTestCase2<MediaFrameworkTest> {
     46     private String TAG = "MediaBassBoostTest";
     47     private final static short TEST_STRENGTH = 500;
     48 
     49     private BassBoost mBassBoost = null;
     50     private int mSession = -1;
     51 
     52     public MediaBassBoostTest() {
     53         super("com.android.mediaframeworktest", MediaFrameworkTest.class);
     54     }
     55 
     56     @Override
     57     protected void setUp() throws Exception {
     58       super.setUp();
     59     }
     60 
     61     @Override
     62     protected void tearDown() throws Exception {
     63         super.tearDown();
     64         releaseBassBoost();
     65     }
     66 
     67     private static void assumeTrue(String message, boolean cond) {
     68         assertTrue("(assume)"+message, cond);
     69     }
     70 
     71     private void log(String testName, String message) {
     72         Log.v(TAG, "["+testName+"] "+message);
     73     }
     74 
     75     private void loge(String testName, String message) {
     76         Log.e(TAG, "["+testName+"] "+message);
     77     }
     78 
     79     //-----------------------------------------------------------------
     80     // BASS BOOST TESTS:
     81     //----------------------------------
     82 
     83 
     84     //-----------------------------------------------------------------
     85     // 0 - constructor
     86     //----------------------------------
     87 
     88     //Test case 0.0: test constructor and release
     89     @LargeTest
     90     public void test0_0ConstructorAndRelease() throws Exception {
     91         boolean result = false;
     92         String msg = "test1_0ConstructorAndRelease()";
     93         BassBoost bb = null;
     94          try {
     95             bb = new BassBoost(0, 0);
     96             assertNotNull(msg + ": could not create BassBoost", bb);
     97             try {
     98                 assertTrue(msg +": invalid effect ID", (bb.getId() != 0));
     99             } catch (IllegalStateException e) {
    100                 msg = msg.concat(": BassBoost not initialized");
    101             }
    102             result = true;
    103         } catch (IllegalArgumentException e) {
    104             msg = msg.concat(": BassBoost not found");
    105         } catch (UnsupportedOperationException e) {
    106             msg = msg.concat(": Effect library not loaded");
    107         } finally {
    108             if (bb != null) {
    109                 bb.release();
    110             }
    111         }
    112         assertTrue(msg, result);
    113     }
    114 
    115     //-----------------------------------------------------------------
    116     // 1 - get/set parameters
    117     //----------------------------------
    118 
    119     //Test case 1.0: test strength
    120     @LargeTest
    121     public void test1_0Strength() throws Exception {
    122         boolean result = false;
    123         String msg = "test1_0Strength()";
    124         getBassBoost(0);
    125         try {
    126             if (mBassBoost.getStrengthSupported()) {
    127                 mBassBoost.setStrength((short)TEST_STRENGTH);
    128                 short strength = mBassBoost.getRoundedStrength();
    129                 // allow 10% difference between set strength and rounded strength
    130                 assertTrue(msg +": got incorrect strength",
    131                         ((float)strength > (float)TEST_STRENGTH * 0.9f) &&
    132                         ((float)strength < (float)TEST_STRENGTH * 1.1f));
    133             } else {
    134                 short strength = mBassBoost.getRoundedStrength();
    135                 assertTrue(msg +": got incorrect strength", strength >= 0 && strength <= 1000);
    136             }
    137             result = true;
    138         } catch (IllegalArgumentException e) {
    139             msg = msg.concat(": Bad parameter value");
    140             loge(msg, "Bad parameter value");
    141         } catch (UnsupportedOperationException e) {
    142             msg = msg.concat(": get parameter() rejected");
    143             loge(msg, "get parameter() rejected");
    144         } catch (IllegalStateException e) {
    145             msg = msg.concat("get parameter() called in wrong state");
    146             loge(msg, "get parameter() called in wrong state");
    147         } finally {
    148             releaseBassBoost();
    149         }
    150         assertTrue(msg, result);
    151     }
    152 
    153     //Test case 1.1: test properties
    154     @LargeTest
    155     public void test1_1Properties() throws Exception {
    156         boolean result = false;
    157         String msg = "test1_1Properties()";
    158         getBassBoost(0);
    159         try {
    160             BassBoost.Settings settings = mBassBoost.getProperties();
    161             String str = settings.toString();
    162             settings = new BassBoost.Settings(str);
    163             mBassBoost.setProperties(settings);
    164             result = true;
    165         } catch (IllegalArgumentException e) {
    166             msg = msg.concat(": Bad parameter value");
    167             loge(msg, "Bad parameter value");
    168         } catch (UnsupportedOperationException e) {
    169             msg = msg.concat(": get parameter() rejected");
    170             loge(msg, "get parameter() rejected");
    171         } catch (IllegalStateException e) {
    172             msg = msg.concat("get parameter() called in wrong state");
    173             loge(msg, "get parameter() called in wrong state");
    174         } finally {
    175             releaseBassBoost();
    176         }
    177         assertTrue(msg, result);
    178     }
    179 
    180     //-----------------------------------------------------------------
    181     // private methods
    182     //----------------------------------
    183 
    184     private void getBassBoost(int session) {
    185          if (mBassBoost == null || session != mSession) {
    186              if (session != mSession && mBassBoost != null) {
    187                  mBassBoost.release();
    188                  mBassBoost = null;
    189              }
    190              try {
    191                 mBassBoost = new BassBoost(0, session);
    192                 mSession = session;
    193             } catch (IllegalArgumentException e) {
    194                 Log.e(TAG, "getBassBoost() BassBoost not found exception: "+e);
    195             } catch (UnsupportedOperationException e) {
    196                 Log.e(TAG, "getBassBoost() Effect library not loaded exception: "+e);
    197             }
    198          }
    199          assertNotNull("could not create mBassBoost", mBassBoost);
    200     }
    201 
    202     private void releaseBassBoost() {
    203         if (mBassBoost != null) {
    204             mBassBoost.release();
    205             mBassBoost = null;
    206         }
    207    }
    208 
    209 }
    210