我使用本机应用Tizen Studio为Samsung Galaxy Active 2构建了一个简单的表盘。我已经在脸上添加了一些“健康”信息:计步器和心率监测器。
问:我知道如何设置侦听器和回调,以便在心率(或步数)更改时得到通知,但是我找不到如何仅读取当前/最后读取的HRM值。我知道这是有可能的,因为其他表盘都可以这样做……只是不知道如何。
侦听器/回调方法的代码:
sensor_get_default_sensor(SENSOR_HRM, &sensor);
ret = sensor_create_listener(sensor, &hrmSensorListener);
if( ret != SENSOR_ERROR_NONE)
dlog_print(DLOG_ERROR, LOG_TAG, "failed to get hrm sensor. err = %d", ret);
ret = sensor_listener_set_event_cb(hrmSensorListener, 20000, hrm_sensor_callback, face);
if( ret != SENSOR_ERROR_NONE)
dlog_print(DLOG_ERROR, LOG_TAG, "failed to set hrm sensor listener. err = %d", ret);
sensor_listener_set_option(hrmSensorListener, SENSOR_OPTION_DEFAULT);
sensor_listener_start(hrmSensorListener);
这意味着当表盘开始时,会有一段时间未更新HRM或步数,这有点令人讨厌。
如何读取传感器的当前值?
请尝试使用sensor_listener_read_data方法。根据documentation,此方法获取传感器数据。您可以关注Tizen网站上发布的tutorial。
sensor_get_default_sensor(SENSOR_HRM, &sensor);
ret = sensor_create_listener(sensor, &hrmSensorListener);
if( ret != SENSOR_ERROR_NONE)
dlog_print(DLOG_ERROR, LOG_TAG, "failed to get hrm sensor. err = %d", ret);
ret = sensor_listener_set_event_cb(hrmSensorListener, 20000, hrm_sensor_callback, face);
if( ret != SENSOR_ERROR_NONE)
dlog_print(DLOG_ERROR, LOG_TAG, "failed to set hrm sensor listener. err = %d", ret);
sensor_listener_set_option(hrmSensorListener, SENSOR_OPTION_DEFAULT);
sensor_listener_start(hrmSensorListener);
sensor_event_s event;
sensor_listener_read_data(hrmSensorListener, &event);
我认为上面的代码应该可以帮助您