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

4
有没有办法检测Android设备的前置摄像头位置?
我觉得在手机上,它总是在顶部靠近耳机。但所有的平板都不同。我检查了华硕变形笔记本的前置摄像头,发现它在侧面(如果我横向持有则在顶部),但是三星Galaxy Tab(第一代,Android 2.2)的摄像头在顶部,就像所有手机一样。
那么是否有办法检查前置摄像头的位置呢?也许我可以用代码实现,或者设备有规律可循?比如Android 2.x设备上面会有它,Android 3.x设备则在侧边上?那Android 4.x设备呢?

你有没有想到其他猜测位置的替代方法? - Eric
4个回答

3

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

0

我没有找到这个信息的API。

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

如果设备/品牌匹配三星Galaxy Tab,则假定它在顶部。

如果它们匹配Asus Transformer,则假定它在左侧。

如果你找到一个你不知道的设备/品牌,请记录下来,如果有足够多的人使用该设备,请研究摄像头的位置并更新你的代码。


0

你可以调用

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

您可以使用以下方法确定相机数量:

Camera.getNumberOfCameras();

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


你没有理解我的问题。我不需要确定摄像头的数量。如果存在的话,我需要知道前置摄像头放置在设备的哪个位置(顶部还是侧面)。 - Dmitriy
我提供了唯一存在的相机位置信息的API。 - nmjohn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接