如何在Tizen上实现传感器批处理?

问题描述 投票:0回答:1

我需要从Tizen可穿戴设备(最好是3.0或以下)上分批获取加速度计的数据,以实现电池效率的最大化。

相关的 apidoc在这里.

我目前的代码是这样的。

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可穿戴设备上的加速度计获取批量数据吗?

P.S.我正在使用Galaxy Watch Active 1进行开发。

tizen tizen-wearable-sdk tizen-native-app
1个回答
1
投票

据我所知,物理传感器只有在AP进入暂停状态时才会以批处理的方式工作,只有在显示屏关闭时才会发生.所以,在显示屏关闭后,请等待10到30分钟再进行检查.另外,请设置足够的时间间隔(约1000ms),以避免过多的刷新。

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

© www.soinside.com 2019 - 2024. All rights reserved.