2013-03-09 121 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上看到错误。