문제

화면 방향이 변경되는 경우 이벤트를 얻을 수 있습니다

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
.

가 설정되어 있습니까?

사용자가 전체 화면 모드로 비디오를 열면 화면이 가로가됩니다.

사용자가 (뒤로) 인물로되면 비디오가 최소화됩니다.

도움이 되었습니까?

해결책

시도 :

private OrientationEventListener mOrientationEventListener;
private int mOrientation =  -1;
private static final int ORIENTATION_PORTRAIT_NORMAL =  1;
private static final int ORIENTATION_PORTRAIT_INVERTED =  2;
private static final int ORIENTATION_LANDSCAPE_NORMAL =  3;
private static final int ORIENTATION_LANDSCAPE_INVERTED =  4;

 @Override
 protected void onResume() {
                 super.onResume();
                 if (mOrientationEventListener == null) {
                     mOrientationEventListener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL) {

                         @Override
                         public void onOrientationChanged(int orientation) {

                         // determine our orientation based on sensor response
                         int lastOrientation = mOrientation;
                         if (orientation >= 315 || orientation < 45) {
                             if (mOrientation != ORIENTATION_PORTRAIT_NORMAL) {
                                 mOrientation = ORIENTATION_PORTRAIT_NORMAL;
                                 }
                             }
                         else if (orientation < 315 && orientation >= 225) {
                             if (mOrientation != ORIENTATION_LANDSCAPE_NORMAL) {
                                 mOrientation = ORIENTATION_LANDSCAPE_NORMAL;
                                 }
                             }
                         else if (orientation < 225 && orientation >= 135) {
                             if (mOrientation != ORIENTATION_PORTRAIT_INVERTED) {
                                 mOrientation = ORIENTATION_PORTRAIT_INVERTED;
                                 }                                        }
                         else {
                             // orientation <135 && orientation > 45
                             if (mOrientation != ORIENTATION_LANDSCAPE_INVERTED) {
                                 mOrientation = ORIENTATION_LANDSCAPE_INVERTED;
                                 }                                        }
                         if (lastOrientation != mOrientation) {
                        //   changeRotation(mOrientation, lastOrientation);
                             }
                         }
                         };
                             }

                 if (mOrientationEventListener.canDetectOrientation()) {
                     mOrientationEventListener.enable();
                     }
                 }

             public void onOrientationChanged(int orientation) {

                 // determine our orientation based on sensor response
                 int lastOrientation = mOrientation;
                 Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
                 if (display.getOrientation() == Surface.ROTATION_0) {
                     // landscape oriented devices
                     if (orientation >= 315 || orientation < 45) {
                         if (mOrientation != ORIENTATION_LANDSCAPE_NORMAL) {
                             mOrientation = ORIENTATION_LANDSCAPE_NORMAL;
                             }         }
                     else if (orientation < 315 && orientation >= 225) {
                         if (mOrientation != ORIENTATION_PORTRAIT_INVERTED) {
                             mOrientation = ORIENTATION_PORTRAIT_INVERTED;
                             }
                         } else if (orientation < 225 && orientation >= 135) {
                             if (mOrientation != ORIENTATION_LANDSCAPE_INVERTED) {
                                 mOrientation = ORIENTATION_LANDSCAPE_INVERTED;
                                 }
                             } else if (orientation <135 && orientation > 45) {
                                 if (mOrientation != ORIENTATION_PORTRAIT_NORMAL) {
                                     mOrientation = ORIENTATION_PORTRAIT_NORMAL;
                                     }                                }
                     } else {
                         // portrait oriented devices
                         if (orientation >= 315 || orientation < 45) {
                             if (mOrientation != ORIENTATION_PORTRAIT_NORMAL) {
                                 mOrientation = ORIENTATION_PORTRAIT_NORMAL;
                                 }
                             } else if (orientation < 315 && orientation >= 225) {
                                 if (mOrientation != ORIENTATION_LANDSCAPE_NORMAL) {
                                     mOrientation = ORIENTATION_LANDSCAPE_NORMAL;
                                     }
                                 } else if (orientation < 225 && orientation >= 135) {
                                     if (mOrientation != ORIENTATION_PORTRAIT_INVERTED) {
                                         mOrientation = ORIENTATION_PORTRAIT_INVERTED;
                                         }
                                     } else if (orientation <135 && orientation > 45) {

                                         if (mOrientation != ORIENTATION_LANDSCAPE_INVERTED) {
                                             mOrientation = ORIENTATION_LANDSCAPE_INVERTED;
                                             }
                                         }     }
                 if (lastOrientation != mOrientation) {

                //   changeRotation(mOrientation, lastOrientation);     } }

                 }
             }

             @Override
                    public void onConfigurationChanged(Configuration newConfig) {
                        super.onConfigurationChanged(newConfig);
                }
.

다른 팁

이 활동 방법이 호출됩니다.

 @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        // Checks the orientation of the screen
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
        }
    }
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top