Android 如何仅录制1分钟的音频?

Android 如何仅录制1分钟的音频?,android,audio,timer,media-player,record,Android,Audio,Timer,Media Player,Record,在我的android应用程序中,我只需要录制1分钟的音频?有人能帮我录音一段时间吗?我已经写了一个录音的代码,它将停止只有当停止按钮被按下,但我需要停止录音后自动1分钟 这是我的密码。。但它不起作用 try { recorder.prepare(); recorder.start(); //Declare the timer Timer t = new Timer();

在我的android应用程序中,我只需要录制1分钟的音频?有人能帮我录音一段时间吗?我已经写了一个录音的代码,它将停止只有当停止按钮被按下,但我需要停止录音后自动1分钟

这是我的密码。。但它不起作用

       try {
             recorder.prepare();

           recorder.start();
         //Declare the timer

           Timer t = new Timer();
           //Set the schedule function and rate
           t.scheduleAtFixedRate(new TimerTask() {

               @Override
               public void run() {

                   runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            Toast.makeText(AudioRecordingActivity.this, "record successfullly ",
                                    Toast.LENGTH_SHORT).show();
                    i1=i1+1;
                        }

                    });


                   //Called each time when 1000 milliseconds (1 second) (the period parameter)
               }

           },
           //Set how long before to start calling the TimerTask (in milliseconds)
           0,
           //Set the amount of time between each execution (in milliseconds)
           10*1000);

           if (null != recorder) {
            recorder.stop();
            recorder.reset();
            recorder.release();

            recorder = null;
            Toast.makeText(AudioRecordingActivity.this, "record successfullly",
                    Toast.LENGTH_SHORT).show();

           }

                } catch (IllegalStateException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
使用下面的代码

recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(getFilename());
recorder.setOnErrorListener(errorListener);
recorder.setOnInfoListener(infoListener);
try {
  recorder.prepare();
  recorder.start();

 new Timer().schedule(new TimerTask() {
  @Override
  public void run() {
    runOnUiThread(new Runnable() {
  @Override
   public void run() {
    if (null != recorder) {
      recorder.stop();
      recorder.reset();
      recorder.release();
      recorder = null;

  }
});
}
}, 60000);
}
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
试试下面的代码

recorder.start();
   new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
        recorder.stop();
         }
                }, 60000);

尝试
recorder.setMaxDuration(60*1000)
或者,如果您需要重复这样做,使用上面的答案,但添加

if (null == recorder)
{
   recorder = new MediaRecorder();
} else recorder.reset();

这种方法更可能:)

为什么不在1分钟后模拟按钮的单击事件?使用此方法recorder.setMaxDuration();但是我不希望那个停止按钮,它会在1分钟后自动停止录制。。。建议code@user3152493,如果有帮助,请接受答案。请参阅此链接以获取参考。