TMediaplayer 如何使用 Equalizer 或 BassBoost?

How to use Equalizer or BassBoost for TMediaplayer?

我正在为 Android 在 Delphi XE10 中编写供私人使用的媒体播放器应用程序。我想使用 android 均衡器,但不知道如何使用。 JEqualizer 接口在 Androidapi.JNI.Media 中公开(其他 soundfx 函数也是如此)。我有两个具体问题:

1.) 我在从 android 接口创建 delphi 对象方面不是很先进。只是做以下事情是对的:

var
   equ : jequalizer; 
begin
equ := tjequalizer.wrap((sharedactivitycontext.getsystemservice(tjcontext.JavaClass.AUDIO_SERVICE) as ILocalObject).getobjectid);

2.) 要创建均衡器,我需要媒体播放器的音频会话,它没有在 Delphi 媒体播放器对象中公开。知道我怎样才能得到它吗?

经过多次尝试失败后,我终于找到了答案。 答案的第一部分是似乎无法将音频效果与 delphi tmediaplayer 对象一起使用。 但是:如果您自己创建 android 媒体播放器,这是可能的。 当然,在那种情况下,生成的应用程序将不再是跨平台的。 因此,对于可能需要它的每个人,这里是低音增强效果的代码解决方案:

var  //shoud be no local variables of course, but defined in your forms scope
    mp: JMediaPlayer;
    bb: JBassboost;
begin
  mp := tjmediaplayer.Create;
  mp.reset;
  mp.setdatasource(StringToJString(Edit1.text)); // in edit1.text I have the path to an mp3 file
  mp.prepare;
  mp.start;  //now the mediaplayer is playing music
  bb := tjbassboost.javaclass.init(0, mp.getAudioSessionId);
  bb.setEnabled(true);
  bb.setStrength(1000); //value 0-1000. now the effect is applied
end;