如何检测前置摄像头放在设备上的位置?

时间:2012-01-08 06:44:10

标签: android camera

有没有办法检测Android设备上前置摄像头的位置?

我认为在手机上它总是在耳机附近。但所有平板电脑都不同。我检查了华硕Transformer,前置摄像头在侧面(如果我在横向模式下保持在顶部),但三星Galaxy Tab(第一代,Android 2.2)上面有摄像头,就像所有手机一样。

那么有没有办法检查前置摄像头放在哪里?也许我可以用代码来做,也许有设备规则?就像Android 2.x设备一样,Android 3.x设备就在旁边?那么Adnroid 4.x设备呢?

4 个答案:

答案 0 :(得分:3)

没有办法做到这一点。阅读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.

所以我很抱歉 - 无法检查它是否在旁边。

答案 1 :(得分:2)

高于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;
     }

答案 2 :(得分:0)

你可以打电话

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

您可以使用

确定摄像机的数量
Camera.getNumberOfCameras();

Camera.CameraInfo.facing字段将为CAMERA_FACING_BACK或CAMERA_FACING_FRONT。

答案 3 :(得分:0)

我还没有找到此信息的API。

我认为您最好的选择是启发式方法来查看Build信息并为您知道的位置制作映射 https://developer.android.com/reference/android/os/Build.html

如果设备/品牌与Samsung Galaxy Tab匹配,则认为它位于顶部。

如果它们与Asus Transformer匹配则假设它在左侧。

如果您发现设备/品牌,您不知道记录它,如果您有足够的人使用该设备研究相机更新您的代码。