下面列出了android.view.Display#getRefreshRate ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/** Returns whether now is an appropriate time to perform animations. */
private boolean shouldAnimate() {
if (!mAnimationEnabled) {
return false;
}
Display display = currentDisplay();
if (display == null) {
return false;
}
if (mVisibleStartTime <= 0) {
return false;
}
long threshold = (long) (1000 / display.getRefreshRate());
long millisVisible = elapsedRealtime() - mVisibleStartTime;
return millisVisible > threshold;
}
private void updateDefaultDisplayRefreshRateParams() {
// Note: If we fail to update the parameters, we leave them set to their previous values.
Display defaultDisplay = windowManager.getDefaultDisplay();
if (defaultDisplay != null) {
double defaultDisplayRefreshRate = defaultDisplay.getRefreshRate();
vsyncDurationNs = (long) (C.NANOS_PER_SECOND / defaultDisplayRefreshRate);
vsyncOffsetNs = (vsyncDurationNs * VSYNC_OFFSET_PERCENTAGE) / 100;
}
}
private void updateDefaultDisplayRefreshRateParams() {
// Note: If we fail to update the parameters, we leave them set to their previous values.
Display defaultDisplay = windowManager.getDefaultDisplay();
if (defaultDisplay != null) {
double defaultDisplayRefreshRate = defaultDisplay.getRefreshRate();
vsyncDurationNs = (long) (C.NANOS_PER_SECOND / defaultDisplayRefreshRate);
vsyncOffsetNs = (vsyncDurationNs * VSYNC_OFFSET_PERCENTAGE) / 100;
}
}
private void updateDefaultDisplayRefreshRateParams() {
// Note: If we fail to update the parameters, we leave them set to their previous values.
Display defaultDisplay = windowManager.getDefaultDisplay();
if (defaultDisplay != null) {
double defaultDisplayRefreshRate = defaultDisplay.getRefreshRate();
vsyncDurationNs = (long) (C.NANOS_PER_SECOND / defaultDisplayRefreshRate);
vsyncOffsetNs = (vsyncDurationNs * VSYNC_OFFSET_PERCENTAGE) / 100;
}
}
public void init(Context context, FrameDataCallback callback) {
// getInstance our choreographer callback and register it
fpsFrameCallback = new FPSFrameCallback(fpsConfig, callback);
Choreographer.getInstance().postFrameCallback(fpsFrameCallback);
Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
fpsConfig.deviceRefreshRateInMs = 1000f / display.getRefreshRate();
fpsConfig.refreshRate = display.getRefreshRate();
}
/**
* Obtains the approximate refresh time, in nanoseconds, of the default display associated
* with the activity.
* <p>
* The actual refresh rate can vary slightly (e.g. 58-62fps on a 60fps device).
*/
public static long getDisplayRefreshNsec(Activity activity) {
Display display = ((WindowManager)
activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
double displayFps = display.getRefreshRate();
long refreshNs = Math.round(1000000000L / displayFps);
Log.d(TAG, "refresh rate is " + displayFps + " fps --> " + refreshNs + " ns");
return refreshNs;
}
private void updateDefaultDisplayRefreshRateParams() {
// Note: If we fail to update the parameters, we leave them set to their previous values.
Display defaultDisplay = windowManager.getDefaultDisplay();
if (defaultDisplay != null) {
double defaultDisplayRefreshRate = defaultDisplay.getRefreshRate();
vsyncDurationNs = (long) (C.NANOS_PER_SECOND / defaultDisplayRefreshRate);
vsyncOffsetNs = (vsyncDurationNs * VSYNC_OFFSET_PERCENTAGE) / 100;
}
}
/**
* Obtains the approximate refresh time, in nanoseconds, of the default display associated
* with the activity.
* <p>
* The actual refresh rate can vary slightly (e.g. 58-62fps on a 60fps device).
*/
public static long getDisplayRefreshNsec(Activity activity) {
Display display = ((WindowManager)
activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
double displayFps = display.getRefreshRate();
long refreshNs = Math.round(1000000000L / displayFps);
Log.d(TAG, "refresh rate is " + displayFps + " fps --> " + refreshNs + " ns");
return refreshNs;
}
private void updateDefaultDisplayRefreshRateParams() {
// Note: If we fail to update the parameters, we leave them set to their previous values.
Display defaultDisplay = windowManager.getDefaultDisplay();
if (defaultDisplay != null) {
double defaultDisplayRefreshRate = defaultDisplay.getRefreshRate();
vsyncDurationNs = (long) (C.NANOS_PER_SECOND / defaultDisplayRefreshRate);
vsyncOffsetNs = (vsyncDurationNs * VSYNC_OFFSET_PERCENTAGE) / 100;
}
}
/**
* The natural screen refresh rate, in hertz. May not always return the same value if a display
* has a dynamic refresh rate.
*/
public static float getDisplayRefreshRate(@NonNull Context context) {
Display display = ServiceUtil.getWindowManager(context).getDefaultDisplay();
return display.getRefreshRate();
}
/**
* configures the fpsConfig to the device's hardware
* refreshRate ex. 60fps and deviceRefreshRateInMs ex. 16.6ms
* @param context
*/
private void setFrameRate(Context context){
Display display = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
fpsConfig.deviceRefreshRateInMs = 1000f/display.getRefreshRate();
fpsConfig.refreshRate = display.getRefreshRate();
}
/**
* configures the fpsConfig to the device's hardware
* refreshRate ex. 60fps and deviceRefreshRateInMs ex. 16.6ms
* @param context
*/
private void setFrameRate(Context context){
Display display = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
fpsConfig.deviceRefreshRateInMs = 1000f/display.getRefreshRate();
fpsConfig.refreshRate = display.getRefreshRate();
}