让我告诉你我的问题。我想改变我的屏幕分辨率。 我可以在应用程序中更改它,但它只更改应用程序 屏幕。我想设置系统的分辨率,因此它不重要 应用程序正在运行。我的设备的分辨率设置为1280 * 720 p。我可以制作1260 * 680吗?如果需要进行更改 Android源代码,我可以。告诉我在哪里改变。等待 你的帮助。
答案 0 :(得分:2)
This thread on xda-developers应该让你走上正轨。
答案 1 :(得分:0)
搜索一个有效的答案,但我找到了解决方案: 警告实验性错误的东西:
/*
Requires android.permission.WRITE_SETTINGS
and android.permission.WRITE_SECURE_SETTINGS, thus it requires the app to be a system app.
*/
public void changeResolution(int x, int y){
try { Class c = Class.forName("android.os.ServiceManager");
try { Method method = c.getDeclaredMethod("checkService", String.class);
try {
IWindowManager mWindowManager = IWindowManager.Stub.asInterface((IBinder) method.invoke(null,Context.WINDOW_SERVICE));
try { mWindowManager.setForcedDisplaySize(Display.DEFAULT_DISPLAY,x,y);
} catch (RemoteException e) {e.printStackTrace();}
} catch (IllegalAccessException e) {e.printStackTrace();}
catch (InvocationTargetException e) {e.printStackTrace();}
} catch (NoSuchMethodException e) {e.printStackTrace();}
} catch (ClassNotFoundException e) {e.printStackTrace();}
}
将减少的AIDL版本的IWindowManager添加到您的项目中: /app/src/main/aidl/android/view/IWindowManager.aidl
package android.view;
interface IWindowManager
{
boolean startViewServer(int port); // Transaction #1
boolean stopViewServer(); // Transaction #2
boolean isViewServerRunning(); // Transaction #3
void setForcedDisplaySize(int displayId, int width, int height);
void clearForcedDisplaySize(int displayId);
void setForcedDisplayDensity(int displayId, int density);
void clearForcedDisplayDensity(int displayId);
}
该应用需要位于系统应用文件夹中。 它确实做了一些事情,但现在它也导致了严重的错误。 重新启动似乎取消了更改。
等待对此的反馈。
答案 2 :(得分:-3)
如果您使用的是Windows并且知道如何使用JNI,Microsoft会提供C ++ Win32函数调用来执行此操作:ChangeDisplaySettingsEx()和EnumDisplaySettings()。