Android 14 版本 TelephonyComponentFactory 技术点详解

本文详细介绍了Android 14中TelephonyComponentFactory的工作原理,如何通过工厂模式允许OEM厂商定制Telephony功能,以及如何进行增量开发。重点讨论了生产流程、技术细节,包括XML配置解析和组件创建,强调了这一特性对于提升产品竞争力和可靠性的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

各个OEM厂商定制各自Telephony功能的集成方法

TelephonyComponentFactory生产流程

技术细节

小结

各个OEM厂商定制各自Telephony功能的集成方法

  此要点,优快云没有详细介绍。主要使用设计模式中的“工厂模式”用于创建GsmCdmaPhone使用到的各个子对象,如下:

frameworks/opt/telephony/src/java/com/android/internal/telephony/GsmCdmaPhone.java

public GsmCdmaPhone(Context context, CommandsInterface ci, PhoneNotifier notifier,
              boolean unitTestMode, int phoneId, int precisePhoneType,
              TelephonyComponentFactory telephonyComponentFactory,
              ImsManagerFactory imsManagerFactory) {
...
......
//生产厂商自己的CarrierActionAgent
      mCarrierActionAgent = mTelephonyComponentFactory.inject(CarrierActionAgent.class.getName())
        .makeCarrierActionAgent(this);

//生产厂商自己的CarrierSignalAgent
mCarrierSignalAgent = mTelephonyComponentFactory.inject(CarrierSignalAgent.class.getName())
        .makeCarrierSignalAgent(this);

//生产厂商自己的AccessNetworksManager
mAccessNetworksManager = mTelephonyComponentFactory
        .inject(AccessNetworksManager.class.getName())
        .makeAccessNetworksManager(this, getLooper());

//生产厂商自己的SignalStrengthController
mSignalStrengthController = mTelephonyComponentFactory.inject(
        SignalStrengthController.class.getName()).makeSignalStrengthController(this);

//生产厂商自己的ServiceStateTracker
mSST = mTelephonyComponentFactory.inject(ServiceStateTracker.class.getName())
        .makeServiceStateTracker(this, this.mCi);

mEmergencyNumberTracker = mTelephonyComponentFactory
        .inject(EmergencyNumberTracker.class.getName()).makeEmergencyNumberTracker(
                this, this.mCi);

//生产厂商自己的DeviceStateMonitor
mDeviceStateMonitor = mTelephonyComponentFactory.inject(DeviceStateMonitor.class.getName())
        .makeDeviceStateMonitor(this);

// DisplayInfoController creates an OverrideNetworkTypeController, which uses
// DeviceStateMonitor so needs to be crated after it is instantiated.

mDisplayInfoController = mTelephonyComponentFactory.inject(
        DisplayInfoController.class.getName()).makeDisplayInfoController(this);

//生产厂商自己的DataNetworkController
//14彻底删除老版本的数据栈DcTracker,后续DataNetworkController的解析
mDataNetworkController = mTelephonyComponentFactory.inject(
        DataNetworkController.class.getName())
        .makeDataNetworkController(this, getLooper());

mCarrierResolver = mTelephonyComponentFactory.inject(CarrierResolver.class.getName())
        .makeCarrierResolver(this);
...
...
}

 卖关子:这里并没有直接new一个对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值