Android 显示刷新频率

android11-release

开发者选项->显示刷新频率

packages/apps/Settings/src/com/android/settings/development/ShowRefreshRatePreferenceController.java

调用 SurfaceFlinger::onTransact 中 1034 方法
updateShowRefreshRateSetting() 通过 SurfaceFlinger 获取 mRefreshRateOverlay != nullptr 判断显示是否打开
writeShowRefreshRateSetting(boolean isEnabled) 设置打开显示刷新频率

public class ShowRefreshRatePreferenceController extends DeveloperOptionsPreferenceController        implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin {    private static final String SHOW_REFRESH_RATE_KEY = "show_refresh_rate";    private static final int SETTING_VALUE_QUERY = 2;    private static final int SETTING_VALUE_ON = 1;    private static final int SETTING_VALUE_OFF = 0;    @VisibleForTesting    static final String SURFACE_FLINGER_SERVICE_KEY = "SurfaceFlinger";    @VisibleForTesting    static final int SURFACE_FLINGER_CODE = 1034;    private static final String SURFACE_COMPOSER_INTERFACE_KEY = "android.ui.ISurfaceComposer";    private final IBinder mSurfaceFlinger;    public ShowRefreshRatePreferenceController(Context context) {        super(context);        mSurfaceFlinger = ServiceManager.getService(SURFACE_FLINGER_SERVICE_KEY);    }    @Override    public String getPreferenceKey() {        return SHOW_REFRESH_RATE_KEY;    }    @Override    public boolean onPreferenceChange(Preference preference, Object newValue) {        final boolean isEnabled = (Boolean) newValue;        writeShowRefreshRateSetting(isEnabled);        return true;    }    @Override    public void updateState(Preference preference) {        updateShowRefreshRateSetting();    }    @Override    protected void onDeveloperOptionsSwitchDisabled() {        super.onDeveloperOptionsSwitchDisabled();        final SwitchPreference preference = (SwitchPreference) mPreference;        if (preference.isChecked()) {            // Writing false to the preference when the setting is already off will have a            // side effect of turning on the preference that we wish to avoid            writeShowRefreshRateSetting(false);            preference.setChecked(false);        }    }    @VisibleForTesting    void updateShowRefreshRateSetting() {        // magic communication with surface flinger.        try {            if (mSurfaceFlinger != null) {                final Parcel data = Parcel.obtain();                final Parcel reply = Parcel.obtain();                data.writeInterfaceToken(SURFACE_COMPOSER_INTERFACE_KEY);                data.writeInt(SETTING_VALUE_QUERY);                mSurfaceFlinger.transact(SURFACE_FLINGER_CODE, data, reply, 0 /* flags */);                final boolean enabled = reply.readBoolean();                ((SwitchPreference) mPreference).setChecked(enabled);                reply.recycle();                data.recycle();            }        } catch (RemoteException ex) {            // intentional no-op        }    }    @VisibleForTesting    void writeShowRefreshRateSetting(boolean isEnabled) {        try {            if (mSurfaceFlinger != null) {                final Parcel data = Parcel.obtain();                data.writeInterfaceToken(SURFACE_COMPOSER_INTERFACE_KEY);                final int showRefreshRate = isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF;                data.writeInt(showRefreshRate);                mSurfaceFlinger.transact(SURFACE_FLINGER_CODE, data,                        null /* reply */, 0 /* flags */);                data.recycle();            }        } catch (RemoteException ex) {            // intentional no-op        }        updateShowRefreshRateSetting();    }}

RefreshRateOverlay 实际Layer显示刷新频率

frameworks\native\services\surfaceflinger\SurfaceFlinger.cppframeworks\native\services\surfaceflinger\RefreshRateOverlay.cpp

初始化 RefreshRateOverlay,通过 SurfaceFlinger createLayer显示

到此这篇关于Android 显示刷新频率的实现代码的文章就介绍到这了,更多相关android刷新频率内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

更多相关文章

  1. android原生音乐播放器界面字体显示不全
  2. android子线程中刷新界面控件
  3. Android(安卓)控件的显示和隐藏
  4. android 中让activity全屏幕显示
  5. android 中让activity全屏幕显示
  6. LinearLayout、RelativeLayout、FrameLayout居中显示
  7. ImageView.setScalType参数详解
  8. Android(安卓)取出 图片以字节形式存放到数据库的数据,并将图片显
  9. Android(安卓)TextView里显示两种颜色

随机推荐

  1. android中 MediaStore提取缩略图和原始图
  2. 安卓巴士Android开发神贴整理
  3. Android滑动手势侦测方法介绍
  4. Android:EditText学习总结
  5. Android 数据存储之文件存储小记
  6. Android UI设计——EditText控件
  7. android 快速入门之一 “Hello world”,以
  8. 3.EditText控件
  9. Android:BottomNavigationView设置noActio
  10. android:configChanges