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

时间:2017-08-09 19:20:02

标签: java android delphi audio amplitude

我仍然很熟悉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获得音频振幅的更简单方法,请告诉我。

1 个答案:

答案 0 :(得分:2)

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

Recorder := TJMediaRecorder.JavaClass.init;