如何在TMediaplayer中使用Equalizer或BassBoost?

时间:2016-04-23 22:36:06

标签: android delphi android-mediaplayer delphi-10-seattle

我正在为Delphi XE10 for Android编写一个私人使用的媒体播放器应用程序。我想使用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媒体播放器对象中公开。知道我怎么能得到它吗?

1 个答案:

答案 0 :(得分:0)

经过大量的失败尝试后,我终于找到了答案。 答案的第一部分是,似乎不可能将音频效果与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;