【问题标题】:How to detect where front-facing camera placed on device?如何检测前置摄像头放置在设备上的位置?
【发布时间】:2012-01-08 06:44:10
【问题描述】:

有什么方法可以检测前置摄像头在 Android 设备上的放置位置?

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

那么有没有办法检查前置摄像头的放置位置?也许我可以用代码来做,也许设备有规则?就像 Android 2.x 设备在顶部,而 Android 3.x 设备在侧面?那么 Adnroid 4.x 设备呢?

【问题讨论】:

  • 你有没有想出另一种猜测位置的方法?

标签: android camera


【解决方案1】:

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

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

    【讨论】:

      【解决方案3】:

      你可以打电话

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

      您可以确定摄像头的数量

      Camera.getNumberOfCameras();
      

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

      【讨论】:

      • 你没有理解我的问题。我不需要确定凸轮的数量。我需要知道前置摄像头放置在设备上的哪个位置(顶部或侧面)(如果存在)。
      • 我为唯一存在的相机位置信息提供了 API。
      【解决方案4】:

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

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

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

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

      如果您发现一个您不知道的设备/品牌,请记录它,并且如果您有足够多的人使用该设备,请研究相机是更新您的代码的地方。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多