最近我开始为Tizen OS开发应用程序。我的应用程序仅适用于可穿戴设备,而且仅适用于Samsung Gear Sport(搭载Tizen 3.0)。这个应用程序的主要目的是长时间收集完整的传感器数据。我对心率和运动传感器(陀螺仪和加速度计)感兴趣。然后,这些数据将被发送到云服务器并进行分析。目前,我正在考虑一个WEB应用程序,因为迄今为止我没有发现WEB API缺少任何本地API存在的东西。
但是,在Tizen OS中有一个限制,到目前为止我无法克服。我的应用程序在一段时间后(大约10分钟)会进入睡眠状态。这个应用程序必须在后台长时间工作(长达10小时),这非常重要。为了实现这一目标,我尝试了以下方法:
- 带有background-category的普通Tizen应用程序:这种方法提供的数据仍然太零散了,例如我得到了15分钟的空白时间,其中根本没有记录任何数据。有时甚至有超过30分钟的空白时间。
- Tizen alarms API:闹钟可以保持应用程序处于活动状态,但每次闹钟响起时,应用程序都会被带到前台,这不是一个可接受的解决方案。有一种选项可以静默地唤醒应用程序(使用应用程序控制),但它没有任何回调,因此所有闹钟都必须预先安排。
- CPU_AWAKE标志:让系统显示“此应用程序正在使用太多能量”的弹出窗口,在10分钟左右没有得到答复时,系统仍将杀死我的应用程序。
- Web Workers:这个只是为了论证而已,web workers会和应用程序一起进入睡眠状态。
- 数据记录:我希望得到类似于Apple Health Kit的东西,但实际上我得到的是根本无法在HRM上运行的东西。某种程度上它适用于
PRESSURE
传感器。Tizen允许启动HRM
的录制,但之后没有任何记录 -NotFoundError:无法读取记录的数据
。任何其他传感器均会产生TypeMismatchError
。
关于电池:以上任何一种方法都没有将电池耗尽到无法接受的程度。因此,首先我想找到一个解决方案,可以在至少10小时内尽可能频繁地获取所有传感器数据,而且没有漏洞。之后,如果发现这种解决方案消耗了太多的电池电量,我将考虑如何进行优化。
现在的问题是:是否有可能让我的应用程序连续保持10小时以上不间断运行?