Android12 QR默认打开前摄像头

在开机向导界面连续点击几次屏幕启动QR打开摄像头,默认是打开后摄像头。如果机器只有一个前摄像头,判断扫码应用时,需要把camera的facing信息上报为BACK。修改如下:

frameworks/base

diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java                                                     
index 6ba77cd..e0e6914 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -116,6 +116,7 @@ import android.util.ArraySet;
 import android.util.DebugUtils;
 import android.util.Pools.SynchronizedPool;
 import android.util.Slog;
+import android.os.SystemProperties;
 import android.window.RemoteTransition;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -867,6 +868,8 @@ class ActivityStarter {
         if (err == ActivityManager.START_SUCCESS) {
             Slog.i(TAG, "START u" + userId + " {" + intent.toShortString(true, true, true, false)
                     + "} from uid " + callingUid);
+           SystemProperties.set("sys.camera.callprocess", intent.getComponent().getPackageName());
+           Slog.i("Camera", "callprocess:" + intent.getComponent().getPackageName());
         }   
 
         ActivityRecord sourceRecord = null;

frameworks/av

diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp                                                                           
index c91f962..433fd74 100755
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -107,6 +107,7 @@ volatile int32_t gLogLevel = 0;
 
 #define LOG1(...) ALOGD_IF(gLogLevel >= 1, __VA_ARGS__);
 #define LOG2(...) ALOGD_IF(gLogLevel >= 2, __VA_ARGS__);
+#define CONFIG_CAMERA_BACK_APK  "<com.google.android.setupwizard>"
 
 static void setLogLevel(int level) {
     android_atomic_write(level, &gLogLevel);
@@ -725,7 +726,16 @@ Status CameraService::getCameraInfo(int cameraId,
                 strerror(-err), err);
         logServiceError(String8::format("Error retrieving camera info from device %d",cameraId),
             ERROR_INVALID_OPERATION);
-    }
+    } else {
+       char value[PROPERTY_VALUE_MAX];
+       property_get("sys.camera.callprocess", value, "none");
+       ALOGE("getCameraInfo camera callprocess:%s", value);
+       if (strstr(CONFIG_CAMERA_BACK_APK, value)) {
+           if (mNumberOfCameras == 1) {
+               cameraInfo->facing = CAMERA_FACING_BACK;
+           }
+       }
+   }
 
     return ret;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值