我对Delphi的编程还很新,我对Java没有任何了解。但是,我需要使用RAD Studio编写一个程序来读取音频输入的幅度。我无法找到一种方法来做到这一点在德尔福(我可以负担得起),但我确实找到了一种使用Android API的方式。该解决方案看起来在MediaRecorder对象中,所以我试图用这个代码来使用它。如何使用JNI实例化Java对象(Delphi)
var
Form1: TForm1;
RecorderObj: Jobject;
Recorder: JMediaRecorder;
procedure TForm1.FormCreate(Sender: TObject);
begin
Recorder:= MediaRecorder; // <------- The problem is here.
Recorder.setAudioSource(1); // should set the recording device to the mic
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Text:= IntToStr(Recorder.getMaxAmplitude);
end;
它看起来这个代码不起作用,因为没有对象的实例。然而,记录器:=新的MediaRecorder()(android想要它的方式)不起作用,也没有记录器:= MediaRecorder.Create(我认为德尔福通常想要它的方式)如果有人知道如何获得对象的实例或知道从Delphi/RAD Studio获取音频振幅的更简单的方法,请让我知道。
记录:= TJMediaRecorder.JavaClass.init;另外看看FMX.Media.Android单元,它包含不同类的媒体捕获 –
@DalijaPrasnikar:这应该是一个答案,而不是评论。 –
@DalijaPrasnikar:答案不必很长,只是正确的。 '记录器:= TJMediaRecorder.JavaClass.init;' - 这是一个相当完整(和正确)的答案给我:-)给自己信用。 –