android12-release
CameraService启动-Android12
CameraProvider进程-Android12
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();
}
// ... ...
}
onStart()
publishBinderService(CAMERA_SERVICE_PROXY_BINDER_NAME, mCameraServiceProxy)
添加服务到Binder IPC
(Binder系列3-framework层)publishLocalService(CameraServiceProxy.class, this)
添加到LocalServicespublic 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);
}
CameraServiceProxy.java中getCameraServiceRawLocked()通过Binder IPC获取
CameraServiceProxyWrapper::pingCameraServiceProxy()
方法Binder IPC通信连接CameraServiceProxy