2014-11-28 15 views
1

시계가 주변 화면 모드에있을 때 감지하는 방법이 있습니까? 시계 모드로 설정하고 주변 화면 모드가 켜져있을 때 (시계가 화면에 표시됨) 시계를 업데이트하려고하지만 화면이 꺼져있을 때 업데이트를 중지하고 싶습니다. 지금은 및 onResume 메서드에서 업데이트를 시작 및 중지하지만 주변 화면 모드가 켜지면 메서드가 호출됩니다.Android Wear가 주변 화면 모드를 감지합니다.

감사합니다.

답변

1

앰비언트 모드가 변경되었다는 알림을 받으려면 DisplayListener을 사용해야합니다. 당신은 here

+0

Android Wear는이 onEnterAmbient와 onExitAmbient와 WearableActivity에 내장했다. – codingjeremy

+0

죄송합니다. 너무 빨리 말하면서 더 나은 접근 방식을 추가했습니다 (AmbientMode.AmbientCallbackProvider). 나는 아래에 세부 사항을 설명했다. – codingjeremy

1

일반적인 방법은 안드로이드 WearableActivity을 사용하고 onEnterAmbientonExitAmbient을 구현하는 것을 할 수있는 방법을 찾을 수 있습니다.

그리고 다른 이유가 있습니다. DisplayListener를 사용하여 표시 상태가 DOZE인지 DOZE_SUSPEND인지 확인합니다.

0

대신 AmbientMode.AmbientCallbackProvider 콜백을 구현해야합니다.

이 새로운 선호하는 방법이며, 그것은 여전히 ​​당신에게 onEnterAmbient(), onAmbientUpdate()onExitAmbient()을 제공하지만, 또한 당신이 Activity (또는 하위 클래스 ... FragementActivity 등)을 사용할 수 있습니다. 또한 Architecture 구성 요소를 지원할 수 있습니다.

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 
    } 
}