android.view.Surface#ROTATION_270 ( )源码实例Demo

下面列出了android.view.Surface#ROTATION_270 ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

private String getCurrentOrientation() {

        final Display display = ((WindowManager) getReactApplicationContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();

        switch (display.getRotation()) {
            case Surface.ROTATION_0:
                return "PORTRAIT";
            case Surface.ROTATION_90:
                return "LANDSCAPE-LEFT";
            case Surface.ROTATION_180:
                return "PORTRAIT-UPSIDEDOWN";
            case Surface.ROTATION_270:
                return "LANDSCAPE-RIGHT";
        }
        return "UNKNOWN";
    }
 
源代码2 项目: prayer-times-android   文件: MagneticCompass.java
@Override
public void onRotationUpdate(@NonNull float[] newMatrix) {
    // remap matrix values according to display rotation, as in
    // SensorManager documentation.
    switch (mDisplayRotation) {
        case Surface.ROTATION_90:
            SensorManager.remapCoordinateSystem(newMatrix, SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X, newMatrix);
            break;
        case Surface.ROTATION_270:
            SensorManager.remapCoordinateSystem(newMatrix, SensorManager.AXIS_MINUS_Y, SensorManager.AXIS_X, newMatrix);
            break;
        default:
            break;
    }
    mRotationMatrix.set(newMatrix);

    float[] deviceOrientation = new float[3];
    mOrientationCalculator.getOrientation(mRotationMatrix, mDisplayRotation, deviceOrientation);

    float[] orientation = new float[3];
    SensorManager.getOrientation(newMatrix, orientation);
    mFrag2D.setAngle((int) Math.toDegrees(orientation[0]));
}
 
源代码3 项目: MultiMediaSample   文件: Camera2Fragment.java
/**
 * Configures the necessary {@link Matrix} transformation to `mTextureView`.
 * This method should be called after the camera preview size is determined in
 * setUpCameraOutputs and also the size of `mTextureView` is fixed.
 *
 * @param viewWidth  The width of `mTextureView`
 * @param viewHeight The height of `mTextureView`
 */
private void configureTransform(int viewWidth, int viewHeight) {
    Activity activity = getActivity();
    if (null == mTextureView || null == mPreviewSize || null == activity) {
        return;
    }
    int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
    Matrix matrix = new Matrix();
    RectF viewRect = new RectF(0, 0, viewWidth, viewHeight);
    RectF bufferRect = new RectF(0, 0, mPreviewSize.getHeight(), mPreviewSize.getWidth());
    float centerX = viewRect.centerX();
    float centerY = viewRect.centerY();
    if (Surface.ROTATION_90 == rotation || Surface.ROTATION_270 == rotation) {
        bufferRect.offset(centerX - bufferRect.centerX(), centerY - bufferRect.centerY());
        matrix.setRectToRect(viewRect, bufferRect, Matrix.ScaleToFit.FILL);
        float scale = Math.max(
                (float) viewHeight / mPreviewSize.getHeight(),
                (float) viewWidth / mPreviewSize.getWidth());
        matrix.postScale(scale, scale, centerX, centerY);
        matrix.postRotate(90 * (rotation - 2), centerX, centerY);
    } else if (Surface.ROTATION_180 == rotation) {
        matrix.postRotate(180, centerX, centerY);
    }
    mTextureView.setTransform(matrix);
}
 
public int getCameraDisplayOrientation() {
    Camera.CameraInfo info =
            new Camera.CameraInfo();
    Camera.getCameraInfo(currentCameraId, info);
    int rotation = context.getWindowManager().getDefaultDisplay()
            .getRotation();
    int degrees = 0;
    switch (rotation) {
        case Surface.ROTATION_0: degrees = 0; break;
        case Surface.ROTATION_90: degrees = 90; break;
        case Surface.ROTATION_180: degrees = 180; break;
        case Surface.ROTATION_270: degrees = 270; break;
    }

    int result;
    if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
        result = (info.orientation + degrees) % 360;
        result = (360 - result) % 360;  // compensate the mirror
    } else {  // back-facing
        result = (info.orientation - degrees + 360) % 360;
    }
    return result;
}
 
