【问题标题】:How to understand the camera on or off now?(android api 29)现在如何理解相机的开启或关闭?(android api 29)
【发布时间】:2019-04-27 17:10:13
【问题描述】:

我想了解相机在 android 中是开/关的。我使用 android api 29,我只找到了早期版本的示例。 我的后台服务目前正在收集其他应用程序的工作数据,我需要知道相机是否打开。我不需要使用相机。我只需要状态。

另一个例子,我不明白,它是如何工作的。

private void registerCameraState() {
    cm = (CameraManager)getSystemService(Context.CAMERA_SERVICE);
    handler = new Handler();
    cm.registerAvailabilityCallback(new CameraManager.AvailabilityCallback() {
        @Override
        public void onCameraAvailable(String cameraId) {
            super.onCameraAvailable(cameraId);
            isCameraOpened = false;
        }
        @Override
        public void onCameraUnavailable(String cameraId) {
            super.onCameraUnavailable(cameraId);
            isCameraOpened = true;
        }
    },handler);
}

我需要手机摄像头的关闭/开启信息。

【问题讨论】:

  • 我觉得你需要知道相机的状态,参考this question
  • 您找到的示例让您的应用程序知道相机设备在运行时是否可用或不可用。当相机设备可用时,您的应用可以打开此相机设备。此时,在您的应用释放相机之前,其他应用将无法打开相机设备。如果你想知道,你的应用是否打开了摄像头,你必须依赖你的私有逻辑。
  • @AlexCohn 我的后台服务正在收集其他应用程序的工作数据,我需要知道相机是否打开。我不需要使用相机,我只需要状态。
  • 所以,CameraManager.AvailabilityCallback 似乎正是您所需要的。

标签: java android android-camera


【解决方案1】:

一般来说,我建议您阅读Camera API Guide 以了解 API 级别 21 或更高级别。 在那里你可以找到特色信息和这段代码:

/** Check if this device has a camera */
private boolean checkCameraHardware(Context context) {
    if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){
        // this device has a camera
        return true;
    } else {
        // no camera on this device
        return false;
    }
}

【讨论】:

  • 您的代码是关于手机上是否存在摄像头,我需要状态信息:摄像头开启或关闭。
猜你喜欢
  • 2020-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
相关资源
最近更新 更多