2016-06-14 81 views
0

我试图通过AudioEffect::setParameter设置AudioEffect参数,但它会在Android Studio中产生编译错误。编译错误:在Android Studio中找不到符号AudioEffect :: setParameter

这里是我的代码:

import android.media.audiofx.Equalizer; 
... 
private Equalizer mEqualizer = null; 
mEqualizer = new Equalizer(0, mMediaPlayer.getAudioSessionId()); 
mEqualizer.setParameter(0,0); 

这个工作在我的旧的Eclipse项目;现在我使用的是新的AS项目,但它给出了一个错误:找不到符号法的setParameter(INT,INT)

我也AudioEffect对象试图调用setParameter()

import android.media.audiofx.AudioEffect; 

AudioEffect effect = null; 
effect = new AudioEffect(AudioEffect.EFFECT_TYPE_EQUALIZER, 
       AudioEffect.EFFECT_TYPE_NULL, 
       0, 
       0); 

effect.setParameter(0,0); 

然后得到同样的错误。

下面是Android SDK中的源代码:

Android的SDK \机器人-23 \机器人\媒体\ audiofx \ Equalizer.java:

public class Equalizer extends AudioEffect { 

Android的SDK \机器人-23 \机器人\ media \ audiofx \ AudioEffect.java:

public class AudioEffect { 
... 
    public int setParameter(int param, int value) throws IllegalStateException { 
     byte[] p = intToByteArray(param); 
     byte[] v = intToByteArray(value); 
     return setParameter(p, v); 
    } 

有谁知道为什么我无法在Android Studio中调用此方法? (但它在Eclipse中有效)。

Android Studio版本2.1.2 使用Android SDK 23(也试过SDK 22和21,同样的错误)。

+0

Android不使用Java 8的双冒号,所以我不确定为什么你在问题 –

回答

0

根据documentation,没有方法setParameters在类AudioEffect,既没有我可以看到类型EFFECT_TYPE_NULL。我也检查了我的SDK。您必须使用过时的代码。请将其重构为最新的SDK。 AudioManager有一个方法setParamters(String keyValuePairs)。它可以是你的使用。

+0

中包含这个问题谢谢你,我认为你是对的。尽管我在AudioEffect.java中没有看到任何“弃用”,并且这仍然适用于带有SDK 23的Eclipse。 我会尝试在文档上声明的其他设置方法。 – CloudEX