Android: Auto Rotate not working after setRequestedOrientation
Asked Answered
H

1

8

I have a video player in which I have two features:

  1. If the auto-rotate is disabled and when the user clicks on fullscreen button I force the orientation to go in landscape view using setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE) and back to portrait view when fullscreen is exited.

  2. I have overridden the onConfigurationChanged to detect the change in orientation when the auto-rotate feature is enabled by user and change the activity view according to the orientation.

Now the problem with this setup is that if user start the activity and goes in fullscreen and setRequestedOrientation get invoked once, later when auto-rotate is enabled, the activity doesn't receive the orientation changes and the onConfigurationChanged doesn't get called.

I read here (https://mcmap.net/q/149974/-onconfigurationchanged-not-getting-called) that they wont work simultaneously.

I would like to know if there a way of implementing both as I have seen players like MX Player do this in their app.

Hillie answered 17/2, 2017 at 12:24 Comment(5)
that might be because you force portrait orientation after exitting fullscreen. Try setting not portrait, but automatical orientation: SCREEN_ORIENTATION_SENSORIngenious
But I want it to be in Portrait Orientation if the auto-rotate is disabled.Hillie
Sorry I wasnt clear earlier and I edited the question. I meant after the user enables auto-rotation, the onConfigurationChanged is not called.Hillie
check https://mcmap.net/q/798152/-toggling-fullscreen-amp-orientation-like-youtube?answertab=active#tab-topCollarbone
@SuhasShelar did you find a solution?Kef
B
3

After you fix the orientation of the screen by using setRequestedOrientation(), Auto Rotate feature won't work. So to make it work, you may do something like this:

After you set your orientation using: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE)

Call this: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)

This shall make the auto rotate to work again!

Brady answered 30/4, 2017 at 9:36 Comment(1)
Doesn't work, my screen changes to landscape and then back to portrait immediately.Scamander

© 2022 - 2024 — McMap. All rights reserved.