2012-11-10 13 views
7

Próbuję zastosować Bass Effects z programowo za pomocą następującego kodu:Jak zastosować efekt Bass programowo w android

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 

Ale efekty basowe nie są stosowane na bieżącej sesji audio.
Pomóż mi, pokazując, co jest nie tak.

+0

spróbować http://kyogs.blogspot.in/2012/09/android-audioeffect.html tutaj można dostać wszystko efekt jak need.hop jej pomocne dla Ciebie. – kyogs

+0

@mojmaho: podany link jest przykładowym kodem podanym przez developer.android.com. Oto link: http://stuff.mit.edu/afs/sipb/project/android/docs/resources/samples/ApiDemos/src/com/example/android/apis/media/AudioFxDemo.html Pytający zapytaj o wdrożenie BassBoost. Czy masz jakiś pomysł na ten temat? –

+0

spróbuj wywołać metodę 'attachAuxEffect (bassBoost.getId()) obiektu AudioTrack lub Mediaplayer. I pamiętaj, aby nazwać również metodę 'setAuxEffectSendLevel '(zmiennoprzecinkowa)' inaczej, nawet jeśli podłączysz efekt, który nie zadziała (domyślnie jest to poziom 0.0) – Esses77

Odpowiedz

1

Sprawdź, czy jest obsługiwany, czy nie.

bassBoost = new BassBoost(0, 0); 
bassBoost.setEnabled(true); 

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

I można również sprawdzić, czy cokolwiek na testujemy je obsługuje (jest to uzależnione od urządzenia). można użyć:

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

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