我正在使用AudioRecord。
要求是我必须产生一个音调并播放音调0.25秒。之后,录音应自动开始并持续10秒钟。 10秒后,应停止录音。
我编写了代码来生成音调并录制和播放音频。
但是我无法按照所需的时间对其进行排序。由于RecordThread:overflow或java.lang.RuntimeException,我面临线程问题:无法在未调用Looper.prepare()的线程内创建处理程序。
genTone(Constants.HEART_TONE_FREQ);
playToneInPhone();
Thread recordThread = new Thread(new Runnable() {
@Override
public void run() {
isRecording=true;
recordingTimer = new RecordingTimer(10000,1000);
recordingTimer.start();
startRecording();
}
});
try {
recordThread.sleep(250);
recordThread.start();
} catch(InterruptedException ie) {
}
RecordingTimer是一个CountDownTimer。有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
为什么不使用带有Handler
功能的postDelayed
来实现此目的。它将在主UI线程上运行,因此将强制进行同步。
我可以提供一些示例实现,如果这会有帮助吗? :)
答案 1 :(得分:0)
我在线程启动后通过puttin recordingTimer修复了上述问题。如果还有其他更好的方法,请告诉我。
genTone(Constants.HEART_TONE_FREQ);
playToneInPhone();
Thread recordThread = new Thread(new Runnable() {
@Override
public void run() {
isRecording=true;
startRecording();
}
});
try {
recordThread.sleep(250);
recordThread.start();
recordingTimer = new RecordingTimer(10000,1000);
recordingTimer.start();
} catch(InterruptedException ie) {
}
答案 2 :(得分:0)