2017-05-18 5 views
0

일부 코드 활동을 Android 디스플레이 프레임 속도와 동기화하는 방법을 찾고 있습니다. 이 코드는 간단한 디스플레이 영역의 색상을 설정하는 코드입니다. 이 목적을 위해 활용할 수있는 방법이나 고리가 있습니까?Android 프레임 속도에 동기화하는 방법

매우 빠른 간격으로 실행되는 타이머를 사용할 수는 있지만 프레임 속도에 따라 앨리어싱이 문제가되는 것으로 보입니다. 예를 들어 내 프레임 속도가 60Hz이므로 타이머 간격을 1/60 초로 설정하면 모양이 균일하지 않습니다. 타이머를 정확하게 16.666msec로 설정할 수는 없지만 가능한 경우에도 별칭을 볼 수 있습니다.

감사합니다.

답변

0

일부 검색 및 실험을 한 후에는 콜백 함수를 프레임 속도에 연결하는 방법을 제공하는 Choreographer 클래스를 사용하는 것이 해결책 중 하나입니다. 아래는 코드입니다. 느린 휴대폰에서 타이밍이 엉망인 것으로 나타났습니다. 최근 모델 삼성 전화가 더 잘 수행됩니다.

private FrameCallback frameCallback = null; 
private boolean frameCallbackPending = false; 

public void armVSyncHandler() { 
    if(!frameCallbackPending) { 
     frameCallbackPending = true; 
     if(frameCallback == null) 
     { 
      frameCallback = new FrameCallback() { 
       @Override 
       public void doFrame(long frameTimeNanos) { 
        frameCallbackPending = false; 

        // Do some work here 

        armVSyncHandler(); 
       } 
      }; 
     } 
     Choreographer.getInstance().postFrameCallback(frameCallback); 
    } 
}