有没有办法检测手表何时处于环境屏幕模式?当环境屏幕模式开启时(屏幕上显示时钟),我制作一个表盘,并希望继续更新时钟,但我想在屏幕关闭时停止更新。目前,我使用onPause
和onResume
方法启动和停止更新,但在环境屏幕模式启用时调用onPause
方法。
感谢。
答案 0 :(得分:1)
要通知环境模式已更改,您必须使用DisplayListener
。
您可以找到执行此操作的方法here
答案 1 :(得分:1)
通常的方法是使用android WearableActivity并实现onEnterAmbient
和onExitAmbient
。
原因是,还有另一种方法,使用DisplayListener
检查显示状态是DOZE
还是DOZE_SUSPEND
。
答案 2 :(得分:0)
您应该实施AmbientMode.AmbientCallbackProvider
回调而已。
这是新的首选方法,它仍然为您提供onEnterAmbient()
,onAmbientUpdate()
和onExitAmbient()
,但也允许您使用Activity
(或任何子类.. .FragementActivity等)。它还允许您支持架构组件。
Official docs call out the details (and example code):
public class MainActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
/*
* Declare an ambient mode controller, which will be used by
* the activity to determine if the current mode is ambient.
*/
private AmbientMode.AmbientController mAmbientController;
…
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
mAmbientController = AmbientMode.attachAmbientSupport(this);
}
...
…
@Override
public AmbientMode.AmbientCallback getAmbientCallback() {
return new MyAmbientCallback();
}
…
private class MyAmbientCallback extends AmbientMode.AmbientCallback {
@Override
public void onEnterAmbient(Bundle ambientDetails) {
// Handle entering ambient mode
}
@Override
public void onExitAmbient() {
// Handle exiting ambient mode
}
@Override
public void onUpdateAmbient() {
// Update the content
}
}