Skip to content

確認所有掃描條件均已通過

為確保測評的準確性,請務必在啟動掃描之前確保所有掃描條件均已滿足。例如,假設我們有一個「開始」按鈕,則應僅在所有掃描條件都傳回 true(即所有條件均已通過)時啟用該按鈕。

目標 SDK

JavaScript
React
Vue
Flutter
ReactNative
Android
iOS

TIP 提示

您可以參考 範例程式碼API 參考 以了解更多詳情。最相關的 API 包括:VideoFrameProcessedEventScanConditions

首先,在 HTML 檔案中新增一個「開始掃描」按鈕,並將其預設為停用:

html
<!-- 開始按鈕 -->
<button id="startButton" disabled>開始掃描</button>

根據條件檢查結果啟用或停用開始按鈕:

typescript
/* 更新 onload 事件處理函數 */
window.onload = () => {
    /* 在「設定相機」步驟中建立的相機的引用。 */
    const cam = createVitalSignCamera({ isActive: true, config, userInfo })

    /* 取得「開始」按鈕 HTML 元素的引用 */
    const startButton = document.querySelector('#startButton')!;
    
    // ...

    /* 更新 onVideoFrameProcessed 回呼函數 */
    cam.onVideoFrameProcessed = (event: VideoFrameProcessedEvent) => {
        // ...
        
        /* 條件檢查結果的引用,您應該已經擁有該引用,以便在 UI 上可視化結果 */
        const conditions = event.scanConditions;

        /* 如果所有條件都滿足,則啟用「開始」按鈕,否則停用它 */
        const allConditionsPassed = allConditionsCheckPassed(conditions);
        allConditionsPassed ? startButton.removeAttribute('disabled') : startButton.setAttribute('disabled', '');
    }
}

function allConditionsCheckPassed(conditions: ScanConditions | undefined) {
    if (conditions === undefined)
        return false;
    if (!conditions.centered)
        return false;
    if (!conditions.distance)
        return false;
    if (!conditions.lighting)
        return false;
    if (!conditions.movement)
        return false;
    if (!conditions.frameRate)
        return false;
    if (!conditions.serverReady)
        return false;
    return true;
}
js
/* 更新 onload 事件處理函數 */
window.onload = () => {
    /* 在「設定相機」步驟中建立的相機的引用。 */
    const cam = createVitalSignCamera({ isActive: true, config, userInfo })

    /* 取得「開始」按鈕 HTML 元素的引用 */
    const startButton = document.querySelector('#startButton');
    
    // ...

    /* 更新 onVideoFrameProcessed 回呼函數 */
    cam.onVideoFrameProcessed = (event) => {
        // ...

        /* 條件檢查結果的引用,您應該已經擁有該引用,以便在 UI 上可視化結果 */
        const conditions = event.scanConditions;

        /* 如果所有條件都滿足,則啟用「開始」按鈕,否則停用它 */
        const allConditionsPassed = allConditionsCheckPassed(conditions);
        allConditionsPassed ? startButton.removeAttribute('disabled') : startButton.setAttribute('disabled', '');
    }
}

function allConditionsCheckPassed(conditions) {
    if (conditions === undefined)
        return false;
    if (!conditions.centered)
        return false;
    if (!conditions.distance)
        return false;
    if (!conditions.lighting)
        return false;
    if (!conditions.movement)
        return false;
    if (!conditions.frameRate)
        return false;
    if (!conditions.serverReady)
        return false;
    return true;
}