@Override
public void alignCameraAndDisplayOrientation(WindowManager windowManager) {
     Camera.CameraInfo info = new Camera.CameraInfo();
     Camera.getCameraInfo(id, info);
     int rotation = windowManager.getDefaultDisplay().getRotation();
     int degrees = 0;
     switch (rotation) {
         case Surface.ROTATION_0: degrees = 0; break;
         case Surface.ROTATION_90: degrees = 90; break;
         case Surface.ROTATION_180: degrees = 180; break;
         case Surface.ROTATION_270: degrees = 270; break;
     }

     int result;
     if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
         result = (info.orientation + degrees) % 360;
         result = (360 - result) % 360;  // compensate the mirror
     } else {  // back-facing
         result = (info.orientation - degrees + 360) % 360;
     }
     camera.setDisplayOrientation(result);
}
 
源代码6 项目: DeviceConnect-Android   文件: Camera2Wrapper.java
/**
 * Configures the necessary {@link Matrix} transformation to `mTextureView`.
 * This method should be called after the camera preview size is determined in
 * setUpCameraOutputs and also the size of `mTextureView` is fixed.
 *
 * @param viewWidth  The width of `mTextureView`
 * @param viewHeight The height of `mTextureView`
 */
private void configureTransform(final int viewWidth, final int viewHeight) {
    Size previewSize = mSettings.getPreviewSize();
    int rotation = Camera2Helper.getDisplayRotation(mContext);
    Matrix matrix = new Matrix();
    RectF viewRect = new RectF(0, 0, viewWidth, viewHeight);
    RectF bufferRect = new RectF(0, 0, previewSize.getHeight(), previewSize.getWidth());
    float centerX = viewRect.centerX();
    float centerY = viewRect.centerY();
    if (Surface.ROTATION_90 == rotation || Surface.ROTATION_270 == rotation) {
        bufferRect.offset(centerX - bufferRect.centerX(), centerY - bufferRect.centerY());
        matrix.setRectToRect(viewRect, bufferRect, Matrix.ScaleToFit.FILL);
        float scale = Math.max(
                (float) viewHeight / previewSize.getHeight(),
                (float) viewWidth / previewSize.getWidth());
        matrix.postScale(scale, scale, centerX, centerY);
        matrix.postRotate(90 * (rotation - 2), centerX, centerY);
    } else if (Surface.ROTATION_180 == rotation) {
        matrix.postRotate(180, centerX, centerY);
    }
    mTextureView.setTransform(matrix);
}
 
/**
 * Configures the necessary {@link Matrix} transformation to `mTextureView`.
 * This method should be called after the camera preview size is determined in
 * setUpCameraOutputs and also the size of `mTextureView` is fixed.
 *
 * @param viewWidth  The width of `mTextureView`
 * @param viewHeight The height of `mTextureView`
 */
private void configureTransform(final int viewWidth, final int viewHeight) {
  final Activity activity = getActivity();
  if (null == textureView || null == previewSize || null == activity) {
    return;
  }
  final int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
  final Matrix matrix = new Matrix();
  final RectF viewRect = new RectF(0, 0, viewWidth, viewHeight);
  final RectF bufferRect = new RectF(0, 0, previewSize.getHeight(), previewSize.getWidth());
  final float centerX = viewRect.centerX();
  final float centerY = viewRect.centerY();
  if (Surface.ROTATION_90 == rotation || Surface.ROTATION_270 == rotation) {
    bufferRect.offset(centerX - bufferRect.centerX(), centerY - bufferRect.centerY());
    matrix.setRectToRect(viewRect, bufferRect, Matrix.ScaleToFit.FILL);
    final float scale =
        Math.max(
            (float) viewHeight / previewSize.getHeight(),
            (float) viewWidth / previewSize.getWidth());
    matrix.postScale(scale, scale, centerX, centerY);
    matrix.postRotate(90 * (rotation - 2), centerX, centerY);
  } else if (Surface.ROTATION_180 == rotation) {
    matrix.postRotate(180, centerX, centerY);
  }
  textureView.setTransform(matrix);
}
 
