Как определить, где находится фронтальная камера на устройстве? - PullRequest
3 голосов
/ 08 января 2012

Есть ли способы определить, где расположена фронтальная камера на устройстве Android?

Я думаю, что на мобильных телефонах это всегда сверху, рядом с наушниками. Но все планшеты разные. Я проверил Asus Transformer, и фронтальная камера находится сбоку (сверху, если я держу ее в альбомном режиме), но Samsung Galaxy Tab (первое поколение, Android 2.2) имеет камеру сверху, как и все мобильные телефоны.

Так есть ли способ проверить, где находится фронтальная камера? Может быть, я могу сделать это с кодом, может быть, есть правило для устройств? Как у устройств Android 2.x есть ли он сверху, а у устройств Android 3.x - сбоку? Тогда как насчет устройств Adnroid 4.x?

Ответы [ 4 ]

3 голосов
/ 08 января 2012

Нет способа сделать это.Прочитайте http://developer.android.com/reference/android/hardware/Camera.CameraInfo.html

Есть две константы, которые вы можете проверить:

int CAMERA_FACING_BACK The facing of the camera is opposite to that of the screen.
int CAMERA_FACING_FRONT The facing of the camera is the same as that of the screen.

Поэтому я извиняюсь - нет способа проверить, находится ли он сбоку.

2 голосов
/ 13 декабря 2013

выше уровня API 9

/**
  * @return true : Front facing camera is available. false : Front facing
  *         camera is not available.
  */
     private boolean isFrontCameraAvailable() {

      int cameraCount = 0;
      boolean isFrontCameraAvailable = false;
      cameraCount = Camera.getNumberOfCameras();

      while (cameraCount > 0) {
       CameraInfo cameraInfo = new CameraInfo();
       cameraCount--;
       Camera.getCameraInfo(cameraCount, cameraInfo);


       if (cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT) {
        isFrontCameraAvailable = true;
        break;
       }

      }

      return isFrontCameraAvailable;
     }
0 голосов
/ 28 июля 2016

Я не нашел API для этой информации.

Я думаю, что ваш лучший вариант - это эвристический подход к просмотру информации Build и составлению карт для известных вам позиций https://developer.android.com/reference/android/os/Build.html

Если устройство / бренд соответствуют SamsungGalaxy Tab затем предположим, что он сверху.

Если они совпадают с Asus Transformer, то предположим, что он слева.

Если вы находите устройство / марку, которую вы не знаете, зарегистрируйте его, и если вы нашли достаточно людей, которые используют это устройство, где камера обновляет ваш код.

0 голосов
/ 08 января 2012

Вы можете позвонить

Camera.getCameraInfo (int cameraId, Camera.CameraInfo cameraInfo). 

. Вы можете определить количество камер с помощью

Camera.getNumberOfCameras();

. Поле Camera.CameraInfo.facing будет либо CAMERA_FACING_BACK, либо CAMERA_FACING_FRONT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...