if(checkSelfPermissionFromDevice() )
{
btnRecord.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pathSave= Environment.getExternalStorageDirectory()
.getAbsolutePath()+"/"
+ UUID.randomUUID().toString()+"_audio_record.wav";
mediaRecorder.setAudioChannels(1);
mediaRecorder.setAudioSamplingRate(8000);
mediaRecorder.setAudioEncodingBitRate(44100);
setupMediaRecorder();
try
{
mediaRecorder.prepare();
mediaRecorder.start();
}
catch (IOException e)
{
e.printStackTrace();
}
btnPlay.setEnabled(false);
btnStop.setEnabled(false);
Toast.makeText(MainActivity.this, "Recording...", Toast.LENGTH_SHORT).show();
//add delay of 6 seconds+then stop recording
//Toast.makeText(MainActivity.this, "Stopped Recording", Toast.LENGTH_SHORT).show();
//then enable play button()
btnPlay.setEnabled(true);
btnStop.setEnabled(false);
我想添加 6 秒延迟,以便在此之后我可以停止录制,或者仅通过传递参数使用内置函数录制 6 秒,请指导...
最佳答案
您可以使用 android.os.Handler
使用 postDelayed
函数延迟 6 秒运行一些代码。 Handler Documentation
示例代码:
Handler h = new Handler();
h.postDelayed(() -> {
// stop the recording here
}, 6 * 1000);
一个关键点是,你不应该用 Thread.sleep()
这样的东西暂停主线程 6 秒,因为那样用户体验会受到影响并且 android 系统会显示一个对话框该应用程序没有响应。因此,您应该安排停止时间(即使用处理程序)并让主线程同时运行,以便 UI 更新和响应。
关于java - 我想在 .wav 中以 8000hz 的采样率在 android 手机中录制 6 秒的声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58260880/