源代码8 项目: PHONK   文件: CameraTexture.java
public void setCameraDisplayOrientation(int cameraId, android.hardware.Camera camera) {
    android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();
    android.hardware.Camera.getCameraInfo(cameraId, info);

    WindowManager windowManager = (WindowManager) mAppRunner.getAppContext().getSystemService(Context.WINDOW_SERVICE);
    int rotation = windowManager.getDefaultDisplay().getRotation();

    int degrees = 0;
    switch (rotation) {
        case Surface.ROTATION_0:
            degrees = 0;
            break;
        case Surface.ROTATION_90:
            degrees = 90;
            break;
        case Surface.ROTATION_180:
            degrees = 180;
            break;
        case Surface.ROTATION_270:
            degrees = 270;
            break;
    }

    int result;
    if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
        result = (info.orientation + degrees) % 360;
        result = (360 - result) % 360;  // compensate the mirror
    } else {  // back-facing
        result = (info.orientation - degrees + 360) % 360;
    }

    mCameraRotation = result;
    MLog.d("wewe", "" + mCameraRotation);
    camera.setDisplayOrientation(mCameraRotation);
}
 
@Override
protected void onResume() {
    super.onResume();

    ensureServiceIsRunning();

    if (LinphoneContext.isReady()) {
        int degrees = 270;
        int orientation = getWindowManager().getDefaultDisplay().getRotation();
        switch (orientation) {
            case Surface.ROTATION_0:
                degrees = 0;
                break;
            case Surface.ROTATION_90:
                degrees = 270;
                break;
            case Surface.ROTATION_180:
                degrees = 180;
                break;
            case Surface.ROTATION_270:
                degrees = 90;
                break;
        }

        Log.i(
                "[Generic Activity] Device orientation is "
                        + degrees
                        + " (raw value is "
                        + orientation
                        + ")");

        int rotation = (360 - degrees) % 360;
        Core core = LinphoneManager.getCore();
        if (core != null) {
            core.setDeviceRotation(rotation);
        }
    }
}
 
源代码10 项目: tilt-game-android   文件: WorldController.java
/**
 * Game loop
 */
@Override
public void onManagedUpdate(float pSecondsElapsed) {
    super.onManagedUpdate(pSecondsElapsed);

    if (_levelController == null) {
        return;
    }

    if (_started) {
        // update gravity from phone orientation
        EulerAngles eulerAngles = _orientationProvider.getEulerAngles();
        // get limited roll & pitch
        float roll = MathUtils.bringToBounds(-MAX_ORIENTATION_ANGLE, MAX_ORIENTATION_ANGLE, eulerAngles.getRoll());
        float pitch = MathUtils.bringToBounds(-MAX_ORIENTATION_ANGLE, MAX_ORIENTATION_ANGLE, eulerAngles.getPitch());
        // correct for screen orientation, different on tablets than on phones
        float swap;
        switch (_screenRotation) {
            case Surface.ROTATION_0:
                break;
            case Surface.ROTATION_270:
                swap = pitch;
                pitch = -roll;
                roll = swap;
                break;
            case Surface.ROTATION_180:
                pitch = -pitch;
                roll = -roll;
                break;
            case Surface.ROTATION_90:
                swap = pitch;
                pitch = roll;
                roll = -swap;
                break;
        }
        _gravity.set(_radToGravity * roll, _radToGravity * pitch);
        _gravity.add(_gravityCorrection);
        _physicsWorld.setGravity(_gravity);

        checkDestroyBall();

        // update ball location, if there's a ball, we're not animating, and the level hasn't been completed
        if (_ball != null && !_isAnimating && !_isLevelCompleted) {
            _timePassed += pSecondsElapsed;

            // update physics world
            _physicsWorld.onUpdate(pSecondsElapsed);

            // check if the ball needs to be destroyed
            checkDestroyBall();

            // recheck, since world update may have removed the ball
            if (_ball != null && !_isAnimating) {
                Vector2 ballPosition = _ball.getPosition();
                ballPosition.mul(PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT);
                _ballSprite.setPosition(ballPosition.x, ballPosition.y);
            }

            if (_levelDuration > 0) {
                updateTimer(pSecondsElapsed);
            }
        }
    }
}
 
