android - WearOS 始终开启模式无法在设备上运行
问题描述
我是 WearOS 的新手,我需要开发一个活动跟踪应用程序。我从 Google 为 Always-on 应用程序提供的示例开始。在模拟器中一切正常,从这个跟踪中可以看出:
2020-05-27 15:44:11.003 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590587051002(false)
2020-05-27 15:44:12.002 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590587052002(false)
2020-05-27 15:44:13.003 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590587053003(false)
2020-05-27 15:44:14.003 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590587054002(false)
2020-05-27 15:44:14.587 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: Ambient: onEnterAmbient
2020-05-27 15:44:14.587 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590587054587(true)
2020-05-27 15:44:20.002 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590587060002(true)
2020-05-27 15:44:30.003 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590587070003(true)
2020-05-27 15:44:40.002 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590587080002(true)
2020-05-27 15:44:50.005 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590587090005(true)
2020-05-27 15:44:50.095 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: Ambient: onExitAmbient
2020-05-27 15:44:50.096 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590587090096(false)
2020-05-27 15:44:51.002 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590587091002(false)
2020-05-27 15:44:52.002 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590587092002(false)
2020-05-27 15:44:53.002 4296-4296/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590587093002(false)
但是当我在真实设备(Suunto 7、WearOS 2.17)上尝试时,它不起作用。当我转动手腕时,应用程序没有进入环境模式,它给出了这个错误Error on detecting ambient animation
,而不是调用onEnterAmbient()
它只是调用onPause()
. 一旦我点击显示屏,就会调用 onResume()。完整的跟踪在这里:
2020-05-27 16:34:41.002 13984-13984/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590590081001(false)
2020-05-27 16:34:42.002 13984-13984/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590590082002(false)
2020-05-27 16:34:43.001 13984-13984/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590590083001(false)
2020-05-27 16:34:44.002 13984-13984/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590590084001(false)
2020-05-27 16:34:45.002 13984-13984/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590590085002(false)
2020-05-27 16:34:45.657 13984-13984/com.example.android.wearable.wear.alwayson D/MainActivity: onPause()
2020-05-27 16:34:45.755 13984-13984/com.example.android.wearable.wear.alwayson E/ViewRootImpl[MainActivity]: Error on detecting ambient animation
2020-05-27 16:34:50.339 13984-13984/com.example.android.wearable.wear.alwayson W/ViewRootImpl[MainActivity]: Dropping event due to no window focus: MotionEvent { action=ACTION_HOVER_ENTER, actionButton=0, id[0]=0, x[0]=99.78022, y[0]=99.78022, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=221271754, downTime=221262644, deviceId=2, source=0x1002 }
2020-05-27 16:34:50.362 13984-13984/com.example.android.wearable.wear.alwayson W/ViewRootImpl[MainActivity]: Dropping event due to no window focus: MotionEvent { action=ACTION_HOVER_MOVE, actionButton=0, id[0]=0, x[0]=99.78022, y[0]=99.78022, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=221271754, downTime=221262644, deviceId=2, source=0x1002 }
2020-05-27 16:34:50.375 13984-13984/com.example.android.wearable.wear.alwayson W/ViewRootImpl[MainActivity]: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=99.78022, y[0]=99.78022, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=221271791, downTime=221262644, deviceId=2, source=0x1002 }
2020-05-27 16:34:50.377 13984-13984/com.example.android.wearable.wear.alwayson I/chatty: uid=10078(com.example.android.wearable.wear.alwayson) identical 2 lines
2020-05-27 16:34:50.379 13984-13984/com.example.android.wearable.wear.alwayson W/ViewRootImpl[MainActivity]: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=99.78022, y[0]=99.78022, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=221271791, downTime=221262644, deviceId=2, source=0x1002 }
2020-05-27 16:34:50.387 13984-13984/com.example.android.wearable.wear.alwayson W/ViewRootImpl[MainActivity]: Dropping event due to no window focus: MotionEvent { action=ACTION_HOVER_ENTER, actionButton=0, id[0]=0, x[0]=99.78022, y[0]=99.78022, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=221271792, downTime=221262644, deviceId=2, source=0x1002 }
2020-05-27 16:34:50.389 13984-13984/com.example.android.wearable.wear.alwayson W/ViewRootImpl[MainActivity]: Dropping event due to no window focus: MotionEvent { action=ACTION_HOVER_MOVE, actionButton=0, id[0]=0, x[0]=99.78022, y[0]=99.78022, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=221271792, downTime=221262644, deviceId=2, source=0x1002 }
2020-05-27 16:34:50.391 13984-13984/com.example.android.wearable.wear.alwayson W/ViewRootImpl[MainActivity]: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=99.78022, y[0]=99.78022, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=221271805, downTime=221262644, deviceId=2, source=0x1002 }
2020-05-27 16:34:50.394 13984-13984/com.example.android.wearable.wear.alwayson I/chatty: uid=10078(com.example.android.wearable.wear.alwayson) identical 2 lines
2020-05-27 16:34:50.395 13984-13984/com.example.android.wearable.wear.alwayson W/ViewRootImpl[MainActivity]: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=99.78022, y[0]=99.78022, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=221271805, downTime=221262644, deviceId=2, source=0x1002 }
2020-05-27 16:34:50.503 13984-13984/com.example.android.wearable.wear.alwayson D/MainActivity: onResume()
2020-05-27 16:34:50.507 13984-13984/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590590090507(false)
2020-05-27 16:34:51.002 13984-13984/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590590091002(false)
2020-05-27 16:34:52.002 13984-13984/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590590092002(false)
2020-05-27 16:34:53.002 13984-13984/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590590093001(false)
2020-05-27 16:34:54.001 13984-13984/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590590094001(false)
2020-05-27 16:34:55.001 13984-13984/com.example.android.wearable.wear.alwayson D/MainActivity: loadDataAndUpdateScreen(): 1590590095001(false)
难道我做错了什么?该代码正是谷歌在此处提供的代码。关于如何解决它的任何线索?谢谢
解决方案
我发现了问题。要使此模式正常工作,必须在 Settings -> Display -> Always-on screen 中将显示设置为始终开启。这并不是我真正想要的,因为 Suunto 应用程序可以在不激活此模式的情况下实现这一点,但我想这是因为它是一个系统应用程序。
推荐阅读
- scala - Scala反射:我可以看看某物是否是(案例)对象吗?
- animation - Vuetify - 对话框关闭/动画结束处理
- python-3.x - Python 中类的两个实例共享相同的变量
- google-analytics - 跟踪代码管理器查找表将逗号更改为小数点
- c# - 无法在此 ref ClassName (byRef) 方法上使用类功能 C# 7.2
- angularjs - 从 angularjs 中的服务更新集合时触发 $onChanges 钩子
- sql - 优化 Oracle 查询
- docker - 将 docker 卷挂载到主机路径
- microcontroller - How to the same DMA Stream with different DMA channel on the Cortex-M7(STM32F746)?
- php - Merge multiple arrays into one with unique values php