2013-03-09 112 views
3

我正在開發一款支持Android內置音頻效果的小型音頻播放器(如EnvironmentalReverb)。到目前爲止,我遇到了啓動時沒有崩潰的問題,並通過向AndroidManifest.xml添加缺少的權限來解決該問題。現在問題是我只聽不到任何混響。Android的PresetReverb不起作用?

這裏是我的代碼:

MediaPlayer player; 
EnvironmentalReverb eReverb; 
boolean enabled = true; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final MediaPlayer player = MediaPlayer.create(this, R.raw.andthentocoda); 
    /* 
     PresetReverb pReverb = new PresetReverb(1,0); 
     player.attachAuxEffect(pReverb.getId()); 
     pReverb.setPreset(PresetReverb.PRESET_LARGEHALL); 
     pReverb.setEnabled(true); 
     player.setAuxEffectSendLevel(1.0f); 
     */ 

     eReverb = new EnvironmentalReverb(1,0); 
     eReverb.setDecayHFRatio((short) 1000); 
     eReverb.setDecayTime(10000); 
     eReverb.setDensity((short) 1000); 
     eReverb.setDiffusion((short) 1000); 
     eReverb.setReverbLevel((short) -1000); 
     eReverb.setEnabled(enabled); 
     player.attachAuxEffect(eReverb.getId()); 
     player.setAuxEffectSendLevel(0.5f); 

     player.start(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

public void clicked(View v) 
{ 
    enabled = !enabled; 
    eReverb.setEnabled(enabled); 
    Log.d("EFECT", "Effect " + (enabled ? "enabled" : "disabled")); 
} 

你有任何想法的問題可能是什麼?

回答

0

我的audioTrack實例連接到audioEffect這樣的:

try { 
    plateReverb = new PresetReverb(0, mAudioTrack.getAudioSessionId()); 
} catch (Throwable e){ 
    plateReverb = null; 
} 
if (plateReverb!=null){plateReverb.setPreset(PresetReverb.PRESET_PLATE);} 

,當然你將有player.getAudioSessionId()

更換mAudioTrack.getAudioSessionId()但我不知道是否這就是爲什麼你可以」聽不到它。有些設備不支持音頻效果,您會在logcat上看到錯誤。