前言
在默认情况下,调用Google接口CameraManager.getCameraIdList()会返回所有的物理相机以及逻辑相机id。加上辅摄白名单后,framework代码会按照包名对比白名单中的条目,若不在白名单中,会限制该apk获取除前后主摄之外的其他相机。所以,对于想使用辅摄的application,比如snapdragon camera、mmi等,都需要将对应的包名加入到白名单中。
一、验证AUX Camera White List Code
snapdragon APP调用到camera framework,通过验证APP是否在whitelist中,获取所能使用的camera ID。
camera manager globel file, extractCameraIdListLocked function中对aux camera white list对比:
• currentOpPackageName 在 ActivityThread中获取创建出activity的application本身
• 获取vendor.camera.aux.packagelist值
• Split packlist with“,”org.codeaurora.snapcam没有逗号所以并没有split
• 如果package name 和package list 能够equal,获取出所有camera 加入到camera ID list中返回到opencamera 如果not equal,只能获取camera 0 and 1,并且return