2014-12-04 119 views
0

当你点击全屏图标在YouTube的应用程序,它会改变为风景和全屏,发现仍然是自动旋转模式,如何做到这一点?如何改变方向但保持自动旋转屏幕

如果设置lanscape模式:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)设备总是景观

  1. 点击全屏

Click fullscreen

  • lanscape
  • Lanscape

  • 肖像
  • portrain

    我解决了问题使用传感器来检测横向或纵向

    @Override 
    public void onPause() { 
        super.onPause(); 
        videoview.pause(); 
        mSensorManager.unregisterListener(this); 
    } 
    
    @Override 
    public void onResume() { 
        super.onResume(); 
    
        mSensorManager = (SensorManager) getActivity().getSystemService(Activity.SENSOR_SERVICE); 
        mRotationSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR); 
        mSensorManager.registerListener(this, mRotationSensor, SensorManager.SENSOR_DELAY_NORMAL); 
    } 
    
    @Override 
    public void onSensorChanged(SensorEvent event) { 
        if (event.sensor == mRotationSensor) { 
         if (event.values.length > 4) { 
          float[] truncatedRotationVector = new float[4]; 
          System.arraycopy(event.values, 0, truncatedRotationVector, 0, 4); 
          update(truncatedRotationVector); 
         } else { 
          update(event.values); 
         } 
        } 
    
    } 
    
    private void update(float[] vectors) { 
        float[] rotationMatrix = new float[9]; 
        SensorManager.getRotationMatrixFromVector(rotationMatrix, vectors); 
        int worldAxisX = SensorManager.AXIS_X; 
        int worldAxisZ = SensorManager.AXIS_Z; 
        float[] adjustedRotationMatrix = new float[9]; 
        SensorManager.remapCoordinateSystem(rotationMatrix, worldAxisX, worldAxisZ, adjustedRotationMatrix); 
        float[] orientation = new float[3]; 
        SensorManager.getOrientation(adjustedRotationMatrix, orientation); 
        // float pitch = (float) Math.toDegrees(orientation[1]); 
        float roll = (float) Math.toDegrees(orientation[2]); 
    
        boolean curentOrient = isPortrait; 
        if(roll >= -75 && roll <= 75){ 
         isPortrait = true; 
         System.out.println("Portrait"); 
        }else{ 
         isPortrait = false; 
         System.out.println("Landscape"); 
        } 
        if(curentOrient != isPortrait){ 
         videoview.toggleFullScreen(isPortrait); // this is my videoview. 
        } 
    } 
    @Override 
    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
    } 
    

    ,让工具SensorEventListener

    回答

    1

    使用ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE_SENSOR

    +0

    ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE_SENSOR,我试过了,但它只允许横向,而不是纵向。谢谢你,先生 – vuhung3990 2014-12-04 03:48:43

    +0

    所以,你只是想全屏,但传感器方向? ActivityInfo.SCREEN_ORIENTATION_SENSOR是你想要的。 – 2014-12-04 03:50:41

    1

    实际上,当您单击全屏按钮时,您只能以横向方向打开新的活动。在那里播放视频。

    +0

    谢谢你的男人,但当改变活动视频不得不重新加载播放 – vuhung3990 2014-12-04 10:22:28