【发布时间】:2014-04-15 14:43:37
【问题描述】:
我正在尝试通过直接调用 android api TJAudioRecord 在 firemonkey 中录制音频,但它不起作用,audioRecord.getState 返回 STATE_UNINITIALIZED 无论我尝试了什么,请帮忙?
这个函数有一些错误
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;
【问题讨论】:
-
您正在检查
getMinBufferSize()的结果是否有ERROR_BAD_VALUE(-2),但您也没有检查它是否有ERROR(-1),这表明存在硬件问题。我建议您检查>0的结果而不是具体错误。 -
buffersize没问题,它返回4096,它不会初始化,而且我在权限列表中打开了audiorecord
标签: android delphi audio firemonkey