Я хочу записать звук в телефон на 6 секунд с частотой дискретизации 8000 Гц в. WAV - PullRequest
1 голос
/ 06 октября 2019
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 секунд, используя встроенную функцию, передавая параметры, пожалуйста, руководство ...

1 Ответ

0 голосов
/ 06 октября 2019

Вы можете использовать android.os.Handler для запуска некоторого кода с 6-секундной задержкой, используя функцию postDelayed. Документация обработчика

Пример кода:

Handler h = new Handler();
h.postDelayed(() -> {
    // stop the recording here
}, 6 * 1000);

Важным моментом является то, что вы не должны останавливать основной поток на 6 секунд с чем-то вроде Thread.sleep(), потому чтотогда пользовательский опыт пострадает, и система Android покажет диалоговое окно, что приложение не отвечает. Поэтому вам следует запланировать время остановки (т. Е. С помощью обработчика) и позволить основному потоку работать в это время, чтобы пользовательский интерфейс обновлялся и реагировал.

...