最近,我开始为Tizen操作系统开发。我的应用程序只为可穿戴和特定的设备创建,这是三星齿轮运动(Tizen3.0船上)。此应用程序的主要目的是在很长一段时间内收集完整的传感器数据。我对心率和运动传感器(陀螺仪和加速度计)很感兴趣。然后,将这些数据发送到云服务器并进行分析。目前,我正在考虑WEB应用程序,因为到目前为止,我还没有发现任何证据表明WEB缺少存在于本机API中的内容。
但是Tizen中有一个限制是我至今无法克服的。我的应用程序会在一段时间后(大约10分钟)进入睡眠状态。这是至关重要的,这个应用程序应该在后台工作很长时间(多达10个小时)。为了实现这一点,我尝试了以下方法:
PRESSURE传感器。Tizen允许开始为HRM录制,但是在- NotFoundError: Failed to read recorded data之后没有任何记录.任何其他传感器都会给TypeMismatchError。关于电池:上述任何一项都没有把电池耗尽到不能接受的程度。因此,首先,我想找到一个解决方案,给我所有我需要的传感器数据,尽可能多地从至少10个小时开始,没有漏洞。在那之后,如果这个解决方案消耗了太多的电池,我会考虑如何优化它。
现在的问题是:是否可以让我的应用程序不间断地运行10+?
发布于 2018-09-26 14:56:47
我花了好几个星期试图找到这个问题的解决办法。我最近接触到的无时无刻不在工作的应用程序是创建多包应用程序(也称为混合应用程序),其中包括:
所有的应用都是针对Tizen 2.3.1的。这是关键部分,因为3.0 API存在多个问题,比如操作系统意外地杀死了应用程序,或者提示“电池使用量过大”,有时也会导致我的应用程序被杀死。Tizen操作系统的有趣之处在于,当它由于过多的资源使用而杀死了手表脸应用程序时,手表的主屏幕就是纯黑色的。不幸的是,针对API 2.3.1导致无法使用在此版本之后添加的多个API。
接下来,我在所有本地服务应用程序中都使用了device_power_request_lock(POWER_LOCK_CPU, 0);。我相信使用旧的API (2.3.1而不是3.0)可以使应用程序在不被系统杀死的情况下工作得更长。我认为这是我利用过的Tizen版本中的一个缺陷。
在WEB应用程序中,我使用了ScreenStateChangeListener和timetick来检查服务应用程序是否正在运行。如果不是->,它是由WEB应用程序启动的。对于服务和监视面之间的通信,我使用了preferences监听器API。Watch face应用程序负责检查哪些服务正在运行,哪些服务需要唤醒或启动。
最后,我使用了与WEB应用程序一起打包的4个本地服务应用程序。每个服务应用程序都有自己的目的,比如文件系统、网络、监控等等。多线程服务应用程序确实很难维护,并且经常因为未知的原因而崩溃。
发布于 2018-06-12 09:47:07
如果您的目标是本机ServiceAppAPI3.0,请获得以下内容:
device_power_request_lock(POWER_LOCK_CPU, 0);
sensor_listener_set_option(listener, SENSOR_OPTION_ALWAYS_ON);
sensor_listener_set_attribute_int(listener, SENSOR_ATTRIBUTE_PAUSE_POLICY, SENSOR_PAUSE_NONE);不要忘记在清单中设置背景类别(传感器+位置,如果需要的话),否则Tizen会在10分钟后杀死你的应用程序。
当然,几乎没有任何一件事情被正确地记录下来..。
https://stackoverflow.com/questions/49752776
复制相似问题