Я работаю над приложением, которое изменяет часть макета в зависимости от ориентации устройства. Я использую
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
для автоматического поворота моей активности на основе датчика устройства. Мой onConfigurationsChanged метод
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (controllerView != null) {
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// Load Landscape Layout
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
// Load Portrait Layout
}
}
}
AndroidManifest:
<activity
android:name=".MyActivity"
android:configChanges="keyboardHidden|orientation|screenSize" />
Проблема:
onConfigurationsChanged работает нормально каждый раз, когда меняется ориентация устройства, но проблема в том, что, скажем, устройство находится в режиме альбомной ориентации, и я блокирую экран, затем, когда я снова разблокирую экран, устройство автоматически переключается в портретный режим, если я поворачиваю устройство, чтобы включить альбомную ориентацию. В этом режиме экран поворачивается, но onConfigurationsChanged () не вызывается, поэтому в альбомном режиме отображается портретный режим.