2012-09-04 147 views
1

我正在開發一個android應用程序,其中一個功能是將屏幕方向鎖定到風景,我想將此方向更改應用於手機中的所有android應用程序。我使用此代碼鎖定android屏幕方向到風景

private void lockScreenOrientation() { 
if (!mScreenOrientationLocked) { 
    final int orientation = getResources().getConfiguration().orientation; 
    final int rotation = getWindowManager().getDefaultDisplay().getOrientation(); 
    if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) { 
     if (orientation == Configuration.ORIENTATION_PORTRAIT) { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     } 
     else if (orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     } 
    } 
    else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) { 
     if (orientation == Configuration.ORIENTATION_PORTRAIT) { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT); 
     } 
     else if (orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); 
     } 
    } 

    mScreenOrientationLocked = true; 
} 
} 

private void unlockScreenOrientation() { 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 
mScreenOrientationLocked = false; 
} 

但這是暫時的變化,那並不生效,所有的應用程序,沒有人知道的方式來鎖定方位適用於所有的應用程序?謝謝

+3

這是一個猜測,但我相當確定不可能將所有應用程序鎖定到橫向。 – harism

+0

看看這個應用程序,它的工作方式與我想要的一樣https://play.google.com/store/apps/details?id=com.devasque.rotationlocker&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5kZXZhc3F1ZS5yb3RhdGlvbmxvY2tlciJd – Ahmed

+0

我同意你可能*不應該*能夠......但它顯然是可能的。我在Nexus 7上使用了一個名爲「Set Orientation」的應用程序,它可以強制系統進入任何特定的方向。 – kcoppock

回答

4

像你已鏈接的應用程序通過修改與旋轉關聯的全局系統設置值來完成此操作。查看Settings.System類,瞭解可用於應用程序的常量。具體而言,ACCELEROMETER_ROTATIONUSER_ROTATION值可能會引起您的興趣。

您還需要在清單中聲明android.permission.WRITE_SETTINGS和可能的android.permission.WRITE_SECURE_SETTINGS權限。

+1

與「Rotation Locker」應用程序相比,這些設置更加便於用戶使用,因爲這僅影響應用程序 - 最重要的是 - 不會明確要求縱向模式。 – harism

+0

@Devunwired謝謝,但它實際上鎖定當前的方向沒有別的,沒有影響其他應用程序 – Ahmed