2015-01-04 5 views
3

Android 공식 시계 API를 사용 중이며 애니메이션 중에 2 초 동안 화면을 켜고 싶습니다. 그러면 애니메이션이 진행되는 동안 화면이 주변 모드로 전환되지 않습니다. 애니메이션이 끝났습니다. 다시 모든 것을 정상으로 되돌리고 싶습니다. 가능합니까? 내 클래스는 CanvasWatchFaceService 확장 나는 또한 CanvasWatchFaceService.Engine 확장하고 그래서 나는이에 비슷한 싶지만 시계 모드에 대한 : 그런 다음이Android Wear watchface 화면 유지

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

:

명시 적 계기를 개최 할 필요가
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON). 

답변

3

잠금 : http://developer.android.com/reference/android/os/PowerManager.WakeLock.html

애니메이션을 끝내면 화면을 켜고 해제하는 잠자기 잠금 장치를 가져옵니다.

여기 깨어있는 장치를 유지에 대한 문서입니다 : https://developer.android.com/training/scheduling/wakelock.html

을 그리고 여기 예입니다

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); 

WakeLock wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, 
     "WatchFaceWakelockTag"); // note WakeLock spelling 

wakeLock.acquire(); 
+0

감사를 이 방법으로 작업했지만 단 한 가지 우려가 있습니다. PowerManager.SCREEN_BRIGHT_WAKE_LOCK이 사용되지 않으며 다른 대안이 있습니까? – sam

+0

나는 현재 어떤 것도 모르고있다. – gruszczy

0

또한에 화면을 유지하는 방법 "(참) setKeepScreenOn"를 사용할 수 있습니다, 한 OnCreate에서

private RelativeLayout rLayout; 

() 원하는 레이아웃을 얻을 : 당신이 말할 수있는 (루트) RelativeLayout의가있는 애니메이션은 장소 소요

final WatchViewStub stub = (WatchViewStub)        
    findViewById(R.id.watch_view_stub); 
stub.setOnLayoutInflatedListener(new  
    WatchViewStub.OnLayoutInflatedListener() { 
     @Override 
     public void onLayoutInflated(WatchViewStub stub) { 

// rLayout가 다시 애니메이션 그럼 당신은 (false)를 setKeepScreenOn에 애니메이션 상 AnimationListener을 설정할 수 있습니다

rLayout = (RelativeLayout) stub. 
        findViewById(R.id.your_layout); 
      relativeLayout.setKeepScreenOn(true); 

일어난다있는 루트 레이아웃입니다 :

yourAnimation.setAnimationListener(new 
    Animation.AnimationListener() { 
     @Override 
     public void onAnimationStart(Animation animation) { 

     } 

     @Override 
     public void onAnimationEnd(Animation animation) { 
      if(animation.hasEnded()) 
       rLayout.setKeepScreenOn(false); 
     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 

     } 
        });