Android13设置屏幕刷新率

Android13基础上,想在系统的设置中开发一个切换屏幕刷新率功能,目前可以获取到当前设备支持的刷新率,但是应该如何设置呢,调用哪些Android13支持的方法可以设置屏幕刷新率呢。


```java
// 获取 DisplayManager 实例
            DisplayManager displayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE);

            // 获取默认 Display 对象
            Display display = displayManager.getDisplay(Display.DEFAULT_DISPLAY);

            // 获取 Display.Mode 对象数组
            Display.Mode[] modes = display.getSupportedModes();

            // 遍历 Display.Mode 对象数组,查找与目标刷新率相匹配的模式
            Display.Mode targetMode = null;
            for (int i = 0; i < modes.length; i++) {
                if (modes[i].getRefreshRate() == targetRefreshRate) {
                    targetMode = modes[i];
                    break;
                }
            }
  
   //AS中可以简单完成这个功能的demo

```

获取DisplayManager对象

DisplayManager displayManager = context.getSystemService(DisplayManager.class);

获取当前设备支持的刷新率列表

Display display = getWindowManager().getDefaultDisplay();
Display.Mode[] modes = display.getSupportedModes();


切换到需要的刷新率

for (Display.Mode mode : modes) {
    if (mode.getRefreshRate() == targetRefreshRate) {
        displayManager.setPreferredDisplayModeId(display, mode.getModeId());
        break;
    }
}

完整的切换屏幕刷新率的方法示例代码:

private void switchRefreshRate(float targetRefreshRate) {
    DisplayManager displayManager = context.getSystemService(DisplayManager.class);
    Display display = getWindowManager().getDefaultDisplay();

    Display.Mode[] modes = display.getSupportedModes();
    for (Display.Mode mode : modes) {
        if (mode.getRefreshRate() == targetRefreshRate) {
            displayManager.setPreferredDisplayModeId(display, mode.getModeId());
            break;
        }
    }
}