Garmin-Watchface:如何显示心跳率?

时间:2019-07-11 13:29:47

标签: garmin connectiq

在一个表面上,我创建了可以显示时钟时间的ConnectIQ(4.30),但是当我尝试显示心率时,我得到了错误

  

详细信息:模块“ Toybox.Sensor”不适用于“表盘”

     

堆栈:     -/Users/…/source/_garmin_projectAPP.mc:onStart():13 0x10000095需要权限

在清单中,我添加了所有可用的权限,还导入了传感器

  

使用Toybox.Sensor

我也不确定在何处启用心率传感器,例如。

from django.utils.decorators import classonlymethod

def tell_middleware(**kwargs):
    def wrapper(class_view):
        def as_view(cls, **initkwargs):
            view = super(cls, cls).as_view(**initkwargs)
            for k, v in kwargs.items():
                setattr(view, k, v)
            return view
        return type(class_view.__name__, (class_view,), {
            'as_view': classonlymethod(as_view),
        })
    return wrapper


@tell_middleware(my_attribute='something')
class MyView(View):
    pass


class MyMiddleware:

    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        return self.get_response(request)

    def process_view(self, request, view_func, view_args, view_kwargs):
        my_attribute = getattr(view_func, 'my_attribute', 'default value')
        if my_attribute == 'something':
            # Do something

我尝试了from django.utils.decorators import classonlymethod def expose_to_middleware(*args): def wrapper(class_view): def as_view(cls, **initkwargs): view = super(cls, cls).as_view(**initkwargs) for attr in args: setattr(view, attr, getattr(class_view, attr) return view return type(class_view.__name__, (class_view,), { 'as_view': classonlymethod(as_view), }) return wrapper @expose_to_middleware('my_attribute', 'my_other_attribute') class MyView(View): my_attribute = 'something' my_other_attribute = 'else' unexposed_attribute = 'foobar' class MyMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): return self.get_response(request) def process_view(self, request, view_func, view_args, view_kwargs): my_attribute = getattr(view_func, 'my_attribute', 'default value') if my_attribute == 'something': # Do something Sensor.setEnabledSensors([Sensor.SENSOR_HEARTRATE]); Sensor.enableSensorEvents(method(:onSensor)); 方法,但仍然收到上面显示的错误。

1 个答案:

答案 0 :(得分:1)

“表盘”类型的CIQ应用程序无法以这种方式访问​​传感器。相反,您需要使用Activity和/或ActivityMonitor模块中可用的方法。

如果手表设备较新,它将可能支持调用此方法,该方法返回每秒更新的心率值:

Activity.getActivityInfo().currentHeartRate()

否则,您可以调用此方法并使用最新值,该值将是最后一分钟内的心率:

ActivityMonitor.getHeartRateHistory()

在这两种情况下,您都需要检查一个空值,如果传感器不可用或用户没有佩戴手表,则会发生此空值。