안드로이드 API TJAudioRecord를 직접 호출하여 firemonkey에 오디오를 녹음하려하지만 audioRecord.getState가 작동하지 않으면 STATE_UNINITIALIZED를 반환합니다.Delphi XE5 firemonkey api call
이 기능
audioRecord :=
TJAudioRecord.JavaClass.init(TJMediaRecorder_AudioSource.JavaClass.VOICE_COMMUNICATION,
16000,
TJAudioFormat.JavaClass.CHANNEL_IN_MONO,
TJAudioFormat.JavaClass.ENCODING_PCM_16BIT,
bufferSize);
전체 코드
bufferSize := TJAudioRecord.JavaClass.getMinBufferSize(16000,
TJAudioFormat.JavaClass.CHANNEL_IN_MONO,
TJAudioFormat.JavaClass.ENCODING_PCM_16BIT);
if (bufferSize <> TJAudioRecord.JavaClass.ERROR_BAD_VALUE) then
begin
audioRecord := TJAudioRecord.JavaClass.init(TJMediaRecorder_AudioSource.JavaClass.VOICE_COMMUNICATION,
16000,
TJAudioFormat.JavaClass.CHANNEL_IN_MONO,
TJAudioFormat.JavaClass.ENCODING_PCM_16BIT,
bufferSize);
ShowMessage(IntToStr(buffersize));
if (audioRecord.getState = TJAudioRecord.JavaClass.STATE_INITIALIZED)then begin
//then begin
audioRecord.startRecording;
ShowMessage('ok');
end;
end;
except
ShowMessage('Error 0');
end;
당신은''ERROR_BAD_VALUE' (-2)에 대한 getMinBufferSize'()의 결과를 확인하고 있습니다,하지만 당신은 하드웨어 문제를 나타내는 것뿐만 아니라'ERROR' (-1), 그것을 확인하지 않습니다. 특정 오류 대신'> 0 '에 대한 결과를 확인하는 것이 좋습니다. –
buffersize가 괜찮 으면 4096을 반환하고 초기화하지 않을 것이며 audiorecord를 사용 권한 목록에 설정 했음 – Geeko