1

我正在为我的 Garmin FR 920xt 编写一个新小部件……在我看来,我已启用 HRM 并将显示 HR(以及其他信息),但是,似乎需要相当长的时间(30 秒以上)开始显示信息。

有没有办法让我强制它更快地“连接”?

这是我设置视图的代码片段。

function initialize()
{
    Snsr.setEnabledSensors( [Snsr.SENSOR_HEARTRATE] );
    Snsr.enableSensorEvents( method(:onSensor) );
    strHR = "HR: --- bpm";
}
function onSensor(sensorInfo) {
    if( sensorInfo.heartRate != null ) {
        strHR = "HR: " + sensorInfo.heartRate.toString() + " bpm";
    } else {
        strHR = "HR: --- bpm";
    }
    Ui.requestUpdate();
}

正如您所看到的,这是非常初级的......大约 30 秒后,数据确实开始通过。

4

1 回答 1

2

您应该能够比这更快地通过 Activity.Info 结构获取信息。你试过吗?

using Toybox.Activity as Activity;
using Toybox.Timer as Timer;
using Toybox.WatchUi as Ui;

class MyView extends Ui.View {

    hidden var _timer;

    function onShow() {
        _timer = new Timer.Timer();
        _timer.start(method(:onTimer), 1000, true);
    }

    function onUpdate(dc) {
        var info = Activity.getActivityInfo();
        if (info.currentHeartRate != null) {
            // display the heart rate value
        }
        else {
            // display something else
        }
    }

    function onHide() {
        _timer.stop();
        _timer = null;
    }

    function onTimer() {
        Ui.requestUpdate();
    }
}
于 2015-07-06T21:10:39.173 回答