源代码11 项目: Telegram-FOSS   文件: AndroidUtilities.java
@SuppressLint("WrongConstant")
public static void lockOrientation(Activity activity) {
    if (activity == null || prevOrientation != -10) {
        return;
    }
    try {
        prevOrientation = activity.getRequestedOrientation();
        WindowManager manager = (WindowManager) activity.getSystemService(Activity.WINDOW_SERVICE);
        if (manager != null && manager.getDefaultDisplay() != null) {
            int rotation = manager.getDefaultDisplay().getRotation();
            int orientation = activity.getResources().getConfiguration().orientation;

            if (rotation == Surface.ROTATION_270) {
                if (orientation == Configuration.ORIENTATION_PORTRAIT) {
                    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                } else {
                    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
                }
            } else if (rotation == Surface.ROTATION_90) {
                if (orientation == Configuration.ORIENTATION_PORTRAIT) {
                    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
                } else {
                    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                }
            } else if (rotation == Surface.ROTATION_0) {
                if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
                    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                } else {
                    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                }
            } else {
                if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
                    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
                } else {
                    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
                }
            }
        }
    } catch (Exception e) {
        FileLog.e(e);
    }
}
 
void setDesiredCameraParameters(OpenCamera camera, boolean safeMode) {
  Camera theCamera = camera.getCamera();

  int rotation = context.getApplicationContext().getResources().getConfiguration().orientation;

  WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
  Display display = windowManager.getDefaultDisplay();
  int deviceSpecificRotation = display.getRotation();

  if (rotation == Configuration.ORIENTATION_PORTRAIT) {
    if (deviceSpecificRotation == Surface.ROTATION_0 || deviceSpecificRotation == Surface.ROTATION_90) {
      theCamera.setDisplayOrientation(90);
    } else {
      theCamera.setDisplayOrientation(270);
    }
  } else {
    // landscape
    if (deviceSpecificRotation == Surface.ROTATION_180 || deviceSpecificRotation == Surface.ROTATION_270) {
      theCamera.setDisplayOrientation(180);
    }
  }

  Camera.Parameters parameters = theCamera.getParameters();
  if (parameters == null) {
    Log.w(TAG, "Device error: no camera parameters are available. Proceeding without configuration.");
    return;
  }

  Log.i(TAG, "Initial camera parameters: " + parameters.flatten());

  if (safeMode) {
    Log.w(TAG, "In camera config safe mode -- most settings will not be honored");
  }

  SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);

  initializeTorch(parameters, prefs, safeMode);

  CameraConfigurationUtils.setFocus(
      parameters,
      prefs.getBoolean(PreferencesActivity.KEY_AUTO_FOCUS, true),
      prefs.getBoolean(PreferencesActivity.KEY_DISABLE_CONTINUOUS_FOCUS, true),
      safeMode);

  if (!safeMode) {
    if (prefs.getBoolean(PreferencesActivity.KEY_INVERT_SCAN, false)) {
      CameraConfigurationUtils.setInvertColor(parameters);
    }

    if (!prefs.getBoolean(PreferencesActivity.KEY_DISABLE_BARCODE_SCENE_MODE, true)) {
      CameraConfigurationUtils.setBarcodeSceneMode(parameters);
    }

    if (!prefs.getBoolean(PreferencesActivity.KEY_DISABLE_METERING, true)) {
      CameraConfigurationUtils.setVideoStabilization(parameters);
      CameraConfigurationUtils.setFocusArea(parameters);
      CameraConfigurationUtils.setMetering(parameters);
    }

  }

  parameters.setPreviewSize(bestPreviewSize.x, bestPreviewSize.y);

  theCamera.setParameters(parameters);

  theCamera.setDisplayOrientation(cwRotationFromDisplayToCamera);

  Camera.Parameters afterParameters = theCamera.getParameters();
  Camera.Size afterSize = afterParameters.getPreviewSize();
  if (afterSize != null && (bestPreviewSize.x != afterSize.width || bestPreviewSize.y != afterSize.height)) {
    Log.w(TAG, "Camera said it supported preview size " + bestPreviewSize.x + 'x' + bestPreviewSize.y +
        ", but after setting it, preview size is " + afterSize.width + 'x' + afterSize.height);
    bestPreviewSize.x = afterSize.width;
    bestPreviewSize.y = afterSize.height;
  }
}
 
