如何使用 JNI (Delphi) 实例化 java 对象

How do I instantiate a java object using JNI (Delphi)

我对 Delphi 中的编程还是很陌生,我对 Java 一无所知。但是,我需要使用 RAD Studio 编写一个程序来读取音频输入的幅度。我无法在 Delphi(我负担得起)中找到执行此操作的方法,但我确实找到了使用 Android API 的方法。该解决方案看起来在 MediaRecorder 对象中,因此我尝试将其与此代码一起使用。

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;

在我看来这段代码不起作用,因为没有该对象的实例。但是,Recorder:= new MediaRecorder()(android 想要的方式)不起作用,Recorder:= MediaRecorder.Create 也不起作用(我认为 Delphi 通常想要的方式)如果有人知道如何获取对象的实例或知道从 Delphi/RAD Studio 获取音频幅度的更简单方法,请告诉我.

要在 Delphi 中创建 Java class 对象实例,在您的例子中是实现 JMediaRecorder 接口的 class 实例,请使用以下代码:

Recorder := TJMediaRecorder.JavaClass.init;