CameraServiceProxy启动-Android12

发布时间:2023-12-27 05:08:38

CameraServiceProxy启动-Android12

android12-release
CameraService启动-Android12
CameraProvider进程-Android12


1. 在SystemServer的startOtherServices中启动

  • mSystemServiceManager.startService(CameraServiceProxy.class)先调用CameraServiceProxy构造方法constructor.newInstance(mContext),在调用CameraServiceProxy的service.onStart()方法
  • class CameraServiceProxy extends SystemService

frameworks/base/services/java/com/android/server/SystemServer.java

private void startOtherServices(@NonNull TimingsTraceAndSlog t) {
    t.traceBegin("startOtherServices");
    // ... ...
    boolean disableCameraService = SystemProperties.getBoolean("config.disable_cameraservice",
            false);
	// ... ...
        if (!disableCameraService) {
            t.traceBegin("StartCameraServiceProxy");
            mSystemServiceManager.startService(CameraServiceProxy.class);
            t.traceEnd();
        }
	// ... ...
}

2. CameraServiceProxy初始化并调用onStart()

  • publishBinderService(CAMERA_SERVICE_PROXY_BINDER_NAME, mCameraServiceProxy)添加服务到Binder IPC(Binder系列3-framework层)
  • publishLocalService(CameraServiceProxy.class, this)添加到LocalServices
public void onStart() {
    mUserManager = UserManager.get(mContext);
    if (mUserManager == null) {
        // Should never see this unless someone messes up the SystemServer service boot order.
        throw new IllegalStateException("UserManagerService must start before" +
                " CameraServiceProxy!");
    }

    IntentFilter filter = new IntentFilter();
    filter.addAction(Intent.ACTION_USER_ADDED);
    filter.addAction(Intent.ACTION_USER_REMOVED);
    filter.addAction(Intent.ACTION_USER_INFO_CHANGED);
    filter.addAction(Intent.ACTION_MANAGED_PROFILE_ADDED);
    filter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED);
    mContext.registerReceiver(mIntentReceiver, filter);

    publishBinderService(CAMERA_SERVICE_PROXY_BINDER_NAME, mCameraServiceProxy);
    publishLocalService(CameraServiceProxy.class, this);
}

3. 连接CameraService进程

CameraServiceProxy.java中getCameraServiceRawLocked()通过Binder IPC获取


在这里插入图片描述

4. 简要时序图

在这里插入图片描述

文章来源:https://xhbruce.blog.csdn.net/article/details/126314219
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。