public boolean isLandscape() {
  int rotation = getDeviceRotation();
  return rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270;
}
 
源代码14 项目: quickstart-android   文件: CameraSource.java
/**
 * Calculates the correct rotation for the given camera id and sets the rotation in the
 * parameters. It also sets the camera's display orientation and rotation.
 *
 * @param parameters the camera parameters for which to set the rotation
 * @param cameraId the camera id to set rotation based on
 */
private void setRotation(Camera camera, Camera.Parameters parameters, int cameraId) {
  WindowManager windowManager = (WindowManager) activity.getSystemService(Context.WINDOW_SERVICE);
  int degrees = 0;
  int rotation = windowManager.getDefaultDisplay().getRotation();
  switch (rotation) {
    case Surface.ROTATION_0:
      degrees = 0;
      break;
    case Surface.ROTATION_90:
      degrees = 90;
      break;
    case Surface.ROTATION_180:
      degrees = 180;
      break;
    case Surface.ROTATION_270:
      degrees = 270;
      break;
    default:
      Log.e(TAG, "Bad rotation value: " + rotation);
  }

  CameraInfo cameraInfo = new CameraInfo();
  Camera.getCameraInfo(cameraId, cameraInfo);

  int angle;
  int displayAngle;
  if (cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT) {
    angle = (cameraInfo.orientation + degrees) % 360;
    displayAngle = (360 - angle) % 360; // compensate for it being mirrored
  } else { // back-facing
    angle = (cameraInfo.orientation - degrees + 360) % 360;
    displayAngle = angle;
  }

  // This corresponds to the rotation constants.
  this.rotation = angle / 90;
  Log.d(TAG, "Display rotation is: " + rotation);
  Log.d(TAG, "Camera face is: " + cameraInfo.facing);
  Log.d(TAG, "Camera rotation is: " + cameraInfo.orientation);
  Log.d(TAG, "Rotation is: " + this.rotation);

  camera.setDisplayOrientation(displayAngle);
  parameters.setRotation(angle);
}
 
