CanvasWatchFaceservice中的自定义广播接收器



我正在为Android Wear(Minsdkversion = 21和TargetsDkversion = 23)开发一些手表面,并集成了Android的Google Fit API。

我想在背景中进行轮询,以使用给定的 - 用户选择 - 时间间隔,然后将其传递给我的手表脸。因此,我创建了一项服务,该服务扩展了服务类,实现SensoreVentListener,GoogleapicLient ConnectionCallbacks,googleapiclient.onconnectionfailedlistener等,我使用健身API读取适合数据和心脏传感器数据。

i然后使用自定义的broadcastreceiver。

我要实现的目标是始终更新手表面上可用的健身变量,因此当它离开环境或静音模式时,因为用户与之交互,我需要显示的数据已经存在,我只需要要在屏幕上绘制它而无需通过使用健身API读取它,因为它可能需要几秒钟。

它有效。广播接收器在手表面中收到数据,并且可以正确设置可变值。我使用简单的canvas.drawText在屏幕上输出它们。当然,我看到他们以交互式模式更新(观看脸部可见且活动性),当然要根据轮询时间间隔进行更新,甚至在调用OnTimetick时,甚至看到它们以环境模式进行更新,如果我要调试手表面(无论是通过USB还是通过USB)蓝牙)。

我一旦断开调试器,手表面在环境模式下,似乎只是停止收到广播接收器的消息。

我在做什么错?我真的很沮丧。

Android OS完成处理后将杀死背景Service;这是其生命周期的基础。您可以在文档中阅读有关此信息的更多信息。

对于用例,您可能要设置BroadcastReceiver,并在AlarmManager.setExactAndAllowWhileIdle()的轮询间隔触发它。将其滚动到您在WatchFaceService子类中已有的现有BroadcastReceiver可能是有意义的,或者您可能需要创建一个新的Service

另外,我不知道您的投票频率很高,但是在手表睡着时,经常这样做会对电池寿命产生重大影响。只是要记住的事情;当手表已经睡一会儿时,您可能想做频率逐渐减小的事情。

相关内容

  • 没有找到相关文章

最新更新