[英]How to temporarilly pause loop
我正在制作一個始終檢測噪音的APP。 並且,當它檢測到很大的噪音時,它將啟動功能。
在執行該功能時,我需要暫時暫停檢測噪音的循環。
我怎樣才能做到這一點?
弄亂我的代碼:
private void readAudioBuffer() {
try {
short[] buffer = new short[bufferSize];
int bufferReadResult;
do {
bufferReadResult = audio.read(buffer, 0, bufferSize);
for (int i = 0; i < bufferReadResult; i++){
if (buffer[i] > lastLevel) {
lastLevel = buffer[i];
}
}
// if sound level is over 20000 start voice recognition
if (lastLevel > 20000){
lastLevel = 0;
// Pause this function:
startVoiceRecognitionActivity();
}
} while (bufferReadResult > 0 && audio.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING);
} catch (Exception e) {
e.printStackTrace();
}
}
基本上添加Thread.sleep(5000); 絕招
try {
short[] buffer = new short[bufferSize];
int bufferReadResult;
do {
bufferReadResult = audio.read(buffer, 0, bufferSize);
for (int i = 0; i < bufferReadResult; i++){
if (buffer[i] > lastLevel) {
lastLevel = buffer[i];
}
}
// if sound level is over 20000 start voice recognition
if (lastLevel > 20000){
lastLevel = 0;
startVoiceRecognitionActivity();
Thread.sleep(5000);
}
} while (bufferReadResult > 0 && audio.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING);
} catch (Exception e) {
e.printStackTrace();
}
}
private void readAudioBuffer() {
try {
short[] buffer = new short[bufferSize];
int bufferReadResult;
do {
while(audio.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING){
//Wait for certain time. If it is in a recording state then it would enter this loop and wait else it would go ahead to check for sound levels.
}
bufferReadResult = audio.read(buffer, 0, bufferSize);
for (int i = 0; i < bufferReadResult; i++){
if (buffer[i] > lastLevel) {
lastLevel = buffer[i];
}
}
// if sound level is over 20000 start voice recognition
if (lastLevel > 20000){
lastLevel = 0;
startVoiceRecognitionActivity();
}
} while (bufferReadResult > 0);
} catch (Exception e) {
e.printStackTrace();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.