源代码15 项目: phoenix   文件: Camera1Manager.java
private void startPreview(SurfaceHolder surfaceHolder) {
        try {
            final Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
            Camera.getCameraInfo(mCameraId, cameraInfo);
            int cameraRotationOffset = cameraInfo.orientation;

            final Camera.Parameters parameters = camera.getParameters();
            setAutoFocus(camera, parameters);
            setFlashMode(cameraConfigProvider.getFlashMode());

            if (cameraConfigProvider.getMediaAction() == CameraConfig.MEDIA_ACTION_PHOTO
                    || cameraConfigProvider.getMediaAction() == CameraConfig.MEDIA_ACTION_UNSPECIFIED)
                turnPhotoCameraFeaturesOn(camera, parameters);
            else if (cameraConfigProvider.getMediaAction() == CameraConfig.MEDIA_ACTION_PHOTO)
                turnVideoCameraFeaturesOn(camera, parameters);

            final int rotation = ((WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation();
            int degrees = 0;
            switch (rotation) {
                case Surface.ROTATION_0:
                    degrees = 0;
                    break; // Natural orientation
                case Surface.ROTATION_90:
                    degrees = 90;
                    break; // Landscape left
                case Surface.ROTATION_180:
                    degrees = 180;
                    break;// Upside down
                case Surface.ROTATION_270:
                    degrees = 270;
                    break;// Landscape right
            }

            if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
                displayRotation = (cameraRotationOffset + degrees) % 360;
                displayRotation = (360 - displayRotation) % 360; // compensate
            } else {
                displayRotation = (cameraRotationOffset - degrees + 360) % 360;
            }

            this.camera.setDisplayOrientation(displayRotation);

            if (Build.VERSION.SDK_INT > 13
                    && (cameraConfigProvider.getMediaAction() == CameraConfig.MEDIA_ACTION_VIDEO
                    || cameraConfigProvider.getMediaAction() == CameraConfig.MEDIA_ACTION_UNSPECIFIED)) {
//                parameters.setRecordingHint(true);
            }

            if (Build.VERSION.SDK_INT > 14
                    && parameters.isVideoStabilizationSupported()
                    && (cameraConfigProvider.getMediaAction() == CameraConfig.MEDIA_ACTION_VIDEO
                    || cameraConfigProvider.getMediaAction() == CameraConfig.MEDIA_ACTION_UNSPECIFIED)) {
                parameters.setVideoStabilization(true);
            }

            parameters.setPreviewSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
            parameters.setPictureSize(mPhotoSize.getWidth(), mPhotoSize.getHeight());

            camera.setParameters(parameters);
            camera.setPreviewDisplay(surfaceHolder);
            camera.startPreview();

        } catch (IOException error) {
            Log.d(TAG, "Error setting camera preview: " + error.getMessage());
        } catch (Exception ignore) {
            Log.d(TAG, "Error starting camera preview: " + ignore.getMessage());
        }
    }
 
源代码16 项目: xDrip-plus   文件: JoH.java
@SuppressWarnings("deprecation")
@SuppressLint("NewApi")
public static void lockOrientation(Activity activity) {
    Display display = activity.getWindowManager().getDefaultDisplay();
    int rotation = display.getRotation();
    int height;
    int width;
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) {
        height = display.getHeight();
        width = display.getWidth();
    } else {
        Point size = new Point();
        display.getSize(size);
        height = size.y;
        width = size.x;
    }
    switch (rotation) {
        case Surface.ROTATION_90:
            if (width > height)
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            else
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
            break;
        case Surface.ROTATION_180:
            if (height > width)
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
            else
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
            break;
        case Surface.ROTATION_270:
            if (width > height)
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
            else
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            break;
        default:
            if (height > width)
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            else
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }
}
 
源代码17 项目: ZZShow   文件: CustomMediaController.java
public int getScreenOrientation(Activity activity){
    int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
    DisplayMetrics dm = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
    int width = dm.widthPixels;
    int height = dm.heightPixels;
    int orientation;
    // if the device's natural orientation is portrait:
    if((rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180)
            && height > width
            || (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270)
            && width > height){
        switch (rotation){
            case Surface.ROTATION_0:
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                break;
            case Surface.ROTATION_90:
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
                break;
            case Surface.ROTATION_180:
                orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
                break;
            case Surface.ROTATION_270:
                orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
                break;
            default:
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                break;
        }
    }
    // if the device's natural orientation is landscape or if the device
    // is square:
    else{
        switch (rotation){
            case Surface.ROTATION_0:
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
                break;
            case Surface.ROTATION_90:
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
                break;
            case Surface.ROTATION_180:
                orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
                break;
            case Surface.ROTATION_270:
                orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
                break;
            default:
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
                break;
        }
    }
    return orientation;
}
 
