翻譯自蘋果官方文檔,譯者:@星夜暮晨,@有情況_R
活動任務讓使用者可以在受限的情況下來實施行動,此時iPhone的傳感器被用來收集數據。舉個例子,一個用來分析步態和平衡的活動任務也許會要求他們的使用者走上幾步,同時iPhone的加速度感應器就會收集相應的樣本數據。
預定義的活動任務
現在發布的版本中,ResearchKit框架包括五個預定義任務,而這五個任務可以歸結成四大類:活動,健康,認知和聲音。下面的表中總結了每一個任務同時表明了他們所收集到的數據。
預定義任務的可選項
你可以在實例化預定義活動任務之一的時候禁用指定或者是自動包含在框架中的完成步驟,通過結合 ORKPredefinedTaskOption 常量。
其他的選項標志可以被用來排除在你的研究中不需要的,特定類型的數據收集。比如,你需要用戶實施健康任務不過不需要使用心率數據,這時我們就可以使用 ORKPredefinedTaskOptionExcludeHeartrate。
健康
在健康任務中 (參見方法 ORKOrderedTask fitnessCheckTaskWithIdentifier:intend edUseDescription:walkDuration:restDuration:options), 使用者走了特定的一段時間 (一般來說是幾分鐘). 傳感器數據通過任務視圖控制器的委托被收集和返回。 傳感器數據一般包括加速計數據,設備移動數據,計步器數據,位置數據,如果有的話,還有心率數據。
在一次走路活動的末期,如果心跳數據還是可以被有效收集的,使用者被要求坐下來休息一段時間,數據收集會在這段休息期間繼續進行。
下面的這些屏幕截圖說明了健康任務可能的樣子
***img
所有數據都由 iOS 公開的 CoreMotion 和 HealthKit API 收集,同時序列化成 JSON 格式。沒有分析適用於 Researchkit 框架相關的數據。
音頻
在一段音頻中(參見方法 ORKOrderedTask audio TaskWithIdentifier:intendedUseDescription:speechInstruction:shortSpeechInstruction:duration:recordingSettings:options), 使用者制造了一段可以被識別的聲音, 之後一段音頻就可以被記錄下來了. 對音頻數據的分析與處理並不在 ResearchKit 框架之中, 不過,本框架可能自然而然的涉及冪頻譜,我們要明白它是如何與制造產生聲音的能力聯系起來。 ResearchKit 框架使用 AVFoundation 框架來收集數據以及產生錄音過程中的相關指示。 沒有任何數據分析與處理是由 ResearchKit 完成的; 你可以按照你的需求在任務中來定義你對音頻的處理。
下面的截屏表示是一個音頻任務的例子
步行與平衡
在步行與平衡任務中 (參見方法 ORKOrderedTask shortWalkTaskWithIdentifier: intendedUseDescription:numberOfStepsPerLeg:restDuration:options), 使用者也許是在室內走了一小段距離。你也許用這種半控制的任務去收集諸如步長,腳步平滑度,走路搖晃程度之類你的程序使用者走路時的客觀數據。使用者也許僅僅是在室內走了一小段距離。你也許用這種半自動的任務來收集客觀可以被用來估計步長,平滑度,擺動幅度以及使用者其他走路方面的數據。
下面的這些屏幕截圖是步行與平衡任務的例子
輕拍速度
在輕拍任務中 (參見方法 ORKOrderedTask twoFingerTappingIntervalTaskWith Identifier:intendedUseDescription:duration:options),使用者快速交替的在觸摸屏上 輕拍兩個目標。觸摸結果的數據可以被用來評定基礎的運動能力,諸如速度,准確性和節奏。
觸摸數據, 以及所有來自 iOS 中 CoreMotion 的加速計數據,是由公共API收集的,沒有數據分析是由 ResearchKit 框架來完成的。
以下的屏幕截圖是輕拍速度任務的例子。
空間記憶
在空間記憶任務中 (查看方法 ORKOrderedTask spatialSpanMemoryTaskWithIdentifier:intendedUseDescription:initialSpan:mini mumSpan:maximumSpan:playSpeed:maxTests:maxConsecutiveFailures:customTargetImage:customTargetPluralName:requireReversal:options:),使用者被要求觀察之後回想起一系列游戲中的持續時間段——比如說環境。任務會收集可以被用於估算視覺空間和執行功能的數據。
持續時間段在任務進行中是自動變化的,在序列成功完成之後增長,同時在失敗的時候下降,在 minimumSpan 和 maximumSpan范圍之間。playSpeed 的屬性可以讓你控制序列播放的速度,customTargetImage 的屬性可以的特性讓你可以定制橫置目標的形狀。游戲在 maxTests 測試結束或者使用者造成 maxConsecutiveFailures 連續錯誤的時候結束。
結果收集由游戲計分,其中游戲的細節,以及觸摸輸入是由使用者自己決定的。
以下的屏幕截圖是一個空間記憶任務的例子
同步系列加法測驗 (PSAT)
在同步系列加法測驗 (PSAT) 任務中 (參見方法 ORKOrderedTask PSATTask WithIdentifier:intendedUseDescription:presentationMode:interStimulusInterval:stimulusDuration:seriesLength:options), 一個數字每隔2-3秒在設備屏幕上出現,同時使用者必須將每個新出現的數字與之前的相加。一個同步系列加法測驗任務計算可以被認為是聽力和視覺信息處理速度的認知功能,靈活度,以及使用者的計算能力。
PSAT任務的的得分是在幾個可能正確的選項之間選出正確答案的和。任務所收集的數據是一種 ORKPSATResult 對象。
以下的屏幕截圖是一個 PSAT 任務的例子。請記住技術視覺和聽覺的部分在任務中是可選的。你可以選擇是否擁有它們。
反應時間
在反應時間任務中 (參見方法 ORKOrderedTask reactionTimeTaskWithIdentifier:intendedUseDescription:maximumStimulusInterval:minimumSt imulusInterval:thresholdAcceleration:numberOfAttempts:timeout:successSound:timeoutSound:failureSound:option), 使用者被要求搖晃或者移動設備以對設備屏幕上的可視化信號做出反應。這個任務被分為幾次來完成(你可以自由定義次數)。為了完成任務中的一個步驟,使用者必須在規定時間內用比在 thresholdAcceleration 屬性內預設值更大的加速度來搖晃/移動設備。這個任務在使用者成功的完成所有任務中預定的次數之後結束。使用這個任務來評估使用者的對刺激的反應同時計算他們的反應時間。
以下的屏幕截圖表現了一個反應時間的例子:
測音
在測音任務中 (參見方法 ORKOrderedTask toneAudiometryTaskWithIdentifier:intendedUseDescription:speechInstruction:shortSpeechInstruction:toneDuration:options:), 使用者被要求聽一些聲音(在運行任務的時候使用連接到設備的耳機)同時當他們聽到與屏幕上按鍵對應的按鈕時,按下這些按鈕。這些聲音有不同的音頻,在不同的聲道(左聲道或者右聲道),同時直到使用者按下按鍵為止都會不斷地增強其音量。測音任務是為了測量使用者不同方面的聽音能力,基於他們對廣范圍內音頻的反應。
在此任務中收集的數據由特定聲音信號振幅由特定音頻與聲道組成
以下的屏幕截圖表現了一個測音任務:
漢諾塔
在漢諾塔任務中 (see the method ORKOrderedTask towerOfHanoiTaskWithIdentifier:intendedUseDescription:numberOfDisks:options:), 使用者被要求用最少的移動數來解決一個傳統的漢諾塔任務。為了解決這個問題,使用者必須將整疊移動到高亮的平台上,同時要求步數最少。這個任務測量了使用者的問題解決技巧。這個任務在使用者成功的解決了漢諾塔任務或者承認他們不能解決這個問題的時候退出。
這個任務中收集的數據的形式是 ORKTowerOfHanoiResult 對象。這中對象之中包含了每次使用者的移動和表達問題是否被解決的標記。
以下的屏幕截圖是一個漢諾塔任務的例子:
計時步行
在計時步行任務之中 (參見方法 ORKOrderedTask timedWalkTaskWithIdentifier:intendedUseDescription:distanceInMeters:timeLimit:options:), 使用者被要求快速而安全的走一段特定長度的路程。如果使用者在相反的方向走了相同的一段距離,這個任務會被立即重新激活。計時步行任務在使用者行走的固定距離這方面不一樣與健康任務和短距離行走任務不一樣。計時步行任務是用來測量使用者的下肢功能的。
此任務收集的數據包括加速計,設備移動,計步器,以及使用者的位置。記住位置信息只有使用者同意你使用他的位置你才能獲取。 由此任務獲取的數據的格式是 ORKTimedWalkResult 對象。
以下的屏幕截圖是計時步行的例子:
收集數據
在活動任務中的數據收集是被記錄在內存裡一個層次的 ORKResult 對象中的。由你來決定來序列化這個層次去存儲亦或是用適合你應用的方式來傳送之。
如果收集的數據太大了,以至於不能在內存中傳送,層次中的ORKFileResult 對象可以替代之前的方法。文件結果是指一個在輸出目錄中的文件(由ORKTaskViewController的屬性 outputDirectory 特殊化的)。舉個例子,有高采樣率的記錄裝置,比如說加速度計,可以這樣直接記錄到文件之中去。
推薦的基於文件的輸出方法是每次任務都創建一個新的目錄,同時在你處理完這個任務的結果之後刪除這個目錄。
活躍步驟支持附加記錄結構,(ORKRecorderConfiguration) 。一個記錄結構定義了一種數據類型,它應當是被從傳感器或者設備上的數據庫的間隔時間這一步驟所收集。比如:
計步器傳感器返回 CMPedometerData 對象,它可以提供由支持設備上協處理器計算出來的步數。
加速度計傳感器返回 CMAccelerometerData 對象,它返回了橫向加速度計采樣出設備所受力的大小的數據。
一個融合采樣的加速度計,陀螺儀以及磁力計的設備運動時會返回 CMDeviceMotion 對象,它提供了有關設備方位和運動的信息。
HealthKit 返回很多樣類型,比如心率。
CoreLocation 返回位置信息,融合了來自 GPS,Wi-Fi 和信號基站的信息。
ResearchKit 中預定義的活躍任務中所采用的記錄裝置一直都是在向內置存儲寫入數據時用 NSFileProtectionCompleteUnlessOpen,之後在改變文件的保護層級,在數據記錄結束的時候生成 NSFileProtectionComplete 。
創建新的活躍任務
你也可以通過你自己自定義類ORKActiveStep 和 ORKActiveStepViewController來創建你自己新的活躍任務。在這樣做的時候,你可以參考 ResearchKit 框架中已經存在的預定義任務例子中的活躍步驟去設計。
在預定義任務中的一些步驟對創建你的任務也會非常有幫助。舉個例子,ORKCountdownStep 表現了一個在過程中有動畫表現形式的倒計時計時器。再舉出另外一個例子,就是 ORKCompletionStep 對象表現出了一個任務結束了。