Android Wear检测环境屏幕模式

时间:2014-11-28 07:51:02

标签: android wear-os watch ambient

有没有办法检测手表何时处于环境屏幕模式?当环境屏幕模式开启时(屏幕上显示时钟),我制作一个表盘,并希望继续更新时钟,但我想在屏幕关闭时停止更新。目前,我使用onPauseonResume方法启动和停止更新,但在环境屏幕模式启用时调用onPause方法。

感谢。

3 个答案:

答案 0 :(得分:1)

要通知环境模式已更改,您必须使用DisplayListener。 您可以找到执行此操作的方法here

答案 1 :(得分:1)

通常的方法是使用android WearableActivity并实现onEnterAmbientonExitAmbient

原因是,还有另一种方法,使用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
    }
}