2016-04-23 1 views
0

J'écris une application mediaplayer pour un usage privé dans Delphi XE10 pour Android. Je voudrais utiliser l'égaliseur android, mais je ne sais pas vraiment comment. L'interface JEqualizer est exposée dans Androidapi.JNI.Media (comme d'autres fonctions soundfx). J'ai deux problèmes spécifiques:Comment utiliser Equalizer ou BassBoost pour TMediaplayer?

1.) Je ne suis pas très avancé dans la création d'objets Delphi à partir d'interfaces android. Suis-droit juste pour faire ce qui suit:

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

2.) Pour créer l'égaliseur j'ai besoin audiosession du MediaPlayer, qui n'est pas exposé dans l'objet MediaPlayer Delphi. Une idée de comment je pourrais obtenir ça?

Répondre

0

Après beaucoup d'expériences avec des échecs, j'ai finalement trouvé la réponse moi-même. La première partie de la réponse est qu'il ne semble pas possible d'utiliser les effets audio avec l'objet delphi tmediaplayer. Cependant: Il est possible que vous créiez vous-même le mediaplayer android. Dans ce cas, bien sûr, l'application qui en résultera ne sera plus multi-plateforme. Donc, pour tous ceux qui pourraient en avoir besoin, voici la solution comme code pour l'effet bassboost:

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;