在一个表面上,我创建了可以显示时钟时间的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));
方法,但仍然收到上面显示的错误。
答案 0 :(得分:1)
“表盘”类型的CIQ应用程序无法以这种方式访问传感器。相反,您需要使用Activity和/或ActivityMonitor模块中可用的方法。
如果手表设备较新,它将可能支持调用此方法,该方法返回每秒更新的心率值:
Activity.getActivityInfo().currentHeartRate()
否则,您可以调用此方法并使用最新值,该值将是最后一分钟内的心率:
ActivityMonitor.getHeartRateHistory()
在这两种情况下,您都需要检查一个空值,如果传感器不可用或用户没有佩戴手表,则会发生此空值。