Ориентация не обновляется после разблокировки устройства в react-native- android

Я разрабатываю одно приложение, на самом деле мое приложение показывает альбомную и портретную ориентацию на вкладках / iPad. Но в планшетах (iPad работает нормально), когда я проверял, что функция ориентации работает нормально, пока не разблокирует устройство. Когда я заблокировал экран в определенном режиме, например (портрет / пейзаж), после этого повернул устройство, показывающее до ориентации. Не обновлять нынешнюю ориентацию.

Я перешел по этой ссылке: https://github.com/yamill/react-native-orientation

это мой код:

componentWillMount(){
this.getOrientationtype()
}

getOrientationtype(){
    //alert("Hello")
    if(Platform.OS == 'ios'){  // to Identifying Android or iOS
     if(aspectRatio>1.6){  // Code for Iphone
       // alert("phone")
        Orientation.lockToPortrait()
       }
       else{
         Orientation.getOrientation((err, initial) => {
          if(initial != 'UNKNOWN'){
            this.setState({
              orientation:initial
            }) 
          }
          else{
            this.setState({
              orientation:'PORTRAIT'
            })
          }
        });

       }
     }
     else{

     if(DeviceInfo.isTablet()){
         // alert("android tab")
         Orientation.getOrientation((err, initial) => {
          if(initial != 'UNKNOWN'){
            this.setState({
              orientation:initial
            }) 
          }
          else{
            this.setState({
              orientation:'PORTRAIT'
            })
          }
        });
      }
      else{
        Orientation.lockToPortrait()
      }
     }
  }

Пожалуйста, узнайте это решение .... Я использую эту ссылку введите здесь описание ссылки


person Lavaraju    schedule 05.09.2017    source источник


Ответы (1)


1. Вы должны использовать Orientation.addOrientationListener для прослушивания событий ориентации.

2. Как видно из исходного кода OrientationModule.java, эта библиотека просто вызывает unregisterReceiver в onHostPause, поэтому вы не можете получать событие onConfigurationChanged после блокировки экрана. Один из способов - отредактировать onHostResume внутри OrientationModule.java, чтобы удовлетворить ваши пожелания.

@Override
public void onHostResume() {
    final Activity activity = getCurrentActivity();

    if (activity == null) {
        FLog.e(ReactConstants.TAG, "no activity to register receiver");
        return;
    }
    activity.registerReceiver(receiver, new IntentFilter("onConfigurationChanged"));
    //add below code to onHostResume function
    //send broadcast onResume
    final int orientationInt = getReactApplicationContext().getResources().getConfiguration().orientation;
    Configuration newConfig = new Configuration();
    newConfig.orientation = orientationInt;
    Intent intent = new Intent("onConfigurationChanged");
    intent.putExtra("newConfig", newConfig);
    activity.sendBroadcast(intent);
}

весь код можно найти здесь OrientationModule.java

person ufxmeng    schedule 06.09.2017