java - 我想在 .wav 中以 8000hz 的采样率在 android 手机中录制 6 秒的声音

标签 java android audio mediarecorder

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/

相关文章:

java - 为什么 Integer.parseInt() 从字符串值中删除 0?

android - 如何修复 Android 错误 "Background execution not allowed: receiving Intent {...}"

java - 设置 JAVA_HOME 变量时出现问题

jquery - 控制音量并在点击时播放 .mp3 (div)

java - 将各种 editText 传递给另一个 Activity

java - 使用 Jackson 和 Spring 将 JavaScript 数组反序列化为 Java LinkedHashSet 不会删除重复项

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure

安卓应用大小

html - 2013年常见的html5音频格式?

android - MediaPlayer getProgess-不正确的值