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;
}