0

私はAndroidコードのスニペットを持っています。私の理解では、レコード機能を開始する新しいスレッドがバックグラウンドで作成されます。10秒待ちますが、どうやって録音をやめるのかという質問です。記録関数から、ブールisRecordingがfalseになると停止します。

私の質問は、10秒後に録音がfalseになるということです。

   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Thread thread = new Thread(new Runnable() {
        public void run() {
            isRecording=true;
        record();              //starts to record
        } 
        });
        thread.start();   //thread start


     //=============================================//

        synchronized (this) 
        {

     try {
     wait(10000);

                  //wait for 10second
    } catch (InterruptedException e) {}
        }
    isRecording = false;   

    try {
      thread.join();  //blocks the current thread until the receiver finish execution and dies.
   } catch (InterruptedException e) {}     //interruptedException

   }
  }


   public void record() {


        short[] buffer = new short[bufferSize]; 
        audioRecord.startRecording();

        while (isRecording) {
            int bufferReadResult = audioRecord.read(buffer, 0, bufferSize);
            for (int i = 0; i < bufferReadResult; i++)
            dos.writeShort(buffer[i]);
            }

        audioRecord.stop();
        dos.close();

        } catch (Throwable t) {
        Log.e("AudioRecord","Recording Failed");
        }

}
4

1 に答える 1

1

CountDownTimerを使用します。

new CountDownTimer(10000, // 10 second countdown
9999) // onTick time, not used 
{

     public void onTick(long millisUntilFinished) {
         // Not used
     }

     public void onFinish() {
         isRecording = false;
     }
}.start();
于 2013-03-03T01:22:26.323 に答える