我对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()(安卓想要的方式)也不起作用,Recorder:= MediaRecorder.Create(我认为 Delphi 通常想要的方式)也不行。如果有人知道如何获取对象实例或者知道从 Delphi/RAD Studio 更容易获取音频振幅的方法,请告诉我。
Recorder := TJMediaRecorder.JavaClass.init;
- 对我来说这是一个相当完整(且正确)的答案 :-) 要给自己点信心。 - Remy Lebeau