源代码18 项目: GSYVideoPlayer   文件: CommonUtil.java
public static boolean getCurrentScreenLand(Activity context) {
    return context.getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_90 ||
            context.getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_270;

}
 
源代码19 项目: particle-android   文件: CameraSource.java
/**
 * Calculates the correct rotation for the given camera id and sets the rotation in the
 * parameters. It also sets the camera's display orientation and rotation.
 *
 * @param parameters the camera parameters for which to set the rotation
 * @param cameraId the camera id to set rotation based on
 */
private void setRotation(Camera camera, Camera.Parameters parameters, int cameraId) {
  WindowManager windowManager = (WindowManager) activity.getSystemService(Context.WINDOW_SERVICE);
  int degrees = 0;
  int rotation = windowManager.getDefaultDisplay().getRotation();
  switch (rotation) {
    case Surface.ROTATION_0:
      degrees = 0;
      break;
    case Surface.ROTATION_90:
      degrees = 90;
      break;
    case Surface.ROTATION_180:
      degrees = 180;
      break;
    case Surface.ROTATION_270:
      degrees = 270;
      break;
    default:
      Log.e(TAG, "Bad rotation value: " + rotation);
  }

  CameraInfo cameraInfo = new CameraInfo();
  Camera.getCameraInfo(cameraId, cameraInfo);

  int angle;
  int displayAngle;
  if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
    angle = (cameraInfo.orientation + degrees) % 360;
    displayAngle = (360 - angle) % 360; // compensate for it being mirrored
  } else { // back-facing
    angle = (cameraInfo.orientation - degrees + 360) % 360;
    displayAngle = angle;
  }

  // This corresponds to the rotation constants.
  this.rotation = angle / 90;

  camera.setDisplayOrientation(displayAngle);
  parameters.setRotation(angle);
}
 
源代码20 项目: brailleback   文件: ScreenshotUtils.java
/**
 * Returns a screenshot with the contents of the current display that
 * matches the current display rotation.
 *
 * @param context The current context.
 * @return A bitmap of the screenshot.
 */
public static Bitmap createScreenshot(Context context) {
    if (!hasScreenshotPermission(context)) {
        LogUtils.log(ScreenshotUtils.class, Log.ERROR, "Screenshot permission denied.");
        return null;
    }

    final WindowManager windowManager =
            (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

    final Bitmap bitmap = SurfaceControlCompatUtils.screenshot(0, 0);

    // Bail if we couldn't take the screenshot.
    if (bitmap == null) {
        LogUtils.log(ScreenshotUtils.class, Log.ERROR, "Failed to take screenshot.");
        return null;
    }

    final int width = bitmap.getWidth();
    final int height = bitmap.getHeight();
    final int rotation = windowManager.getDefaultDisplay().getRotation();

    final int outWidth;
    final int outHeight;
    final float rotationDegrees;

    switch (rotation) {
        case Surface.ROTATION_90:
            outWidth = height;
            outHeight = width;
            rotationDegrees = 90;
            break;
        case Surface.ROTATION_180:
            outWidth = width;
            outHeight = height;
            rotationDegrees = 180;
            break;
        case Surface.ROTATION_270:
            outWidth = height;
            outHeight = width;
            rotationDegrees = 270;
            break;
        default:
            return bitmap;
    }

    // Rotate the screenshot to match the screen orientation.
    final Bitmap rotatedBitmap =
            Bitmap.createBitmap(outWidth, outHeight, Bitmap.Config.RGB_565);
    final Canvas c = new Canvas(rotatedBitmap);

    c.translate(outWidth / 2.0f, outHeight / 2.0f);
    c.rotate(-rotationDegrees);
    c.translate(-width / 2.0f, -height / 2.0f);
    c.drawBitmap(bitmap, 0, 0, null);

    bitmap.recycle();

    return rotatedBitmap;
}