【问题标题】:How to implement sensor batching on Tizen如何在 Tizen 上实现传感器批处理
【发布时间】:2020-06-01 14:45:01
【问题描述】:

我需要以批处理方式从 Tizen Wearable(最好是 3.0 或更低版本)上的加速度计获取数据,以获得最大的电池效率。

相关的apidoc is here

我当前的代码如下所示:

static void start_accelerometer() {
    sensor_type_e type = SENSOR_ACCELEROMETER;
    int max_batch_latency = 30000; // 300 is max queue, 100 ms is default period

    if (sensor_get_default_sensor(type, &sensor) == SENSOR_ERROR_NONE)
    {
        if (sensor_create_listener(sensor, &listener) == SENSOR_ERROR_NONE
            && sensor_listener_set_max_batch_latency(listener, max_batch_latency) == SENSOR_ERROR_NONE
            && sensor_listener_set_event_cb(listener, 100, accelerometer_sensor_event_callback, NULL) == SENSOR_ERROR_NONE
            && sensor_listener_set_option(listener, SENSOR_OPTION_ALWAYS_ON) == SENSOR_ERROR_NONE
            )
        {
            if (sensor_listener_start(listener) == SENSOR_ERROR_NONE)
            {
                dlog_print(DLOG_INFO, TAG, "Sensor started");
            }
        }
    }
}

我已经尝试了上述的多种变体(例如将 sensor_listener_set_option 设置为 SENSOR_OPTION_DEFAULT 以使其在显示关闭时暂停,在不设置事件回调和手动读取数据的情况下启动传感器) - 但在所有情况下,我从未从传感器(在回调中或通过sensor_listener_read_data())。我总是只获得最新的数据。

您知道如何从 Tizen 可穿戴设备上的加速度计获取批量数据吗?

附:我正在使用 Galaxy Watch Active 1 进行开发。

【问题讨论】:

    标签: tizen tizen-wearable-sdk tizen-native-app


    【解决方案1】:

    据我所知,物理传感器仅在 AP 进入挂起状态时以批处理方式工作,仅在显示器关闭时发生。 因此,显示器关闭后,请等待 10 到 30 分钟再进行检查。 另外,请设置足够的时间间隔(约 1000 毫秒)以避免过多的刷新。

    最后,使用 sensor_listener_read_data(),您只能获取最新的数据。

    【讨论】:

    • 谢谢 - 我也与三星工程师取得了联系,他们已经准确地说明了你所做的。他们确认我上面的实现是正确的,唯一缺少的是等待 AP 进入挂起状态 - 这主要是因为您无法在通过 sdb 从设备流式传输日志时进行调试 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多