数秒後にオーディオレコード機能を停止しようとしています。録音は機能しますが、一定の時間が経過しても停止しません。
これらの項目を onClick と、呼び出される関数の try 部分に配置しようとしましたが、同じ結果が得られるたびに、アプリは実行を続けます。
stackoverflow や他のサイトを見回して、スレッド、ハンドラー postDelayed、タイマーについてさまざまなアイデアを試しましたが、うまくいきません。
以下のコードから audiorecord を削除して、デュレーション設定だけに集中しました。コードは、私が試した最後の項目にあります。
助けていただければ幸いです。
public void onClick(View v) {
recordStarted=true;
recordAudio();
final Runnable stopRecording = new Runnable() {
public void run() {
recordStarted=false;
}
};
handler.postDelayed(stopRecording, 3000);
//Start the delay of stopping the recordin
}
public void recordAudio () {
try {
while(recordStarted) {
counter++;
} catch (Throwable t) {
Log.e("AudioRecord", "Recording Failed");
t.printStackTrace();
}
String counterS = String.valueOf(counter);
Toast.makeText(Main.this, "counter = " + counterS, Toast.LENGTH_SHORT).show();
}