我正在使用 RAD Studio 10.2 Tokyo 并在 Delphi 中编程。
我在使用 JNI 库的 Java 对象方面遇到一般问题。
我想要做的是在按钮按下之间找到 Android 音频源的最大音频幅度。
这是我正在使用的代码。
var
Form1: TForm1;
Recorder: JMediaRecorder;
procedure TForm1.Button1Click(Sender: TObject);
begin
if not assigned(Recorder) then
begin
Recorder:= TJMediaRecorder.Create();
Recorder.setAudioSource(1);
Recorder.setOutputFormat(1);
Recorder.setAudioEncoder(1);
Recorder.setOutputFile(TPath.GetTempPath+'/test');
Recorder.prepare();
Recorder.start();
end;
Label1.Text:=IntToStr(Recorder.getMaxAmplitude());
end;
这似乎会产生多个问题。
问题 #1:
虽然我知道在 java 中媒体记录器设置应该类似于
Recorder.setAudioSource(MediaRecorder.AudioSource.MIC).
这不是我可以在 RAD Studio 中输入的内容。我查看了 API,发现它应该表示整数 1。问题是它给了我一个错误,说它找不到音频源。
问题 #2:
我需要使用为文件设置路径
Recorder.setOutputFile()
问题在于它只接受 JStrings 作为输入。我找遍了整个地方,发现有几个人在使用
StringToJString('my super cool string')
我认为这是我不知道的库的一部分,因为当我使用它时它不起作用。
如果您知道另一种从 Android 音频源读取振幅的方法,我也会接受它作为答案,因为这是我试图解决的整体问题。