如何使用 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;
我对 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;