本讲是Android Camera Native Framework专题的第34讲,我们介绍Camera Native FW的clientPackageName和 AppOpsManager逻辑
更多资源:
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
clientPackageName 赋值逻辑
- Open camera时,上层会传递Client package name到CameraService
-
如果是Native Client,传递的package name为空字符串
-
connectHelper是API1和API2通用的逻辑
Log关键词: CameraService::connect call
AppOpsManager 处理逻辑
AppOpsManager是一个应用程序执行某个操作权限的管理类,有两个目的
- 运行时的访问权限控制
-
运行时的访问权限跟踪
- 针对MODE_ERRORED和MODE_IGNORED两种Mode做了处理
-
如果是Client是native service,则会返回MODE_IGNORED
-
如果Camera Privacy Enabled,这里趋向于继续让Open Camera正常执行(不返回-EACCES),后续做mute动作
- 针对MODE_ERRORED、MODE_ALLOWED和MODE_IGNORED三种Mode做了处理
-
Block camera是会直接关闭Camera,mute camera是输出test pattern的图像