3

У меня есть видео плеер, в котором у меня есть две возможности:Android: Автоматический поворот не работает после setRequestedOrientation

  1. Если функция автоматического поворота отключается, и когда пользователь нажимает на полноэкранной кнопку Я заставить orientation к зайдите в landscape, просмотрите с помощью setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE) и вернитесь в портретный режим, когда выйдет полноэкранный режим.

  2. Я переопределил onConfigurationChanged, чтобы обнаружить изменение ориентации, когда функция автоматического поворота активирована пользователем и изменить вид активности в соответствии с ориентацией.

Теперь проблема с этой установкой является то, что если пользователь начать свою деятельность и переходит в полноэкранном режиме и setRequestedOrientation получить вызываются один раз, а затем, когда auto-rotate включена, деятельность не получает изменения ориентации и onConfigurationChanged Безразлично» t вызывается.

Я читаю здесь (https://stackoverflow.com/a/6109206/5167868), что они не будут работать одновременно.

Я хотел бы знать, есть ли способ реализовать оба, как я видел таких игроков, как MX Player сделать это в своем приложении.

+0

Возможно, это связано с тем, что вы вынуждаете портретную ориентацию после выхода из полноэкранного режима. Попробуйте установить не портрет, а автоматическую ориентацию: 'SCREEN_ORIENTATION_SENSOR' –

+0

Но я хочу, чтобы это было в ориентации на портрет, если автоматический поворот отключен. –

+0

Извините, я раньше не был ясным, и я редактировал вопрос. Я имел в виду, что после того, как пользователь включит автоматическое вращение, onConfigurationChanged не вызывается. –

ответ

2

После того, как вы зафиксируете ориентацию экрана с помощью setRequestedOrientation(), функция автоматического поворота не будет работать. Таким образом, чтобы сделать его работу, вы можете сделать что-то вроде этого:

После того, как вы установите ориентацию с помощью: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE)

Зов это: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)

Это должно сделать автоповорот снова работать!