Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想在安卓手机上录制一段6秒钟的声音,采样率为8000hz in.wav_Java_Android_Audio_Mediarecorder - Fatal编程技术网

Java 我想在安卓手机上录制一段6秒钟的声音,采样率为8000hz in.wav

Java 我想在安卓手机上录制一段6秒钟的声音,采样率为8000hz in.wav,java,android,audio,mediarecorder,Java,Android,Audio,Mediarecorder,我想添加6秒延迟,这样我可以在之后停止录制,或者只通过传递参数使用内置函数录制6秒。请引导…您可以使用android.os.Handler使用postDelayed函数以6秒延迟运行一些代码 示例代码: Handler h=new Handler(); h、 延迟后(()->{ //在这里停止录音 }, 6 * 1000); 关键的一点是,你不应该用类似于thread.sleep()的东西暂停主线程6秒钟,因为这样会影响用户体验,android系统会显示一个应用程序没有响应的对话框。因此,您应

我想添加6秒延迟,这样我可以在之后停止录制,或者只通过传递参数使用内置函数录制6秒。请引导…

您可以使用
android.os.Handler
使用
postDelayed
函数以6秒延迟运行一些代码

示例代码:

Handler h=new Handler();
h、 延迟后(()->{
//在这里停止录音
}, 6 * 1000);

关键的一点是,你不应该用类似于
thread.sleep()
的东西暂停主线程6秒钟,因为这样会影响用户体验,android系统会显示一个应用程序没有响应的对话框。因此,您应该安排停止时间(即使用处理程序),并让主线程在这段时间内运行,以便UI得到更新和响应。

我可以将输出文件保存在.WAV中吗?比如mediaRecorder.setOutputFormat(mediaRecorder.OutputFormat.WAV);MediaRecorder不支持.wav我猜我猜不支持wav,因为在中没有提到它,但我绝对不是这个领域的专家。有没有像我们使用库一样在运行时转换为.wav的方法?
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);