我有一个Activity
,用于记录Activity
前置摄像头的视频。通过以下代码将方向锁定在AndroidManifest.xml
文件中的纵向:
<activity
android:name=".activity.SomeVideoActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="Video Activity"
android:screenOrientation="portrait" />
如果用户第一次进入屏幕,这样可以正常工作。但是,在离开此活动并返回此活动后,显然可以重新启用横向模式。
我设法通过以下代码块强制定位来挽救这种情况:
@Override
protected void onResume() {
super.onResume();
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
所以我很好奇为什么这只发生在这一项活动上。我已经检查了onActivityResult
的其他活动,并且他们根本没有弄乱方向设置。
更新:
实际上这个问题是通过使用this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
来解决的,因为我的唯一目的是将活动锁定为纵向并禁用横向旋转。我只想理解为什么在SomeVideoActivity
中从另一个活动返回后重新启用轮换,即使它在AndroidManifest
中被声明为纵向方向。
答案 0 :(得分:0)
将清单添加到您的活动代码android:screenOrientation =&#34; portrait&#34;这会阻止您的活动被轮换。
答案 1 :(得分:0)
这篇文章有点旧,但我有同样的问题(或类似的)。如果设备处于横向模式,则在完成活动时,屏幕将旋转为横向,然后返回纵向(在清单中强制执行)。
这是方案
setRequestedOrientation 对我不起作用。我做的一个小改动是在收到结果后立即完成活动A,而是通过 postDelayed 调用延迟50ms。这很好。
new Handler().postDelayed(this::finish, 50);
还是有点奇怪。当你完成多个活动而它们之间没有间隔时,它似乎是一个Android错误。或者就在您使用Camera API时,可能是竞争条件。无论如何,我只是在这里张贴这个以防其他人面临同样的问题。