2013-12-16 33 views
0

我想讓用戶選擇將手機的方向設置爲自動,縱向或橫向。這意味着整個手機的方向不僅僅是我的應用程序。每個其他應用程序也必須具有橫向方向。這是非常簡單的事情前兩個這樣安卓鎖定系統方向風景(不只是我的應用程序)

畫像:

Settings.System.putInt(this.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0); 

汽車:

Settings.System.putInt(this.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 1); 

,但我不能找到一種方法,它設置爲橫向。我想設置所有的應用程序來橫向,而不僅僅是我的。我在這裏看到它可以完成,但它沒有提供很多信息。 How to make Android system force LANDSCAPE for all apk?。任何人願意解釋或提供代碼片段?

回答

1

代碼可以迫使你的屏幕爲橫向模式。這與將其設置爲其他模式相似。

public class MyService extends Service { 
    private boolean mViewAdded = false; 

    private WindowManager.LayoutParams mLayoutParams; 
    private View mOverlayView; 
    private WindowManager mWindowManager; 

    // Call this some where in your code 
    private void setLandscapeOrientation() { 
     mWindowManager = ((WindowManager)getSystemService("window")); 
     mOverlayView = new View(this); 
     mLayoutParams = new WindowManager.LayoutParams(); 
     mLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR; 
     mLayoutParams.width = 0; 
     mLayoutParams.height = 0; 
     mLayoutParams.flags = mLayoutParams.flags | 
      WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED | 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
      WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; 
     mLayoutParams.flags = mLayoutParams.flags & 
      ~WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON & 
      ~WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; 
     mLayoutParams.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; 
     if (mViewAdded) { 
      mWindowManager.updateViewLayout(mOverlayView, mLayoutParams); 
     } else { 
      mWindowManager.addView(mOverlayView, mLayoutParams); 
      mViewAdded = true; 
     } 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 

     if (mViewAdded) { 
      mWindowManager.removeView(mOverlayView); 
      mViewAdded = false; 
     } 
    } 
} 
0

在AndroidManifest.xml中,對於每一個活動把

android:screenOrientation="landscape" 

它迫使活動景觀下面

+0

我說PHONE的方向不是我的應用程序的方向。這意味着每個其他應用都必須具有橫向導向 – Anonymous

相關問題