Я использую RAD Studio 10.2 Tokyo и программирую в Delphi.
У меня общие проблемы с объектом Java с использованием библиотек JNI.
Я пытаюсь найти максимальную амплитуду звука источника звука 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, я бы также принял это как ответ, поскольку это общая проблема, которую я пытаюсь решить.