2011-01-07 12 views
2

내 문제를 알려 드리겠습니다. 화면 해상도를 변경하고 싶습니다. 응용 프로그램에서 변경할 수는 있지만 응용 프로그램의 화면 만 변경합니다. 난 응용 프로그램이 앞으로 실행 중인지 중요하지 않으므로 시스템의 해상도를 설정하고 싶습니다. 내 장치의 해상도는 1280 * 720 p로 설정됩니다. 1260 * 680으로 만들 수 있습니까? Android 소스 코드를 변경해야하는 경우 가능합니다. 어디로 갈 지 말해줘. 귀하의 도움을 기다리고 있습니다.프로그래밍 방식으로 화면 해상도를 변경하는 방법?

+0

저는 정확하게 [LCD Density] (http://www.addictivetips.com/mobile/change-android-screen-resolution-with-lcd-density/)를 보았습니다. 내가 그것을 어떻게하는지 알 수 있는지 보아라. – fredley

+0

나의 문제는 밀도가 아니다. 그것은 픽셀에 관한 것입니다. 디스플레이의 실제 크기를 변경하고 싶습니다. – sjor

+1

그런 다음 스탠리 칼을 사용하십시오! – fredley

답변

2

This thread on xda-developers은 올바른 방향으로 설정해야합니다.

+0

Thx. 그러나 밀도를 바꾸고 싶지 않습니다. 디스플레이 크기를 줄이기 위해 실제 픽셀을 변경하고 싶습니다. – sjor

+1

@ user511853 실제 픽셀을 변경하려면 화면을 잘라내어 새 것을 넣어야합니다. [픽셀 밀도] (http://en.wikipedia.org/wiki/Pixel_density)를 변경하면 약속드립니다! – fredley

-3

Windows를 사용하고 있고 JNI를 사용하는 방법을 알고있는 경우 Microsoft는 C++ Win32 함수 호출을 제공하여 ChangeDisplaySettingsEx()EnumDisplaySettings()을 제공합니다.

+0

우리는 Android에 대해 이야기하고 있습니다. –

+3

다른 사용자가 화면 해상도에서 Android 이외의 검색을 사용하여이 스레드에 올 것입니다. 내가 나열한 기능이 도움이 될 것입니다. –

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();} 
} 

프로젝트에 IWindowManager의 감소 AIDL 버전을 추가 : 실험 버그 물건 경고 /응용 프로그램을 /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); 
} 

앱이 시스템에있을 필요는 폴더를 애플 리케이션. 분명히 뭔가를하지만, 지금은 심각한 버그로 이어질 수도 있습니다. 재부팅하면 변경 사항이 취소 된 것으로 보입니다.

이에 대한 의견이 있으 십니다.

관련 문제