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;
我正在为 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;