tizen - 如何在 Tizen 上实现传感器批处理
问题描述
我需要以批量方式从 Tizen Wearable(理想情况下为 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 可穿戴设备上的加速度计获取批量数据吗?
PS 我正在使用 Galaxy Watch Active 1 进行开发。
解决方案
据我所知,物理传感器仅在AP进入挂起状态时才以批处理方式工作,仅在显示器关闭时才会发生。因此,显示屏关闭后,请等待 10 到 30 分钟再进行检查。另外,请设置足够的时间间隔(大约 1000 毫秒)以避免过多的刷新。
最后,使用 sensor_listener_read_data(),您只能获取最新数据。
推荐阅读
- java - 如何解决错误“错误的编码值方法类型大小 7”
- node.js - async.parallel 不等待并行函数
- angular6 - 单击角度 8 中的购物车图标后如何显示添加的产品详细信息
- java - 部署的应用程序在 AWS 服务器上选择通用时间而不是本地时间
- excel - 来自多个 csv 文件的数据未在 Excel 中合并
- android - Android Studio:在不同的活动中使用 ImageButton
- ios - 生产应用程序崩溃报告
- javascript - 从 Javascript/HTML 调用 Java
- swift - 设备倒置时 UIDevice.current.orientation 不一致
- java - 如何创建数组列表
Spigot 1.12.2 - Java 8?