有没有办法检测手表何时处于环境屏幕模式?我制作了表盘并想在环境屏幕模式开启时继续更新时钟(时钟显示在屏幕上),但我想在屏幕关闭时停止更新。onPause
现在,我在和方法中启动和停止更新onResume
,但是onPause
当环境屏幕模式启动时会调用该方法。
谢谢。
要收到环境模式更改的通知,您必须使用DisplayListener
. 你可以在这里找到方法
正常的方式是使用android WearableActivity 并实现onEnterAmbient
and onExitAmbient
.
当然,还有另一种方法,用于DisplayListener
检查显示状态是否为DOZE
或DOZE_SUSPEND
。
您应该AmbientMode.AmbientCallbackProvider
改为实现回调。
它是新的首选方法,它仍然为您提供onEnterAmbient()
, onAmbientUpdate()
, 并且onExitAmbient()
还允许您使用Activity
(或任何子类... FragmentActivity 等)。它还允许您支持架构组件。
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
}
}