anr*_*r78 5 android android-windowmanager surfaceflinger android-displaymanager
我正在尝试更改 Android 8.1 上主显示器的显示分辨率。我从内核收到一个事件(基于 EDID),告诉我需要更改模式。
然后我基本上做:
sp<IBinder> display(SurfaceComposerClient::getBuiltInDisplay(ISurfaceComposer::eDisplayIdMain));
status_t res = SurfaceComposerClient::setActiveConfig(display, new_mode);
Run Code Online (Sandbox Code Playgroud)
这会正确更新 SurfaceFlinger、显示 hal 和内核,但 windowmanager/display 不会更改分辨率,直到我运行:
wm size 1920x1080
wm density 240
Run Code Online (Sandbox Code Playgroud)
但是 wm 调用这些函数,这看起来有点太苛刻了,并且还将尺寸/密度存储在持久设置中:
public void setForcedDisplaySize(int displayId, int width, int height);
public void setForcedDisplayDensityForUser(int displayId, int density, int userId);
Run Code Online (Sandbox Code Playgroud)
我一直在查看 windowmanager/display 中的代码,但没有找到我应该用于此目的的 API。
有没有办法通知 windowmanager/display 有关 surfaceflinger 的更改,或者我错过了可以使用的 API?
我是否以错误的方式处理这个问题?有没有一种正确的方法可以改变主显示器的分辨率/模式,但我还没有找到?
| 归档时间: |
|
| 查看次数: |
868 次 |
| 最近记录: |