【问题标题】:How to detect front camera and flash availabiliy如何检测前置摄像头和闪光灯的可用性
【发布时间】:2015-11-05 03:17:16
【问题描述】:

您好,我正在开发一个自定义视频应用。我可以通过

获得currentCameraId
currentCameraId = Camera.CameraInfo.CAMERA_FACING_BACK;

我有两个问题要问:

1) 如何检测只有前置摄像头的安卓设备。

因为在只有前置摄像头的平板电脑上,如 Micromax 选项卡,currentCameraId 为 0。

2) 如何检查相机闪光灯的可用性,因为以下代码在某些手机上不起作用

flash = this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

请帮忙。

谢谢!

【问题讨论】:

    标签: android flash android-camera android-package-managers front-camera


    【解决方案1】:

    检查闪光灯是否可用

    boolean hasFlash = getApplicationContext().getPackageManager()
                    .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
    

    检查相机是否可用

    PackageManager pm = context.getPackageManager();
    
    if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
    
    }
    

    如果您使用 API 级别 9 (Android 2.3) 或更高版本,您可以执行以下操作来计算(第一个)前置摄像头的索引:

    int getFrontCameraId() {
        CameraInfo ci = new CameraInfo();
        for (int i = 0 ; i < Camera.getNumberOfCameras(); i++) {
            Camera.getCameraInfo(i, ci);
            if (ci.facing == CameraInfo.CAMERA_FACING_FRONT) return i;
        }
        return -1; // No front-facing camera found
    }
    

    然后您可以使用 Camera.open 的索引

    例如

    int index = getFrontCameraId();
    if (index == -1) error();
    Camera c = Camera.open(index);
    

    【讨论】:

    【解决方案2】:

    你可以试试这个

    public boolean hasFlash() {
            if (camera == null) {
                return false;
            }
    
            Camera.Parameters parameters = camera.getParameters();
    
            if (parameters.getFlashMode() == null) {
                return false;
            }
    
            List<String> supportedFlashModes = parameters.getSupportedFlashModes();
            if (supportedFlashModes == null || supportedFlashModes.isEmpty() || supportedFlashModes.size() == 1 && supportedFlashModes.get(0).equals(Camera.Parameters.FLASH_MODE_OFF)) {
                return false;
            }
    
            return true;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      相关资源
      最近更新 更多