2013-04-11 2 views
2

Я создаю приложение для Android, где я использую переднюю камеру для некоторых манипуляций с изображениями.Как узнать положение камеры на устройстве Android?

Для меня важно знать, где находится камера. Например, на Samsung S3 он находится на верхней части устройства, где, как и на Galaxy Note 10, он находится сбоку.

Важно, чтобы я мог знать, какова ориентация буфера предварительного просмотра камеры и ориентация самого экрана (я хочу, чтобы пользовательский интерфейс всегда был на портрете относительно камеры, т. Е. Поэтому камера всегда включена ВВЕРХ).

Любые идеи?

EDIT: Я могу использовать Android 4 и выше (нет необходимости поддерживать более низкие версии)

Спасибо!

+1

Вы прочитали это? http://stackoverflow.com/questions/8775872/how-to-detect-where-front-facing-camera-placed-on-device – Andy

+0

Спасибо - не видел :) Кажется, что «ориентация» можно манипулировать получить правильную информацию. – Roman

ответ

0

, как другие говорили, сама позиция не имеет значения, вы просто получаете ориентацию и т. д.

Сказал, что я получил этот метод от StackOverflow раньше (это было для парня, который его разработал), и он работает как шарм. Просто позвоните по своему обратному сообщению surfaceCreated.

private void setCameraDisplayOrientation(Activity activity, int cameraId, android.hardware.Camera camera) { 
      android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo(); 
      android.hardware.Camera.getCameraInfo(cameraId, info); 
      int rotation = activity.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; 
      } 
      camera.setDisplayOrientation(result); 
    } 
+0

Кажется, что это может сработать - спасибо :) – Roman

Смежные вопросы