Java Code Examples for android.view.Surface#ROTATION_270

The following examples show how to use android.view.Surface#ROTATION_270 . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: OrientationModule.java    From react-native-orientation-locker with MIT License 6 votes vote down vote up
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";
    }
 
Example 2
Source File: CameraConnectionFragment.java    From next18-ai-in-motion with Apache License 2.0 6 votes vote down vote up
/**
 * 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);
}
 
Example 3
Source File: MagneticCompass.java    From prayer-times-android with Apache License 2.0 6 votes vote down vote up
@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]));
}
 
Example 4
Source File: Camera2Fragment.java    From MultiMediaSample with Apache License 2.0 6 votes vote down vote up
/**
 * 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);
}
 
Example 5
Source File: LiveVideoBroadcaster.java    From LiveVideoBroadcaster with Apache License 2.0 6 votes vote down vote up
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;
}
 
Example 6
Source File: Camera2Wrapper.java    From DeviceConnect-Android with MIT License 6 votes vote down vote up
/**
 * 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);
}
 
Example 7
Source File: DefaultEasyCamera.java    From Expert-Android-Programming with MIT License 6 votes vote down vote up
@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);
}
 
Example 8
Source File: CameraTexture.java    From PHONK with GNU General Public License v3.0 5 votes vote down vote up
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);
}
 
Example 9
Source File: LinphoneGenericActivity.java    From linphone-android with GNU General Public License v3.0 5 votes vote down vote up
@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);
        }
    }
}
 
Example 10
Source File: JoH.java    From xDrip-plus with GNU General Public License v3.0 4 votes vote down vote up
@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);
    }
}
 
Example 11
Source File: ScreenshotUtils.java    From brailleback with Apache License 2.0 4 votes vote down vote up
/**
 * 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;
}
 
Example 12
Source File: CameraSource.java    From particle-android with Apache License 2.0 4 votes vote down vote up
/**
 * 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);
}
 
Example 13
Source File: CommonUtil.java    From GSYVideoPlayer with Apache License 2.0 4 votes vote down vote up
public static boolean getCurrentScreenLand(Activity context) {
    return context.getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_90 ||
            context.getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_270;

}
 
Example 14
Source File: CustomMediaController.java    From ZZShow with Apache License 2.0 4 votes vote down vote up
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;
}
 
Example 15
Source File: WorldController.java    From tilt-game-android with MIT License 4 votes vote down vote up
/**
 * 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);
            }
        }
    }
}
 
Example 16
Source File: Camera1Manager.java    From phoenix with Apache License 2.0 4 votes vote down vote up
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());
        }
    }
 
Example 17
Source File: CameraSource.java    From quickstart-android with Apache License 2.0 4 votes vote down vote up
/**
 * 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);
}
 
Example 18
Source File: KeyboardAwareLinearLayout.java    From deltachat-android with GNU General Public License v3.0 4 votes vote down vote up
public boolean isLandscape() {
  int rotation = getDeviceRotation();
  return rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270;
}
 
Example 19
Source File: CameraConfigurationManager.java    From barcodescanner-lib-aar with MIT License 4 votes vote down vote up
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;
  }
}
 
Example 20
Source File: AndroidUtilities.java    From Telegram-FOSS with GNU General Public License v2.0 4 votes vote down vote up
@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);
    }
}