Android 如何仅录制1分钟的音频?
在我的android应用程序中,我只需要录制1分钟的音频?有人能帮我录音一段时间吗?我已经写了一个录音的代码,它将停止只有当停止按钮被按下,但我需要停止录音后自动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();
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,如果有帮助,请接受答案。请参阅此链接以获取参考。