This article is based on android11
an audio service
android源码frameworks/base/services/java/com/android/server/SystemServer.java,
Ordinary client or server must use it after obtaining the proxy object of servicemanger. For the server, it is mainly to call addService and register with serivceManager. The client queries the required server information through the serivcemanager, and then obtains the proxy object of the server.
Focus on ServiceManager.addService and mSystemServiceManager.startService
// Create the system service manager.
mSystemServiceManager = new SystemServiceManager(mSystemContext);
mSystemServiceManager.setStartInfo(mRuntimeRestart,
mRuntimeStartElapsedTime, mRuntimeStartUptime);
LocalServices.addService(SystemServiceManager.class, mSystemServiceManager);
// Start services.
startBootstrapServices();
startCoreServices();
startOtherServices();
ServiceManager.addService(Context.PLATFORM_COMPAT_SERVICE, platformCompat); in startBootstrapServices()
ServiceManager.addService(Context.PLATFORM_COMPAT_NATIVE_SERVICE, in startBootstrapServices()
ServiceManager.addService("sec_key_att_app_id_provider", in startOtherServices()
ServiceManager.addService("scheduling_policy", new SchedulingPolicyService()); in startOtherServices()
ServiceManager.addService("telephony.registry", telephonyRegistry); in startOtherServices()
ServiceManager.addService(Context.TBOX_SERVICE, new TboxService()); in startOtherServices()
ServiceManager.addService(Context.XCALL_SERVICE, new TboxXCallService()); in startOtherServices()
ServiceManager.addService("vibrator", vibrator); in startOtherServices()
ServiceManager.addService("dynamic_system", dynamicSystem); in startOtherServices()
ServiceManager.addService(Context.CONSUMER_IR_SERVICE, consumerIr); in startOtherServices()
ServiceManager.addService(Context.WINDOW_SERVICE, wm, /* allowIsolated= */ false, in startOtherServices()
ServiceManager.addService(Context.INPUT_SERVICE, inputManager, in startOtherServices()
ServiceManager.addService(Context.STATUS_BAR_SERVICE, statusBar); in startOtherServices()
ServiceManager.addService(Context.NETWORKMANAGEMENT_SERVICE, networkManagement); in startOtherServices()
ServiceManager.addService(Context.IPSEC_SERVICE, ipSecService); in startOtherServices()
ServiceManager.addService(Context.NETWORK_STATS_SERVICE, networkStats); in startOtherServices()
ServiceManager.addService(Context.NETWORK_POLICY_SERVICE, networkPolicy); in startOtherServices()
ServiceManager.addService(Context.CONNECTIVITY_SERVICE, connectivity, in startOtherServices()
ServiceManager.addService( in startOtherServices()
ServiceManager.addService(Context.SYSTEM_UPDATE_SERVICE, in startOtherServices()
ServiceManager.addService(Context.UPDATE_LOCK_SERVICE, in startOtherServices()
ServiceManager.addService(Context.COUNTRY_DETECTOR, countryDetector); in startOtherServices()
ServiceManager.addService(Context.SERIAL_SERVICE, serial); in startOtherServices()
ServiceManager.addService(Context.HARDWARE_PROPERTIES_SERVICE, in startOtherServices()
ServiceManager.addService("diskstats", new DiskStatsService(context)); in startOtherServices()
ServiceManager.addService("runtime", new RuntimeService(context)); in startOtherServices()
ServiceManager.addService("network_time_update_service", networkTimeUpdater); in startOtherServices()
ServiceManager.addService(GraphicsStatsService.GRAPHICS_STATS_SERVICE, in startOtherServices()
ServiceManager.addService(CoverageService.COVERAGE_SERVICE, new CoverageService()); in startOtherServices()
ServiceManager.addService(Context.MEDIA_ROUTER_SERVICE, mediaRouter); in startOtherServices()
ServiceManager.addService(Context.TETHERING_SERVICE, service, in startOtherServices()
mSystemServiceManager.startService(FileIntegrityService.class); in startBootstrapServices()
Installer installer = mSystemServiceManager.startService(Installer.class); in startBootstrapServices()
mSystemServiceManager.startService(DeviceIdentifiersPolicyService.class); in startBootstrapServices()
mSystemServiceManager.startService(UriGrantsManagerService.Lifecycle.class); in startBootstrapServices()
ActivityTaskManagerService atm = mSystemServiceManager.startService( in startBootstrapServices()
mActivityManagerService = ActivityManagerService.Lifecycle.startService( in startBootstrapServices()
mDataLoaderManagerService = mSystemServiceManager.startService( in startBootstrapServices()
mPowerManagerService = mSystemServiceManager.startService(PowerManagerService.class); in startBootstrapServices()
mSystemServiceManager.startService(ThermalManagerService.class); in startBootstrapServices()
mSystemServiceManager.startService(RecoverySystemService.Lifecycle.class); in startBootstrapServices()
mSystemServiceManager.startService(LightsService.class); in startBootstrapServices()
mSystemServiceManager.startService(WEAR_SIDEKICK_SERVICE_CLASS); in startBootstrapServices()
mDisplayManagerService = mSystemServiceManager.startService(DisplayManagerService.class); in startBootstrapServices()
mSystemServiceManager.startService(UserManagerService.LifeCycle.class); in startBootstrapServices()
mSystemServiceManager.startService(new OverlayManagerService(mSystemContext)); in startBootstrapServices()
mSystemServiceManager.startService(new SensorPrivacyService(mSystemContext)); in startBootstrapServices()
mSystemServiceManager.startService(SystemConfigService.class); in startCoreServices()
mSystemServiceManager.startService(BatteryService.class); in startCoreServices()
mSystemServiceManager.startService(UsageStatsService.class); in startCoreServices()
mWebViewUpdateService = mSystemServiceManager.startService(WebViewUpdateService.class); in startCoreServices()
mSystemServiceManager.startService(CachedDeviceStateService.class); in startCoreServices()
mSystemServiceManager.startService(BinderCallsStatsService.LifeCycle.class); in startCoreServices()
mSystemServiceManager.startService(LooperStatsService.Lifecycle.class); in startCoreServices()
mSystemServiceManager.startService(ROLLBACK_MANAGER_SERVICE_CLASS); in startCoreServices()
mSystemServiceManager.startService(BugreportManagerService.class); in startCoreServices()
mSystemServiceManager.startService(GpuService.class); in startCoreServices()
mSystemServiceManager.startService(KeyChainSystemService.class); in startOtherServices()
mSystemServiceManager.startService(TelecomLoaderService.class); in startOtherServices()
mSystemServiceManager.startService(ACCOUNT_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(CONTENT_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(DropBoxManagerService.class); in startOtherServices()
mSystemServiceManager.startService(new AlarmManagerService(context)); in startOtherServices()
mSystemServiceManager.startService(VrManagerService.class); in startOtherServices()
mSystemServiceManager.startService(BluetoothService.class); in startOtherServices()
mSystemServiceManager.startService(IpConnectivityMetrics.class); in startOtherServices()
mSystemServiceManager.startService(NetworkWatchlistService.Lifecycle.class); in startOtherServices()
mSystemServiceManager.startService(PinnerService.class); in startOtherServices()
mSystemServiceManager.startService(IorapForwardingService.class); in startOtherServices()
mSystemServiceManager.startService(AppIntegrityManagerService.class); in startOtherServices()
mSystemServiceManager.startService( in startOtherServices()
mSystemServiceManager.startService(InputMethodManagerService.Lifecycle.class); in startOtherServices()
mSystemServiceManager.startService(ACCESSIBILITY_MANAGER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(STORAGE_MANAGER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(STORAGE_STATS_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(UiModeManagerService.class); in startOtherServices()
mSystemServiceManager.startService(LOCK_SETTINGS_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(PersistentDataBlockService.class); in startOtherServices()
mSystemServiceManager.startService(TestHarnessModeService.class); in startOtherServices()
mSystemServiceManager.startService(OemLockService.class); in startOtherServices()
mSystemServiceManager.startService(DEVICE_IDLE_CONTROLLER_CLASS); in startOtherServices()
mSystemServiceManager.startService(DevicePolicyManagerService.Lifecycle.class); in startOtherServices()
mSystemServiceManager.startService(APP_PREDICTION_MANAGER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(CONTENT_SUGGESTIONS_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(TextServicesManagerService.Lifecycle.class); in startOtherServices()
startService(TextClassificationManagerService.Lifecycle.class); in startOtherServices()
mSystemServiceManager.startService(NetworkScoreService.Lifecycle.class); in startOtherServices()
mSystemServiceManager.startService(LOWPAN_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(ETHERNET_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(NotificationManagerService.class); in startOtherServices()
mSystemServiceManager.startService(DeviceStorageMonitorService.class); in startOtherServices()
mSystemServiceManager.startService(LocationManagerService.Lifecycle.class); in startOtherServices()
mSystemServiceManager.startService(TIME_DETECTOR_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(TIME_ZONE_DETECTOR_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(SEARCH_MANAGER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(WALLPAPER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(AudioService.Lifecycle.class); in startOtherServices()
mSystemServiceManager.startService(className + "$Lifecycle"); in startOtherServices()
mSystemServiceManager.startService(SoundTriggerMiddlewareService.Lifecycle.class); in startOtherServices()
mSystemServiceManager.startService(BroadcastRadioService.class); in startOtherServices()
mSystemServiceManager.startService(DockObserver.class); in startOtherServices()
mSystemServiceManager.startService(THERMAL_OBSERVER_CLASS); in startOtherServices()
mSystemServiceManager.startService(MIDI_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(ADB_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(USB_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(TwilightService.class); in startOtherServices()
mSystemServiceManager.startService(ColorDisplayService.class); in startOtherServices()
mSystemServiceManager.startService(JOB_SCHEDULER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(SoundTriggerService.class); in startOtherServices()
mSystemServiceManager.startService(TrustManagerService.class); in startOtherServices()
mSystemServiceManager.startService(BACKUP_MANAGER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(APPWIDGET_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(new RoleManagerService( in startOtherServices()
mSystemServiceManager.startService(VOICE_RECOGNITION_MANAGER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(GestureLauncherService.class); in startOtherServices()
mSystemServiceManager.startService(SensorNotificationService.class); in startOtherServices()
mSystemServiceManager.startService(ContextHubSystemService.class); in startOtherServices()
mSystemServiceManager.startService(TIME_ZONE_RULES_MANAGER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(EmergencyAffordanceService.class); in startOtherServices()
mSystemServiceManager.startService(BLOB_STORE_MANAGER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(DreamManagerService.class); in startOtherServices()
mSystemServiceManager.startService(PRINT_MANAGER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(COMPANION_DEVICE_MANAGER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(RestrictionsManagerService.class); in startOtherServices()
mSystemServiceManager.startService(MediaSessionService.class); in startOtherServices()
mSystemServiceManager.startService(HdmiControlService.class); in startOtherServices()
mSystemServiceManager.startService(TvInputManagerService.class); in startOtherServices()
mSystemServiceManager.startService(TunerResourceManagerService.class); in startOtherServices()
mSystemServiceManager.startService(MediaResourceMonitorService.class); in startOtherServices()
mSystemServiceManager.startService(TvRemoteService.class); in startOtherServices()
mSystemServiceManager.startService(FaceService.class); in startOtherServices()
mSystemServiceManager.startService(IrisService.class); in startOtherServices()
mSystemServiceManager.startService(FingerprintService.class); in startOtherServices()
mSystemServiceManager.startService(BiometricService.class); in startOtherServices()
mSystemServiceManager.startService(AuthService.class); in startOtherServices()
mSystemServiceManager.startService(ShortcutService.Lifecycle.class); in startOtherServices()
mSystemServiceManager.startService(LauncherAppsService.class); in startOtherServices()
mSystemServiceManager.startService(CrossProfileAppsService.class); in startOtherServices()
mSystemServiceManager.startService(PeopleService.class); in startOtherServices()
mSystemServiceManager.startService(MediaProjectionManagerService.class); in startOtherServices()
mSystemServiceManager.startService(WEAR_POWER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(WEAR_CONNECTIVITY_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(WEAR_DISPLAY_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(WEAR_TIME_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(WEAR_LEFTY_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(WEAR_GLOBAL_ACTIONS_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(SLICE_MANAGER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(CameraServiceProxy.class); in startOtherServices()
mSystemServiceManager.startService(IOT_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(STATS_PULL_ATOM_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(IncidentCompanionService.class); in startOtherServices()
mmsService = mSystemServiceManager.startService(MmsServiceBroker.class); in startOtherServices()
mSystemServiceManager.startService(AUTO_FILL_MANAGER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(ClipboardService.class); in startOtherServices()
mSystemServiceManager.startService(AppBindingService.Lifecycle.class); in startOtherServices()
mSystemServiceManager.startService(PermissionPolicyService.class); in startOtherServices()
mSystemServiceManager.startService(className); in startOtherServices()
mSystemServiceManager.startService(CAR_SERVICE_HELPER_SERVICE_CLASS); in startOtherServices()
mSystemServiceManager.startService(QisiServiceHelperService.class); in startOtherServices()
mSystemServiceManager.startService(QisiSystemManagerService.class); in startOtherServices()
mSystemServiceManager.startService(SYSTEM_CAPTIONS_MANAGER_SERVICE_CLASS); in startSystemCaptionsManagerService()
mSystemServiceManager.startService(CONTENT_CAPTURE_MANAGER_SERVICE_CLASS); in startContentCaptureService()
mSystemServiceManager.startService(AttentionManagerService.class); in startAttentionService()
二 car audio service
framework java layer
public CarAudioManager(Car car, IBinder service) {
mService = ICarAudio.Stub.asInterface(service);}-----bp, call service
public class CarAudioService extends ICarAudio.Stub implements CarServiceBase ---bn provides services
public class AppFocusService extends IAppFocus.Stub implements CarServiceBase,BinderInterfaceContainer.BinderEventHandler<IAppFocusOwnershipCallback>
public class CarBluetoothService extends ICarBluetooth.Stub implements CarServiceBase
public class CarMediaService extends ICarMedia.Stub implements CarServiceBase
public final class CarUserService extends ICarUserService.Stub implements CarServiceBase
CarLocalServices.addService(CarFeatureController.class, mFeatureController); in ICarImpl()
CarLocalServices.addService(CarPowerManagementService.class, mCarPowerManagementService); in ICarImpl()
CarLocalServices.addService(CarPropertyService.class, mCarPropertyService); in ICarImpl()
CarLocalServices.addService(CarUserService.class, mCarUserService); in ICarImpl()
CarLocalServices.addService(CarTrustedDeviceService.class, mCarTrustedDeviceService);
CarLocalServices.addService(CarUserNoticeService.class, mCarUserNoticeService);
CarLocalServices.addService(SystemInterface.class, mSystemInterface); in ICarImpl()
CarLocalServices.addService(CarDrivingStateService.class, mCarDrivingStateService);
CarLocalServices.addService(PerUserCarServiceHelper.class, mPerUserCarServiceHelper);
CarLocalServices.addService(FixedActivityService.class, mFixedActivityService);
CarLocalServices.addService(VmsBrokerService.class, mVmsBrokerService); in ICarImpl()
CarLocalServices.addService(CarOccupantZoneService.class, mCarOccupantZoneService);
CarLocalServices.addService(AppFocusService.class, mAppFocusService); in ICarImpl()
framework native layer
/frameworks/av/media/libaudioclient/IAudioFlinger.cpp
class BpAudioFlingerClient : public BpInterface<IAudioFlingerClient>
class BpAudioFlinger : public BpInterface<IAudioFlinger>-----bp
class AudioFlinger :public BinderService<AudioFlinger>,public BnAudioFlinger---bn
class AudioPolicyService :public BinderService<AudioPolicyService>,
public BnAudioPolicyService,public IBinder::DeathRecipient
class CameraService :public BinderService<CameraService>,
public virtual ::android::hardware::BnCameraService,
public virtual IBinder::DeathRecipient,public virtual CameraProviderManager::StatusListener
class MediaExtractorService : public BinderService<MediaExtractorService>, public BnMediaExtractorService
class MediaLogService : public BinderService<MediaLogService>, public BnMediaLogService
class AAudioService :public BinderService<AAudioService>,public BnAAudioService,
public aaudio::AAudioServiceInterface
class NetdNativeService : public BinderService<NetdNativeService>, public BnNetd
class VRAudioServiceNative :public BinderService<VRAudioServiceNative>,
public BnVRAudioService