增加android 禁用相机后摄的接口

调试没什么的,就是被自己挖矿了,代码写的是persist.sys.camera.disabled ,测试的时候用的是 persist.sys.camera.back.disabled 。。。。。

复制代码
+++ b/frameworks/av/services/camera/libcameraservice/CameraService.cpp
@@ -1207,6 +1207,22 @@ Status CameraService::validateClientPermissionsLocked(const String8& cameraId,
     return Status::ok();
 }
 
+       bool CameraService::isCameraDisabled(const android::String8& cameraId) const {
+    // 读取 persist.sys.camera.disabled 的值
+    char value[PROPERTY_VALUE_MAX];
+    property_get("persist.sys.camera.disabled", value, "0");
+    bool disabled = (atoi(value) == 1);
+   //  ALOGE("Camera %s  ..1223 ...is isCameraDisabled: %d", cameraId.string(), disabled);
+    // 仅当 Camera ID 为 "0"(后摄)时禁用
+    if (disabled && cameraId == "0") {
+       //              ALOGE("Camera %s is  1225 disabled by persist.sys.camera.disabled", cameraId.string());
+        return true;
+    }
+    return false;
+}
+
+
+

@@ -1621,6 +1642,14 @@ Status CameraService::connectHelper(const sp<CALLBACK>& cameraCb, const String8&
 
     int originalClientPid = 0;
 
+   // bool isDisabled = isCameraDisabled(cameraId);
+   // ALOGE("Camera %s  ..1654 is isCameraDisabled: %d", cameraId.string(), isDisabled);
+       if (isCameraDisabled(cameraId)) {
+                //   ALOGE("Camera %s is disabled 1652 by system property", cameraId.string());
+                       // 返回设备不可用错误(或自定义错误码)
+                       return STATUS_ERROR_FMT(ERROR_DISABLED, "Camera %s is disabled", cameraId.string());
+               }
+
     ALOGI("CameraService::connect call (PID %d \"%s\", camera ID %s) for HAL version %s and "
             "Camera API version %d", clientPid, clientName8.string(), cameraId.string(),
             (halVersion == -1) ? "default" : std::to_string(halVersion).c_str(),
diff --git a/frameworks/av/services/camera/libcameraservice/CameraService.h b/frameworks/av/services/camera/libcameraservice/CameraService.h
@@ -100,6 +100,9 @@ public:
                         CameraService();
     virtual             ~CameraService();
 
+       bool isCameraDisabled(const android::String8& cameraId) const;
+
+
相关推荐
冬奇Lab4 小时前
PowerManagerService(下):Doze模式与电池优化
android·源码阅读
砖厂小工6 小时前
Compose 中函数引用 vs Lambda:到底该用哪个?
android
Kapaseker16 小时前
详解 Compose background 的重组陷阱
android·kotlin
黄林晴16 小时前
Kotlin 2.3.20-RC2 来了!JPA 开发者狂喜,6 大更新一文速览
android·kotlin
kymjs张涛1 天前
OpenClaw 学习小组:初识
android·linux·人工智能
范特西林1 天前
实战演练——从零实现一个高性能 Binder 服务
android
范特西林1 天前
代码的生成:AIDL 编译器与 Parcel 的序列化艺术
android
范特西林1 天前
深入内核:Binder 驱动的内存管理与事务调度
android
范特西林1 天前
解剖麻雀:Binder 通信的整体架构全景图
android
范特西林1 天前
破冰之旅:为什么 Android 选择了 Binder?
android