其他分享
首页 > 其他分享> > 在android中记录特定时间段的语音

在android中记录特定时间段的语音

作者:互联网

我有两个按钮,一个用于开始录制,另一个用于停止录制.
我在录制声音和存储在sdcard中获得成功:

现在我想要的是,如果我在15秒之前按下停止按钮,我应该保持原样,但是如果录制时间超过15秒,它将自动停止录制并将录制的文件存储在SD卡中:

我的录音代码在这里:

**

public void startRecording(View view) throws IOException {
        startButton.setEnabled(false);
        stopButton.setEnabled(true);
        File sampleDir = Environment.getExternalStorageDirectory();
        try {
            //audiofile = File.createTempFile("sound", ".aac", sampleDir);
            audiofile = File.createTempFile("sound", ".m4a", sampleDir);
        } catch (IOException e) {
            Log.e(TAG, "sdcard access error");
            return;
        }
        recorder = new MediaRecorder();
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
        recorder.setOutputFile(audiofile.getAbsolutePath());
        recorder.prepare();
        recorder.start();


    }

**

而停止记录是

public void stopRecording(View view) {

        startButton.setEnabled(true);
        stopButton.setEnabled(false);
        recorder.stop();
        recorder.release();

    } 

我该怎么办 ?

解决方法:

基本上,您将需要为此实现TimeTask.

 if (view.getId() == R.id.stop) {
            new Timer().schedule(new TimerTask() {

                @Override
                public void run() {
                    runOnUiThread(new Runnable() {

                        @Override
                        public void run() 
                        {
                            mediaRecorder.stop();
                            mediaRecorder.reset();
                            mediaRecorder.release();
                        }
                    });

                }
            }, 15000); <-- Execute code after 15000 ms i.e after 15 Seconds.

        }

标签:audio-recording,audio,android
来源: https://codeday.me/bug/20191101/1981989.html