android 检测其他应用程序是否尝试打开相机显示警报对话框

标签 android camera

我想创建一个应用程序,它需要知道相机何时被其他应用程序打开、相机应用程序是否打开或者第三方应用程序是否正在使用相机 我如何检测其他应用程序是否尝试打开相机。如果其他应用程序尝试打开相机,我想在打开相机之前接收任何广播,我该怎么做。 我也尝试过这个。

public boolean isCameraUsebyApp() {
    Camera camera = null;
    try {
        camera = Camera.open();
    } catch (RuntimeException e) {
        return true;
    } finally {
        if (camera != null) camera.release();
    }
    return false;
}

但它总是返回 true。

最佳答案

Camera2 Api 中没有相机打开与否的广播,但有相机可用性监听器,使用下面的代码

    CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    manager.registerAvailabilityCallback(new CameraManager.AvailabilityCallback() {
        @Override
        public void onCameraAvailable(String cameraId) {
            super.onCameraAvailable(cameraId);
            //Do your work
        }

        @Override
        public void onCameraUnavailable(String cameraId) {
            super.onCameraUnavailable(cameraId);
            //Do your work
        }
    }, mHandler);
}

只有21岁及以上

对于 21 以下,您可以使用您的代码

 public boolean isCameraInUse() {
    Camera c = null;
    try {
        c = Camera.open();
    } catch (RuntimeException e) {
        return true;
    } finally {
        if (c != null) c.release();
    }
    return false;
}

关于android 检测其他应用程序是否尝试打开相机显示警报对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43246065/

相关文章:

java - 如何从服务检索偏好数据

java - android:如果开/关/自动如何检查闪光灯?

android - RuntimeException 使用 Camera.open()

java - 如何在android中的OpenWeatherMap api中更改描述语言

java - fragment 项目不会崩溃

java - Android中如何在广播接收器被触发之前启动服务?

android - 如何从相同的 Android 源代码创建两个不同的应用程序

android - 如何更改 Vuforia AR 相机对焦模式?

python - 如何保存通过camera.capture_continuous(格式rgb)读取的图像并将其保存到文件中

rust - 您如何正确实现 View 矩阵?