2016-06-14 175 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