Xamarin.Forms Как отображать индикатор прогресса во время записи / воспроизведения звука - PullRequest
0 голосов
/ 11 декабря 2018

Я хотел бы отобразить индикатор прогресса во время записи звука в моем приложении.Количество времени, выделенное для записи, предварительно определено.Я установил это в коде, скажем, максимальное время записи 10 секунд, но пользователь может остановить запись за меньшее время, и, конечно, индикатор прогресса остановится и перезагрузится.

Я пытался сделать этоработать правильно, не могли бы вы дать несколько советов.Примечание. Я использую пакет nuget NateRickard AudioRecorder.

if (!recorder.IsRecording)
                {
                    buttonRecord.IsEnabled = false;
                    buttonPlay.IsEnabled = false;

                    DependencyService.Get<IAudioService>().PrepareRecording();

                    // start recording
                    var recordTask = await recorder.StartRecording();

                    // set up progress bar
                    //progressBarRecordTime.Progress = 1.0;
                    //await progressBarRecordTime.ProgressTo(1.0, 10000, Easing.Linear);

                    buttonRecord.Text = "Stop Recording";
                    buttonRecord.IsEnabled = true;

                    // get the recorded file
                    var recordedAudioFile = await recordTask;                       

                    buttonRecord.Text = "Record";
                    buttonPlay.IsEnabled = true;

                    if (recordedAudioFile != null)
                    {
                        var recordingFileDestinationPath = Path.Combine(FileSystem.AppDataDirectory, AppConstants.CUSTOM_ALERT_FILENAME);

                        if (File.Exists(recordingFileDestinationPath))
                        {
                            File.Delete(recordingFileDestinationPath);
                        }

                        File.Copy(recordedAudioFile, recordingFileDestinationPath);
                    }
                }

1 Ответ

0 голосов
/ 12 декабря 2018

Поместите ActivityIndicator (назовите его ind ) в свой код xaml (просмотр)

В верхней части кода выше:

        ind.IsRunning = true;
        //
        if (!recorder.IsRecording)
        //

когда вы закончите, добавьте это ниже вашего кода

//
        }

        File.Copy(recordedAudioFile, recordingFileDestinationPath);
    }
}
ind.IsRunning = false;
...