如何在安卓设备中通过编程应用低音效果

7

我正在尝试使用以下代码以编程方式应用Bass Effects

BassBoost bassBoost = new BassBoost(0, audioSessionId);
bassBoost.setEnabled(true);
BassBoost.Settings bassBoostSettingTemp =  bassBoost.getProperties();
BassBoost.Settings bassBoostSetting = new BassBoost.Settings(bassBoostSettingTemp.toString());
bassBoostSetting.strength = MAX_STRENGTH_FOR_BASS; // 1000
bassBoost.setProperties(bassBoostSetting);

bassBoost.setStrength((short) progress); // progress value from seek bar

但是低音效果没有应用在当前的音频会话上。
请帮助我找出问题所在。

尝试访问http://kyogs.blogspot.in/2012/09/android-audioeffect.html,您可以获得所需的所有效果。希望对您有所帮助。 - kyogs
@mojmaho:你提供的链接是developer.android.com提供的示例代码。这里是链接:http://stuff.mit.edu/afs/sipb/project/android/docs/resources/samples/ApiDemos/src/com/example/android/apis/media/AudioFxDemo.html 问问题的人询问了BassBoost的实现方式。你有什么想法吗? - Shreyash Mahajan
尝试调用AudioTrack或MediaPlayer对象的attachAuxEffect(bassBoost.getId())方法。记得调用setAuxEffectSendLevel(float level)方法,否则即使你附加了效果,它也不会起作用(默认情况下级别为0.0)。 - Esses77
@Parveen,我也在尝试解决这个问题,你有找到解决方法吗? - balaji koduri
1个回答

1
检查它是否被支持。
bassBoost = new BassBoost(0, 0);
bassBoost.setEnabled(true);

if (bassBoost.getStrengthSupported())
{
    short word1 = bassBoost.getRoundedStrength();
    bassBoost.setStrength(word1);
}

您还可以检查您正在测试的设备是否支持它(这取决于设备)。您可以使用:

final Descriptor[] effects = AudioEffect.queryEffects();

// Determine available/supported effects 
for (final Descriptor effect : effects) {
    Log.d(TAG, effect.name.toString() + ", type: " + effect.type.toString());
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接