Я бил головой о проблему в течение последних нескольких дней. Вот что я пытаюсь выполнить:Как настроить ORKOrderedTask с несколькими ORKAudioSteps в ResearchKit?
Я хотел бы представить ORKOrderedTask, состоящий из нескольких AudioStep, каждый шаг показывает предложение, которое пользователь произнесет. Конечно, ORKOrderedTask.audioTask отлично, но эта предварительно сконфигурированная задача дает только одно звуковое приглашение. Я хочу, чтобы пользователь мог записать предложение, нажать следующий, записать следующий, нажать следующий и т. Д.
Проблема, с которой я столкнулся: Когда я пытаюсь реализовать свою собственную OrderedTask с несколькими ORKAudioSteps , шаг всегда сообщает «TOO LOUD» независимо от того, что я делаю, с формой волны, отображающей полные красные полосы.
Соответствующий код:
var steps = [ORKStep]()
let instructionStep = ORKInstructionStep(identifier: "IntroStep")
instructionStep.title = "Speech Task"
instructionStep.text = "Placeholder"
steps += [instructionStep]
let countdownStep = ORKCountdownStep(identifier: "CountdownStep")
countdownStep.stepDuration = 5
steps += [countdownStep]
let recordingSettings = [
AVFormatIDKey : kAudioFormatAppleLossless,
AVNumberOfChannelsKey : 2,
AVSampleRateKey: 44100.0
] as [String : Any]
for (index, sentence) in sentences.enumerated() {
let audioStep = ORKAudioStep(identifier: "AudioStep\(index)")
audioStep.title = sentence
audioStep.stepDuration = 5
audioStep.shouldContinueOnFinish = true;
let config = ORKAudioRecorderConfiguration(identifier: "Recorder\(index)", recorderSettings: recordingSettings)
audioStep.recorderConfigurations?.append(config)
steps += [audioStep]
}
return ORKOrderedTask(identifier: "SpeechTask", steps: steps)
// And the viewController creation function elsewhere in the application
func presentTask(task: ORKOrderedTask) {
let taskViewController = ORKTaskViewController(task: task, taskRun: nil)
taskViewController.outputDirectory = URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])
taskViewController.delegate = self
self.present(taskViewController, animated: true, completion: nil)
}
(Приговоры это просто массив строк подсказок членов предложения)
Мои мысли: Я подозреваю, что эта ошибка связана с тем, как я работат ь записи или выходной каталог. Каталог вывода назначается в ViewController, которому задан этот OrderedTask. Я использовал ORKOrderedTask.audioTask в ORKOrderedTask.m как ссылку для создания ORKAudioStep, но, очевидно, я делаю то, что делает Recorder несчастным.
Спасибо за ваше время.