如何锁定android屏幕方向

如何锁定android屏幕方向,android,Android,我正在制作一个Android视频播放器。它的功能类似于用户可以在任何方向观看视频。我只使用以下代码: Settings.System.putInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 1); 它可以工作,但当我添加一个用户可以锁定方向的函数时,我只是这样做了: Settings.System.putInt(getContentResolver(), Settings.System.ACCELEROMETER

我正在制作一个Android视频播放器。它的功能类似于用户可以在任何方向观看视频。我只使用以下代码:

Settings.System.putInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 1);
它可以工作,但当我添加一个用户可以锁定方向的函数时,我只是这样做了:

Settings.System.putInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0);
所以我遇到了一些麻烦。当我处于横向方向并尝试锁定方向时,屏幕只会变成纵向。 有人能解决它吗?或者告诉我另一种处理方法

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);


此处的更多信息:

根据您的条件更改if else语句使用以下代码

int currentOrientation = getResources().getConfiguration().orientation;
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) 
     {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
     }
 else {
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
       }

您可以在活动中设置任何人的横向或纵向。在屏幕旋转过程中,横向或纵向不会改变

<activity android:name="MyActivity"
 android:screenOrientation="landscape"
 android:configChanges="keyboardHidden|orientation|screenSize">
  ...
</activity>

...

在您的AndroidManifest.xml中,为每个活动放置

android:screenOrientation="landscape"

它强制活动横向展开。

只需在manifest.xml文件中添加以下属性即可

android:screenOrientation="portrait"
这样,

<activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>


你可以请求屏幕定位。你可以这样使用它

// For landscape
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
 //OR for portrait 
 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
//OR reverse landscape
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
 //OR for reverse portrait
 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
在ActivityInfo.screenOrientation中使用的方向常量

在API级别1中添加 此活动希望运行的首选屏幕方向。从screenOrientation属性中,屏幕方向未指定、屏幕方向横向、屏幕方向纵向、屏幕方向用户、屏幕方向后方、屏幕方向传感器、屏幕方向传感器、屏幕方向传感器横向、屏幕方向传感器纵向、,屏幕方向\u反转\u横向、屏幕方向\u反转\u纵向、屏幕方向\u全方位传感器、屏幕方向\u用户\u横向、屏幕方向\u用户\u纵向、屏幕方向\u全方位用户、屏幕方向\u锁定、


但横向不是唯一的,它有一个相反的方向。我说得对吗?是的,因为纵向将是
ActivityInfo。屏幕\u方向\u传感器\u纵向
,但它仍然可以通过旋转180°来改变窗口方向。当我在横向时,你的代码可以工作,但不能完全工作。有了你的代码,它保持横向方向。但当我把手机反转时,方向也会反转,但不会锁定。也许你不明白我的意思。我应该提供一个按钮给用户,他们可以打开旋转功能或不。所以更新答案也没用。我确实做了,它作为我的第一条评论。这是保持方向的一种方式。但我不能这样做。你可以从这里学习@dieyidezui@RahmatAryanto这不是他想要的。他需要应用程序保持在横向,即使方向被锁定@我知道,我会编辑它,但我会给他帮助。对不起,我不想一直锁定方向。我可以打开旋转功能,也可以不打开。当他们关闭旋转时,屏幕方向不会改变。这不是他想要的。他需要应用程序保持在横向,即使方向被锁定!
// For landscape
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
 //OR for portrait 
 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
//OR reverse landscape
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
 //OR for reverse portrait
 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);